mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #8503 from janlazo/vim-8.0.0549
This commit is contained in:
commit
f389fea8fa
@ -3769,14 +3769,17 @@ find_decl (
|
|||||||
t = false; /* match after start is failure too */
|
t = false; /* match after start is failure too */
|
||||||
|
|
||||||
if (thisblock && t != false) {
|
if (thisblock && t != false) {
|
||||||
pos_T *pos;
|
const int64_t maxtravel = old_pos.lnum - curwin->w_cursor.lnum + 1;
|
||||||
|
const pos_T *pos = findmatchlimit(NULL, '}', FM_FORWARD, maxtravel);
|
||||||
|
|
||||||
/* Check that the block the match is in doesn't end before the
|
// Check that the block the match is in doesn't end before the
|
||||||
* position where we started the search from. */
|
// position where we started the search from.
|
||||||
if ((pos = findmatchlimit(NULL, '}', FM_FORWARD,
|
if (pos != NULL && pos->lnum < old_pos.lnum) {
|
||||||
(int)(old_pos.lnum - curwin->w_cursor.lnum + 1))) != NULL
|
// There can't be a useful match before the end of this block.
|
||||||
&& pos->lnum < old_pos.lnum)
|
// Skip to the end
|
||||||
|
curwin->w_cursor = *pos;
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t == false) {
|
if (t == false) {
|
||||||
@ -6895,7 +6898,7 @@ static void nv_g_cmd(cmdarg_T *cap)
|
|||||||
else
|
else
|
||||||
show_utf8();
|
show_utf8();
|
||||||
break;
|
break;
|
||||||
|
// "g<": show scrollback text
|
||||||
case '<':
|
case '<':
|
||||||
show_sb_text();
|
show_sb_text();
|
||||||
break;
|
break;
|
||||||
|
@ -288,3 +288,24 @@ func Test_cursorline_keep_col()
|
|||||||
set nocursorline
|
set nocursorline
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_gd_local_block()
|
||||||
|
let lines = [
|
||||||
|
\ ' int main()',
|
||||||
|
\ '{',
|
||||||
|
\ ' char *a = "NOT NULL";',
|
||||||
|
\ ' if(a)',
|
||||||
|
\ ' {',
|
||||||
|
\ ' char *b = a;',
|
||||||
|
\ ' printf("%s\n", b);',
|
||||||
|
\ ' }',
|
||||||
|
\ ' else',
|
||||||
|
\ ' {',
|
||||||
|
\ ' char *b = "NULL";',
|
||||||
|
\ ' return b;',
|
||||||
|
\ ' }',
|
||||||
|
\ '',
|
||||||
|
\ ' return 0;',
|
||||||
|
\ '}',
|
||||||
|
\ ]
|
||||||
|
call XTest_goto_decl('1gd', lines, 11, 11)
|
||||||
|
endfunc
|
||||||
|
@ -847,7 +847,7 @@ func! Test_normal18_z_fold()
|
|||||||
norm! j
|
norm! j
|
||||||
call assert_equal('52', getline('.'))
|
call assert_equal('52', getline('.'))
|
||||||
|
|
||||||
" zA on a opened fold when foldenale is not set
|
" zA on a opened fold when foldenable is not set
|
||||||
50
|
50
|
||||||
set nofoldenable
|
set nofoldenable
|
||||||
norm! zA
|
norm! zA
|
||||||
@ -909,7 +909,7 @@ func! Test_normal18_z_fold()
|
|||||||
norm! j
|
norm! j
|
||||||
call assert_equal('55', getline('.'))
|
call assert_equal('55', getline('.'))
|
||||||
|
|
||||||
" 2) do not close fold under curser
|
" 2) do not close fold under cursor
|
||||||
51
|
51
|
||||||
set nofoldenable
|
set nofoldenable
|
||||||
norm! zx
|
norm! zx
|
||||||
@ -1829,18 +1829,60 @@ fun! Test_normal34_g_cmd3()
|
|||||||
if !has("multi_byte")
|
if !has("multi_byte")
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Test for g8
|
" Test for g8
|
||||||
new
|
new
|
||||||
call append(0, 'abcdefghijklmnopqrstuvwxyzäüö')
|
let a=execute(':norm! 1G0g8')
|
||||||
let a=execute(':norm! 1gg$g8')
|
call assert_equal("\nNUL", a)
|
||||||
call assert_equal('c3 b6 ', a[1:])
|
|
||||||
|
call setline(1, 'abcdefghijklmnopqrstuvwxyzäüö')
|
||||||
|
let a=execute(':norm! 1G$g8')
|
||||||
|
call assert_equal("\nc3 b6 ", a)
|
||||||
|
|
||||||
|
call setline(1, "a\u0302")
|
||||||
|
let a=execute(':norm! 1G0g8')
|
||||||
|
call assert_equal("\n61 + cc 82 ", a)
|
||||||
|
|
||||||
" Test for gp gP
|
|
||||||
call append(1, range(1,10))
|
|
||||||
" clean up
|
" clean up
|
||||||
bw!
|
bw!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_normal_8g8()
|
||||||
|
if !has("multi_byte")
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
new
|
||||||
|
|
||||||
|
" Test 8g8 which finds invalid utf8 at or after the cursor.
|
||||||
|
|
||||||
|
" With invalid byte.
|
||||||
|
call setline(1, "___\xff___")
|
||||||
|
norm! 1G08g8g
|
||||||
|
call assert_equal([0, 1, 4, 0, 1], getcurpos())
|
||||||
|
|
||||||
|
" With invalid byte before the cursor.
|
||||||
|
call setline(1, "___\xff___")
|
||||||
|
norm! 1G$h8g8g
|
||||||
|
call assert_equal([0, 1, 6, 0, 9], getcurpos())
|
||||||
|
|
||||||
|
" With truncated sequence.
|
||||||
|
call setline(1, "___\xE2\x82___")
|
||||||
|
norm! 1G08g8g
|
||||||
|
call assert_equal([0, 1, 4, 0, 1], getcurpos())
|
||||||
|
|
||||||
|
" With overlong sequence.
|
||||||
|
call setline(1, "___\xF0\x82\x82\xAC___")
|
||||||
|
norm! 1G08g8g
|
||||||
|
call assert_equal([0, 1, 4, 0, 1], getcurpos())
|
||||||
|
|
||||||
|
" With valid utf8.
|
||||||
|
call setline(1, "café")
|
||||||
|
norm! 1G08g8
|
||||||
|
call assert_equal([0, 1, 1, 0, 1], getcurpos())
|
||||||
|
|
||||||
|
bw!
|
||||||
|
endfunc
|
||||||
|
|
||||||
fun! Test_normal35_g_cmd4()
|
fun! Test_normal35_g_cmd4()
|
||||||
" Test for g<
|
" Test for g<
|
||||||
" Cannot capture its output,
|
" Cannot capture its output,
|
||||||
|
Loading…
Reference in New Issue
Block a user