vim-patch:8.0.1787: cannot insert the whole cursor line

Problem:    Cannot insert the whole cursor line.
Solution:   Make CTRL-R CTRL-L work. (Andy Massimino, closes vim/vim#2857)
e2c8d83926
This commit is contained in:
Jan Edmund Lazo 2018-08-16 21:25:33 -04:00
parent 68cd18eb04
commit 015df9c66e
4 changed files with 18 additions and 3 deletions

View File

@ -163,12 +163,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-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-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-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: Insert the object under the cursor:
CTRL-F the Filename under the cursor CTRL-F the Filename under the cursor
CTRL-P the Filename under the cursor, expanded with CTRL-P the Filename under the cursor, expanded with
'path' as in |gf| 'path' as in |gf|
CTRL-W the Word under the cursor CTRL-W the Word under the cursor
CTRL-A the WORD under the cursor; see |WORD| 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 When 'incsearch' is set the cursor position at the end of the
currently displayed match is used. With CTRL-W the part of currently displayed match is used. With CTRL-W the part of
@ -176,8 +178,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-R* *c_<C-R>_<C-R>*
*c_CTRL-R_CTRL-O* *c_<C-R>_<C-O>* *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-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-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 Insert register or object under the cursor. Works like
|c_CTRL-R| but inserts the text literally. For example, if |c_CTRL-R| but inserts the text literally. For example, if
register a contains "xy^Hz" (where ^H is a backspace), register a contains "xy^Hz" (where ^H is a backspace),

View File

@ -3295,8 +3295,10 @@ static bool cmdline_paste(int regname, bool literally, bool remcr)
/* check for valid regname; also accept special characters for CTRL-R in /* check for valid regname; also accept special characters for CTRL-R in
* the command line */ * the command line */
if (regname != Ctrl_F && regname != Ctrl_P && regname != Ctrl_W 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; return FAIL;
}
/* A register containing CTRL-R can cause an endless loop. Allow using /* A register containing CTRL-R can cause an endless loop. Allow using
* CTRL-C to break the loop. */ * CTRL-C to break the loop. */

View File

@ -1257,6 +1257,14 @@ int get_spec_reg(
*allocated = TRUE; *allocated = TRUE;
return 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 */ case '_': /* black hole: always empty */
*argp = (char_u *)""; *argp = (char_u *)"";
return TRUE; return TRUE;

View File

@ -321,6 +321,9 @@ func Test_paste_in_cmdline()
call feedkeys("ft:aaa \<C-R>\<C-F> bbb\<C-B>\"\<CR>", 'tx') call feedkeys("ft:aaa \<C-R>\<C-F> bbb\<C-B>\"\<CR>", 'tx')
call assert_equal('"aaa /tmp/some bbb', @:) 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 set incsearch
call feedkeys("fy:aaa veryl\<C-R>\<C-W> bbb\<C-B>\"\<CR>", 'tx') call feedkeys("fy:aaa veryl\<C-R>\<C-W> bbb\<C-B>\"\<CR>", 'tx')
call assert_equal('"aaa verylongword bbb', @:) call assert_equal('"aaa verylongword bbb', @:)