Merge #8503 from janlazo/vim-8.0.0549

This commit is contained in:
Justin M. Keyes 2018-06-20 00:54:25 +02:00 committed by GitHub
commit f389fea8fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 80 additions and 14 deletions

View File

@ -3769,14 +3769,17 @@ find_decl (
t = false; /* match after start is failure too */
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
* position where we started the search from. */
if ((pos = findmatchlimit(NULL, '}', FM_FORWARD,
(int)(old_pos.lnum - curwin->w_cursor.lnum + 1))) != NULL
&& pos->lnum < old_pos.lnum)
// Check that the block the match is in doesn't end before the
// position where we started the search from.
if (pos != NULL && pos->lnum < old_pos.lnum) {
// There can't be a useful match before the end of this block.
// Skip to the end
curwin->w_cursor = *pos;
continue;
}
}
if (t == false) {
@ -6895,7 +6898,7 @@ static void nv_g_cmd(cmdarg_T *cap)
else
show_utf8();
break;
// "g<": show scrollback text
case '<':
show_sb_text();
break;

View File

@ -288,3 +288,24 @@ func Test_cursorline_keep_col()
set nocursorline
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

View File

@ -847,7 +847,7 @@ func! Test_normal18_z_fold()
norm! j
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
set nofoldenable
norm! zA
@ -909,7 +909,7 @@ func! Test_normal18_z_fold()
norm! j
call assert_equal('55', getline('.'))
" 2) do not close fold under curser
" 2) do not close fold under cursor
51
set nofoldenable
norm! zx
@ -1829,18 +1829,60 @@ fun! Test_normal34_g_cmd3()
if !has("multi_byte")
return
endif
" Test for g8
new
call append(0, 'abcdefghijklmnopqrstuvwxyzäüö')
let a=execute(':norm! 1gg$g8')
call assert_equal('c3 b6 ', a[1:])
let a=execute(':norm! 1G0g8')
call assert_equal("\nNUL", a)
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
bw!
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()
" Test for g<
" Cannot capture its output,