Merge branch 'master' of https://github.com/neovim/neovim into vim-8.0.0101

fix Conflicts
This commit is contained in:
ckelsel
2017-09-27 19:21:40 +08:00
51 changed files with 656 additions and 196 deletions

View File

@@ -8810,11 +8810,12 @@ makeopens (
&& buf->b_fname != NULL && buf->b_fname != NULL
&& buf->b_p_bl) { && buf->b_p_bl) {
if (fprintf(fd, "badd +%" PRId64 " ", if (fprintf(fd, "badd +%" PRId64 " ",
buf->b_wininfo == NULL ? buf->b_wininfo == NULL
(int64_t)1L : ? (int64_t)1L
(int64_t)buf->b_wininfo->wi_fpos.lnum) < 0 : (int64_t)buf->b_wininfo->wi_fpos.lnum) < 0
|| ses_fname(fd, buf, &ssop_flags) == FAIL) || ses_fname(fd, buf, &ssop_flags, true) == FAIL) {
return FAIL; return FAIL;
}
} }
} }
@@ -8885,11 +8886,13 @@ makeopens (
&& !bt_nofile(wp->w_buffer) && !bt_nofile(wp->w_buffer)
) { ) {
if (fputs(need_tabnew ? "tabedit " : "edit ", fd) < 0 if (fputs(need_tabnew ? "tabedit " : "edit ", fd) < 0
|| ses_fname(fd, wp->w_buffer, &ssop_flags) == FAIL) || ses_fname(fd, wp->w_buffer, &ssop_flags, true) == FAIL) {
return FAIL; return FAIL;
need_tabnew = FALSE; }
if (!wp->w_arg_idx_invalid) need_tabnew = false;
if (!wp->w_arg_idx_invalid) {
edited_win = wp; edited_win = wp;
}
break; break;
} }
} }
@@ -8933,6 +8936,8 @@ makeopens (
// resized when moving between windows. // resized when moving between windows.
// Do this before restoring the view, so that the topline and the // Do this before restoring the view, so that the topline and the
// cursor can be set. This is done again below. // cursor can be set. This is done again below.
// winminheight and winminwidth need to be set to avoid an error if the
// user has set winheight or winwidth.
if (put_line(fd, "set winminheight=1 winminwidth=1 winheight=1 winwidth=1") if (put_line(fd, "set winminheight=1 winminwidth=1 winheight=1 winwidth=1")
== FAIL) { == FAIL) {
return FAIL; return FAIL;
@@ -9221,24 +9226,35 @@ put_view (
if (wp->w_buffer->b_ffname != NULL if (wp->w_buffer->b_ffname != NULL
&& (!bt_nofile(wp->w_buffer) || wp->w_buffer->terminal) && (!bt_nofile(wp->w_buffer) || wp->w_buffer->terminal)
) { ) {
/* // Editing a file in this buffer: use ":edit file".
* Editing a file in this buffer: use ":edit file". // This may have side effects! (e.g., compressed or network file).
* This may have side effects! (e.g., compressed or network file). //
*/ // Note, if a buffer for that file already exists, use :badd to
if (fputs("edit ", fd) < 0 // edit that buffer, to not lose folding information (:edit resets
|| ses_fname(fd, wp->w_buffer, flagp) == FAIL) // folds in other buffers)
if (fputs("if bufexists('", fd) < 0
|| ses_fname(fd, wp->w_buffer, flagp, false) == FAIL
|| fputs("') | buffer ", fd) < 0
|| ses_fname(fd, wp->w_buffer, flagp, false) == FAIL
|| fputs(" | else | edit ", fd) < 0
|| ses_fname(fd, wp->w_buffer, flagp, false) == FAIL
|| fputs(" | endif", fd) < 0
|| put_eol(fd) == FAIL) {
return FAIL; return FAIL;
} else {
/* No file in this buffer, just make it empty. */
if (put_line(fd, "enew") == FAIL)
return FAIL;
if (wp->w_buffer->b_ffname != NULL) {
/* The buffer does have a name, but it's not a file name. */
if (fputs("file ", fd) < 0
|| ses_fname(fd, wp->w_buffer, flagp) == FAIL)
return FAIL;
} }
do_cursor = FALSE; } else {
// No file in this buffer, just make it empty.
if (put_line(fd, "enew") == FAIL) {
return FAIL;
}
if (wp->w_buffer->b_ffname != NULL) {
// The buffer does have a name, but it's not a file name.
if (fputs("file ", fd) < 0
|| ses_fname(fd, wp->w_buffer, flagp, true) == FAIL) {
return FAIL;
}
}
do_cursor = false;
} }
} }
@@ -9389,12 +9405,10 @@ ses_arglist (
return OK; return OK;
} }
/* /// Write a buffer name to the session file.
* Write a buffer name to the session file. /// Also ends the line, if "add_eol" is true.
* Also ends the line. /// Returns FAIL if writing fails.
* Returns FAIL if writing fails. static int ses_fname(FILE *fd, buf_T *buf, unsigned *flagp, bool add_eol)
*/
static int ses_fname(FILE *fd, buf_T *buf, unsigned *flagp)
{ {
char_u *name; char_u *name;
@@ -9411,8 +9425,10 @@ static int ses_fname(FILE *fd, buf_T *buf, unsigned *flagp)
name = buf->b_sfname; name = buf->b_sfname;
else else
name = buf->b_ffname; name = buf->b_ffname;
if (ses_put_fname(fd, name, flagp) == FAIL || put_eol(fd) == FAIL) if (ses_put_fname(fd, name, flagp) == FAIL
|| (add_eol && put_eol(fd) == FAIL)) {
return FAIL; return FAIL;
}
return OK; return OK;
} }

View File

@@ -1146,8 +1146,9 @@ EXTERN char_u e_winheight[] INIT(= N_(
EXTERN char_u e_winwidth[] INIT(= N_( EXTERN char_u e_winwidth[] INIT(= N_(
"E592: 'winwidth' cannot be smaller than 'winminwidth'")); "E592: 'winwidth' cannot be smaller than 'winminwidth'"));
EXTERN char_u e_write[] INIT(= N_("E80: Error while writing")); EXTERN char_u e_write[] INIT(= N_("E80: Error while writing"));
EXTERN char_u e_zerocount[] INIT(= N_("Zero count")); EXTERN char_u e_zerocount[] INIT(= N_("E939: Positive count required"));
EXTERN char_u e_usingsid[] INIT(= N_("E81: Using <SID> not in a script context")); EXTERN char_u e_usingsid[] INIT(= N_(
"E81: Using <SID> not in a script context"));
EXTERN char_u e_intern2[] INIT(= N_("E685: Internal error: %s")); EXTERN char_u e_intern2[] INIT(= N_("E685: Internal error: %s"));
EXTERN char_u e_maxmempat[] INIT(= N_( EXTERN char_u e_maxmempat[] INIT(= N_(
"E363: pattern uses more memory than 'maxmempattern'")); "E363: pattern uses more memory than 'maxmempattern'"));

View File

@@ -3001,9 +3001,10 @@ did_set_string_option (
if (s[-1] == 'k' || s[-1] == 's') { if (s[-1] == 'k' || s[-1] == 's') {
/* skip optional filename after 'k' and 's' */ /* skip optional filename after 'k' and 's' */
while (*s && *s != ',' && *s != ' ') { while (*s && *s != ',' && *s != ' ') {
if (*s == '\\') if (*s == '\\' && s[1] != NUL) {
++s; s++;
++s; }
s++;
} }
} else { } else {
if (errbuf != NULL) { if (errbuf != NULL) {

View File

@@ -3557,11 +3557,15 @@ extend:
--start_lnum; --start_lnum;
if (VIsual_active) { if (VIsual_active) {
/* Problem: when doing "Vipipip" nothing happens in a single white // Problem: when doing "Vipipip" nothing happens in a single white
* line, we get stuck there. Trap this here. */ // line, we get stuck there. Trap this here.
if (VIsual_mode == 'V' && start_lnum == curwin->w_cursor.lnum) if (VIsual_mode == 'V' && start_lnum == curwin->w_cursor.lnum) {
goto extend; goto extend;
VIsual.lnum = start_lnum; }
if (VIsual.lnum != start_lnum) {
VIsual.lnum = start_lnum;
VIsual.col = 0;
}
VIsual_mode = 'V'; VIsual_mode = 'V';
redraw_curbuf_later(INVERTED); /* update the inversion */ redraw_curbuf_later(INVERTED); /* update the inversion */
showmode(); showmode();

View File

@@ -89,17 +89,8 @@ func s:doc_config_teardown()
endif endif
endfunc endfunc
func s:get_cmd_compl_list(cmd) func s:get_help_compl_list(cmd)
let list = [] return getcompletion(a:cmd, 'help')
let str = ''
for cnt in range(1, 999)
call feedkeys(a:cmd . repeat("\<Tab>", cnt) . "'\<C-B>let str='\<CR>", 'tx')
if str ==# a:cmd[1:]
break
endif
call add(list, str)
endfor
return list
endfunc endfunc
func Test_help_complete() func Test_help_complete()
@@ -111,49 +102,49 @@ func Test_help_complete()
if has('multi_lang') if has('multi_lang')
set helplang= set helplang=
endif endif
let list = s:get_cmd_compl_list(":h test") let list = s:get_help_compl_list("test")
call assert_equal(['h test-col', 'h test-char'], list) call assert_equal(['test-col', 'test-char'], list)
if has('multi_lang') if has('multi_lang')
" 'helplang=ab' and help file lang is 'en' " 'helplang=ab' and help file lang is 'en'
set helplang=ab set helplang=ab
let list = s:get_cmd_compl_list(":h test") let list = s:get_help_compl_list("test")
call assert_equal(['h test-col', 'h test-char'], list) call assert_equal(['test-col', 'test-char'], list)
" 'helplang=' and help file lang is 'en' and 'ab' " 'helplang=' and help file lang is 'en' and 'ab'
set rtp+=Xdir1/doc-ab set rtp+=Xdir1/doc-ab
set helplang= set helplang=
let list = s:get_cmd_compl_list(":h test") let list = s:get_help_compl_list("test")
call assert_equal(sort(['h test-col@en', 'h test-col@ab', call assert_equal(sort(['test-col@en', 'test-col@ab',
\ 'h test-char@en', 'h test-char@ab']), sort(list)) \ 'test-char@en', 'test-char@ab']), sort(list))
" 'helplang=ab' and help file lang is 'en' and 'ab' " 'helplang=ab' and help file lang is 'en' and 'ab'
set helplang=ab set helplang=ab
let list = s:get_cmd_compl_list(":h test") let list = s:get_help_compl_list("test")
call assert_equal(sort(['h test-col', 'h test-col@en', call assert_equal(sort(['test-col', 'test-col@en',
\ 'h test-char', 'h test-char@en']), sort(list)) \ 'test-char', 'test-char@en']), sort(list))
" 'helplang=' and help file lang is 'en', 'ab' and 'ja' " 'helplang=' and help file lang is 'en', 'ab' and 'ja'
set rtp+=Xdir1/doc-ja set rtp+=Xdir1/doc-ja
set helplang= set helplang=
let list = s:get_cmd_compl_list(":h test") let list = s:get_help_compl_list("test")
call assert_equal(sort(['h test-col@en', 'h test-col@ab', call assert_equal(sort(['test-col@en', 'test-col@ab',
\ 'h test-col@ja', 'h test-char@en', \ 'test-col@ja', 'test-char@en',
\ 'h test-char@ab', 'h test-char@ja']), sort(list)) \ 'test-char@ab', 'test-char@ja']), sort(list))
" 'helplang=ab' and help file lang is 'en', 'ab' and 'ja' " 'helplang=ab' and help file lang is 'en', 'ab' and 'ja'
set helplang=ab set helplang=ab
let list = s:get_cmd_compl_list(":h test") let list = s:get_help_compl_list("test")
call assert_equal(sort(['h test-col', 'h test-col@en', call assert_equal(sort(['test-col', 'test-col@en',
\ 'h test-col@ja', 'h test-char', \ 'test-col@ja', 'test-char',
\ 'h test-char@en', 'h test-char@ja']), sort(list)) \ 'test-char@en', 'test-char@ja']), sort(list))
" 'helplang=ab,ja' and help file lang is 'en', 'ab' and 'ja' " 'helplang=ab,ja' and help file lang is 'en', 'ab' and 'ja'
set helplang=ab,ja set helplang=ab,ja
let list = s:get_cmd_compl_list(":h test") let list = s:get_help_compl_list("test")
call assert_equal(sort(['h test-col', 'h test-col@ja', call assert_equal(sort(['test-col', 'test-col@ja',
\ 'h test-col@en', 'h test-char', \ 'test-col@en', 'test-char',
\ 'h test-char@ja', 'h test-char@en']), sort(list)) \ 'test-char@ja', 'test-char@en']), sort(list))
endif endif
catch catch
call assert_exception('X') call assert_exception('X')

View File

@@ -1,4 +1,113 @@
" Tests for sessions " Test for :mksession, :mkview and :loadview in latin1 encoding
scriptencoding latin1
if !has('multi_byte') || !has('mksession')
finish
endif
func Test_mksession()
tabnew
let wrap_save = &wrap
set sessionoptions=buffers splitbelow fileencoding=latin1
call setline(1, [
\ 'start:',
\ 'no multibyte chAracter',
\ ' one leaDing tab',
\ ' four leadinG spaces',
\ 'two consecutive tabs',
\ 'two tabs in one line',
\ 'one <20> multibyteCharacter',
\ 'a<> <20> two multiByte characters',
\ 'A<><41><EFBFBD> three mulTibyte characters'
\ ])
let tmpfile = 'Xtemp'
exec 'w! ' . tmpfile
/^start:
set wrap
vsplit
norm! j16|
split
norm! j16|
split
norm! j16|
split
norm! j8|
split
norm! j8|
split
norm! j16|
split
norm! j16|
split
norm! j16|
wincmd l
set nowrap
/^start:
norm! j16|3zl
split
norm! j016|3zl
split
norm! j016|3zl
split
norm! j08|3zl
split
norm! j08|3zl
split
norm! j016|3zl
split
norm! j016|3zl
split
norm! j016|3zl
split
call wincol()
mksession! Xtest_mks.out
let li = filter(readfile('Xtest_mks.out'), 'v:val =~# "\\(^ *normal! 0\\|^ *exe ''normal!\\)"')
let expected = [
\ 'normal! 016|',
\ 'normal! 016|',
\ 'normal! 016|',
\ 'normal! 08|',
\ 'normal! 08|',
\ 'normal! 016|',
\ 'normal! 016|',
\ 'normal! 016|',
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 8 . '|'",
\ " normal! 08|",
\ " exe 'normal! ' . s:c . '|zs' . 8 . '|'",
\ " normal! 08|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|"
\ ]
call assert_equal(expected, li)
tabclose!
call delete('Xtest_mks.out')
call delete(tmpfile)
let &wrap = wrap_save
endfunc
func Test_mksession_winheight()
new
set winheight=10 winminheight=2
mksession! Xtest_mks.out
source Xtest_mks.out
call delete('Xtest_mks.out')
endfunc
" Verify that arglist is stored correctly to the session file. " Verify that arglist is stored correctly to the session file.
func Test_mksession_arglist() func Test_mksession_arglist()
@@ -12,4 +121,35 @@ func Test_mksession_arglist()
argdel * argdel *
endfunc endfunc
func Test_mksession_one_buffer_two_windows()
edit Xtest1
new Xtest2
split
mksession! Xtest_mks.out
let lines = readfile('Xtest_mks.out')
let count1 = 0
let count2 = 0
let count2buf = 0
for line in lines
if line =~ 'edit \f*Xtest1$'
let count1 += 1
endif
if line =~ 'edit \f\{-}Xtest2'
let count2 += 1
endif
if line =~ 'buffer \f\{-}Xtest2'
let count2buf += 1
endif
endfor
call assert_equal(1, count1, 'Xtest1 count')
call assert_equal(2, count2, 'Xtest2 count')
call assert_equal(2, count2buf, 'Xtest2 buffer count')
close
bwipe!
call delete('Xtest_mks.out')
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@@ -0,0 +1,104 @@
" Test for :mksession, :mkview and :loadview in utf-8 encoding
set encoding=utf-8
scriptencoding utf-8
if !has('multi_byte') || !has('mksession')
finish
endif
func Test_mksession_utf8()
tabnew
let wrap_save = &wrap
set sessionoptions=buffers splitbelow fileencoding=utf-8
call setline(1, [
\ 'start:',
\ 'no multibyte chAracter',
\ ' one leaDing tab',
\ ' four leadinG spaces',
\ 'two consecutive tabs',
\ 'two tabs in one line',
\ 'one … multibyteCharacter',
\ 'a “b” two multiByte characters',
\ '“c”1€ three mulTibyte characters'
\ ])
let tmpfile = tempname()
exec 'w! ' . tmpfile
/^start:
set wrap
vsplit
norm! j16|
split
norm! j16|
split
norm! j16|
split
norm! j8|
split
norm! j8|
split
norm! j16|
split
norm! j16|
split
norm! j16|
wincmd l
set nowrap
/^start:
norm! j16|3zl
split
norm! j016|3zl
split
norm! j016|3zl
split
norm! j08|3zl
split
norm! j08|3zl
split
norm! j016|3zl
split
norm! j016|3zl
split
norm! j016|3zl
split
call wincol()
mksession! test_mks.out
let li = filter(readfile('test_mks.out'), 'v:val =~# "\\(^ *normal! 0\\|^ *exe ''normal!\\)"')
let expected = [
\ 'normal! 016|',
\ 'normal! 016|',
\ 'normal! 016|',
\ 'normal! 08|',
\ 'normal! 08|',
\ 'normal! 016|',
\ 'normal! 016|',
\ 'normal! 016|',
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 8 . '|'",
\ " normal! 08|",
\ " exe 'normal! ' . s:c . '|zs' . 8 . '|'",
\ " normal! 08|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|",
\ " exe 'normal! ' . s:c . '|zs' . 16 . '|'",
\ " normal! 016|"
\ ]
call assert_equal(expected, li)
tabclose!
call delete('test_mks.out')
call delete(tmpfile)
let &wrap = wrap_save
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@@ -126,3 +126,13 @@ endfunc
func Test_thesaurus() func Test_thesaurus()
call Check_dir_option('thesaurus') call Check_dir_option('thesaurus')
endfunc endfunc
func Test_complete()
" Trailing single backslash used to cause invalid memory access.
set complete=s\
new
call feedkeys("i\<C-N>\<Esc>", 'xt')
bwipe!
set complete&
endfun

View File

@@ -28,3 +28,10 @@ func Test_Visual_ctrl_o()
set tw& set tw&
bw! bw!
endfu endfu
func Test_Visual_vapo()
new
normal oxx
normal vapo
bwipe!
endfunc

View File

@@ -77,6 +77,157 @@ static char *features[] = {
// clang-format off // clang-format off
static const int included_patches[] = { static const int included_patches[] = {
// 1026,
1025,
1024,
// 1023,
// 1022,
// 1021,
// 1020,
// 1019,
// 1018,
// 1017,
// 1016,
// 1015,
// 1014,
// 1013,
// 1012,
// 1011,
// 1010,
// 1009,
// 1008,
// 1007,
// 1006,
// 1005,
// 1004,
// 1003,
// 1002,
// 1001,
// 1000,
// 999,
// 998,
// 997,
// 996,
// 995,
// 994,
// 993,
// 992,
// 991,
// 990,
// 989,
// 988,
// 987,
// 986,
// 985,
// 984,
// 983,
// 982,
// 981,
// 980,
// 979,
// 978,
// 977,
// 976,
// 975,
// 974,
// 973,
// 972,
// 971,
// 970,
// 969,
// 968,
// 967,
// 966,
// 965,
// 964,
// 963,
// 962,
// 961,
// 960,
// 959,
// 958,
// 957,
// 956,
// 955,
// 954,
// 953,
// 952,
// 951,
// 950,
// 949,
// 948,
// 947,
// 946,
// 945,
// 944,
// 943,
// 942,
// 941,
// 940,
// 939,
// 938,
// 937,
// 936,
// 935,
// 934,
// 933,
// 932,
// 931,
// 930,
// 929,
// 928,
// 927,
// 926,
// 925,
// 924,
// 923,
// 922,
// 921,
// 920,
// 919,
// 918,
// 917,
// 916,
// 915,
// 914,
// 913,
// 912,
// 911,
// 910,
// 909,
// 908,
// 907,
// 906,
// 905,
// 904,
// 903,
// 902,
// 901,
// 900,
// 899,
// 898,
// 897,
// 896,
// 895,
// 894,
// 893,
// 892,
// 891,
// 890,
// 889,
// 888,
// 887,
// 886,
// 885,
// 884,
// 883,
// 882,
// 881,
// 880,
// 879,
// 878,
// 877,
// 876,
// 875, // 875,
// 874, // 874,
// 873, // 873,
@@ -619,12 +770,12 @@ static const int included_patches[] = {
// 336, // 336,
// 335, // 335,
// 334, // 334,
// 333, 333,
// 332, // 332,
331, 331,
// 330, 330,
// 329, // 329,
// 328, 328,
327, 327,
326, 326,
325, 325,
@@ -694,12 +845,12 @@ static const int included_patches[] = {
// 261, // 261,
// 260 NA // 260 NA
259, 259,
// 258, 258,
// 257 NA // 257 NA
// 256, // 256,
// 255, // 255,
// 254, // 254,
// 253, 253,
// 252, // 252,
// 251, // 251,
250, 250,
@@ -840,7 +991,7 @@ static const int included_patches[] = {
// 115 NA // 115 NA
// 114 NA // 114 NA
// 113 NA // 113 NA
// 112, 112,
111, 111,
110, 110,
// 109 NA // 109 NA
@@ -861,7 +1012,7 @@ static const int included_patches[] = {
// 94 NA // 94 NA
// 93 NA // 93 NA
92, 92,
// 91, 91,
90, 90,
// 89 NA // 89 NA
88, 88,

View File

@@ -17,4 +17,4 @@ ignore = {
} }
-- Ignore whitespace issues in converted Vim legacy tests. -- Ignore whitespace issues in converted Vim legacy tests.
files["functional/legacy"] = {ignore = { "611", "612", "613", "621" }} --files["functional/legacy"] = {ignore = { "611", "612", "613", "621" }}

View File

@@ -15,6 +15,8 @@ local function insert_(content)
feed_command('1', 'set cin ts=4 sw=4') feed_command('1', 'set cin ts=4 sw=4')
end end
-- luacheck: ignore 621 (Indentation)
-- luacheck: ignore 613 (Trailing whitespace in a string)
describe('cindent', function() describe('cindent', function()
before_each(clear) before_each(clear)

View File

@@ -9,6 +9,7 @@ local wait = helpers.wait
describe('test5', function() describe('test5', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
it('is working', function() it('is working', function()
insert([[ insert([[
start of test file Xxx start of test file Xxx

View File

@@ -78,8 +78,8 @@ describe('argument list', function()
end) end)
teardown(function() teardown(function()
os.remove('Xxx1') os.remove('Xxx1')
os.remove('Xxx2') os.remove('Xxx2')
os.remove('Xxx3') os.remove('Xxx3')
end) end)
end) end)

View File

@@ -36,10 +36,10 @@ describe(':ball', function()
-- Open window for all args, close Xxx2 -- Open window for all args, close Xxx2
feed('$r4:ball<cr>') feed('$r4:ball<cr>')
-- Write contents of this file -- Write contents of this file
feed_command('%yank A') feed_command('%yank A')
-- Append contents of second window (Xxx1) -- Append contents of second window (Xxx1)
feed('') feed('')
feed_command('%yank A') feed_command('%yank A')

View File

@@ -94,6 +94,8 @@ describe('file reading, writing and bufnew and filter autocommands', function()
eq(gzip_data, io.open('Xtestfile.gz'):read('*all')) eq(gzip_data, io.open('Xtestfile.gz'):read('*all'))
end) end)
-- luacheck: ignore 621 (Indentation)
-- luacheck: ignore 611 (Line contains only whitespaces)
it('FileReadPre, FileReadPost', function() it('FileReadPre, FileReadPost', function()
prepare_gz_file('Xtestfile', text1) prepare_gz_file('Xtestfile', text1)
feed_command('au! FileReadPre *.gz exe "silent !gzip -d " . shellescape(expand("<afile>"))') feed_command('au! FileReadPre *.gz exe "silent !gzip -d " . shellescape(expand("<afile>"))')

View File

@@ -9,6 +9,7 @@ local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers
describe('alignment', function() describe('alignment', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
it('is working', function() it('is working', function()
insert([[ insert([[
test for :left test for :left
@@ -112,7 +113,7 @@ describe('alignment', function()
asxa;ofa axxxoikey asxa;ofa axxxoikey
asdfaqwer axxxoikey asdfaqwer axxxoikey
xxxxx xx xxxxxx xxxxx xx xxxxxx
xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx
xx xxxxxxx. xxxx xxxx. xx xxxxxxx. xxxx xxxx.

View File

@@ -8,6 +8,7 @@ local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers
describe([[performing "r<Tab>" with 'smarttab' and 'expandtab' set/not set, and "dv_"]], function() describe([[performing "r<Tab>" with 'smarttab' and 'expandtab' set/not set, and "dv_"]], function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
it('is working', function() it('is working', function()
insert([[ insert([[
start text start text

View File

@@ -11,6 +11,8 @@ local feed_command = helpers.feed_command
describe('joining lines', function() describe('joining lines', function()
before_each(clear) before_each(clear)
-- luacheck: ignore 613 (Trailing whitespaces in a string)
-- luacheck: ignore 611 (Line contains only whitespaces)
it("keeps marks with different 'joinspaces' settings", function() it("keeps marks with different 'joinspaces' settings", function()
insert([[ insert([[
firstline firstline

View File

@@ -9,6 +9,7 @@ local wait = helpers.wait
describe('lisp indent', function() describe('lisp indent', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
it('is working', function() it('is working', function()
insert([[ insert([[
(defun html-file (base) (defun html-file (base)
@@ -22,7 +23,7 @@ describe('lisp indent', function()
:if-exists :supersede) :if-exists :supersede)
(let ((,ti ,title)) (let ((,ti ,title))
(as title ,ti) (as title ,ti)
(with center (with center
(as h2 (string-upcase ,ti))) (as h2 (string-upcase ,ti)))
(brs 3) (brs 3)
,@body)))) ,@body))))
@@ -58,7 +59,7 @@ describe('lisp indent', function()
:if-exists :supersede) :if-exists :supersede)
(let ((,ti ,title)) (let ((,ti ,title))
(as title ,ti) (as title ,ti)
(with center (with center
(as h2 (string-upcase ,ti))) (as h2 (string-upcase ,ti)))
(brs 3) (brs 3)
,@body)))) ,@body))))

View File

@@ -7,6 +7,7 @@ local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers
describe('Virtual replace mode', function() describe('Virtual replace mode', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
it('is working', function() it('is working', function()
-- Make sure that backspace works, no matter what termcap is used. -- Make sure that backspace works, no matter what termcap is used.
feed_command('set t_kD=x7f t_kb=x08') feed_command('set t_kD=x7f t_kb=x08')

View File

@@ -43,6 +43,7 @@ describe('Visual block mode', function()
abcdqqqqijklm]]) abcdqqqqijklm]])
end) end)
-- luacheck: ignore 611 (Line contains only whitespaces)
it('should insert a block using cursor keys for movement', function() it('should insert a block using cursor keys for movement', function()
insert([[ insert([[
aaaaaa aaaaaa
@@ -104,6 +105,7 @@ describe('Visual block mode', function()
456ab7]]) 456ab7]])
end) end)
-- luacheck: ignore 621 (Indentation)
it('should insert and append a block when virtualedit=all', function() it('should insert and append a block when virtualedit=all', function()
insert([[ insert([[
line1 line1

View File

@@ -191,6 +191,7 @@ describe('list and dictionary types', function()
[3]]=]) [3]]=])
end) end)
-- luacheck: ignore 613 (Trailing whitespace in a string)
it('assignment to a list', function() it('assignment to a list', function()
source([[ source([[
let l = [0, 1, 2, 3] let l = [0, 1, 2, 3]

View File

@@ -12,7 +12,7 @@ describe('exists() and has() functions', function()
write_file('test60.vim', [[ write_file('test60.vim', [[
" Vim script for exists() function test " Vim script for exists() function test
" Script-local variables are checked here " Script-local variables are checked here
" Existing script-local variable " Existing script-local variable
let s:script_var = 1 let s:script_var = 1
echo 's:script_var: 1' echo 's:script_var: 1'
@@ -21,7 +21,7 @@ describe('exists() and has() functions', function()
else else
echo "FAILED" echo "FAILED"
endif endif
" Non-existing script-local variable " Non-existing script-local variable
unlet s:script_var unlet s:script_var
echo 's:script_var: 0' echo 's:script_var: 0'
@@ -30,7 +30,7 @@ describe('exists() and has() functions', function()
else else
echo "FAILED" echo "FAILED"
endif endif
" Existing script-local list " Existing script-local list
let s:script_list = ["blue", "orange"] let s:script_list = ["blue", "orange"]
echo 's:script_list: 1' echo 's:script_list: 1'
@@ -39,7 +39,7 @@ describe('exists() and has() functions', function()
else else
echo "FAILED" echo "FAILED"
endif endif
" Non-existing script-local list " Non-existing script-local list
unlet s:script_list unlet s:script_list
echo 's:script_list: 0' echo 's:script_list: 0'
@@ -48,7 +48,7 @@ describe('exists() and has() functions', function()
else else
echo "FAILED" echo "FAILED"
endif endif
" Existing script-local dictionary " Existing script-local dictionary
let s:script_dict = {"xcord":100, "ycord":2} let s:script_dict = {"xcord":100, "ycord":2}
echo 's:script_dict: 1' echo 's:script_dict: 1'
@@ -57,7 +57,7 @@ describe('exists() and has() functions', function()
else else
echo "FAILED" echo "FAILED"
endif endif
" Non-existing script-local dictionary " Non-existing script-local dictionary
unlet s:script_dict unlet s:script_dict
echo 's:script_dict: 0' echo 's:script_dict: 0'
@@ -66,7 +66,7 @@ describe('exists() and has() functions', function()
else else
echo "FAILED" echo "FAILED"
endif endif
" Existing script curly-brace variable " Existing script curly-brace variable
let str = "script" let str = "script"
let s:curly_{str}_var = 1 let s:curly_{str}_var = 1
@@ -76,7 +76,7 @@ describe('exists() and has() functions', function()
else else
echo "FAILED" echo "FAILED"
endif endif
" Non-existing script-local curly-brace variable " Non-existing script-local curly-brace variable
unlet s:curly_{str}_var unlet s:curly_{str}_var
echo 's:curly_' . str . '_var: 0' echo 's:curly_' . str . '_var: 0'
@@ -85,21 +85,21 @@ describe('exists() and has() functions', function()
else else
echo "FAILED" echo "FAILED"
endif endif
" Existing script-local function " Existing script-local function
function! s:my_script_func() function! s:my_script_func()
endfunction endfunction
echo '*s:my_script_func: 1' echo '*s:my_script_func: 1'
if exists('*s:my_script_func') if exists('*s:my_script_func')
echo "OK" echo "OK"
else else
echo "FAILED" echo "FAILED"
endif endif
" Non-existing script-local function " Non-existing script-local function
delfunction s:my_script_func delfunction s:my_script_func
echo '*s:my_script_func: 0' echo '*s:my_script_func: 0'
if !exists('*s:my_script_func') if !exists('*s:my_script_func')
echo "OK" echo "OK"
@@ -644,7 +644,7 @@ describe('exists() and has() functions', function()
-- Assert buffer contents. -- Assert buffer contents.
expect([[ expect([[
#myagroup: 1 #myagroup: 1
OK OK
#myagroup+b: 0 #myagroup+b: 0

View File

@@ -15,7 +15,7 @@ describe('visual block shift and tab characters', function()
one two three one two three
one two three one two three
one two three one two three
abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz
@@ -49,7 +49,7 @@ describe('visual block shift and tab characters', function()
on1 two three on1 two three
on1 two three on1 two three
on1 two three on1 two three
abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz
abcdefghij abcdefghij
abc defghijklmnopqrstuvwxyz abc defghijklmnopqrstuvwxyz

View File

@@ -9,6 +9,7 @@ local expect = helpers.expect
describe('text formatting', function() describe('text formatting', function()
setup(clear) setup(clear)
-- luacheck: ignore 613 (Trailing whitespace in a string)
it('is working', function() it('is working', function()
-- The control character <C-A> (byte \x01) needs to be put in the buffer -- The control character <C-A> (byte \x01) needs to be put in the buffer
-- directly. But the insert function sends the text to nvim in insert -- directly. But the insert function sends the text to nvim in insert

View File

@@ -27,7 +27,7 @@ describe('multibyte text', function()
abc abc
abc abc
@@ -62,7 +62,7 @@ describe('multibyte text', function()
a a
@@ -125,7 +125,7 @@ describe('multibyte text', function()
ab ab
a a
@@ -166,7 +166,7 @@ describe('multibyte text', function()
a a
a a
@@ -190,7 +190,7 @@ describe('multibyte text', function()
a a
a a
@@ -239,7 +239,7 @@ describe('multibyte text', function()
a a
a a
a a
@@ -259,7 +259,7 @@ describe('multibyte text', function()
it('formatting in replace mode', function() it('formatting in replace mode', function()
insert([[ insert([[
{ {
}]]) }]])
feed_command('/^{/+1') feed_command('/^{/+1')
feed_command('set tw=2 fo=tm') feed_command('set tw=2 fo=tm')

View File

@@ -22,32 +22,32 @@ describe('78', function()
let linecount = 10000 let linecount = 10000
while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
preserve preserve
" Get the name of the swap file, and clean up the :redir capture. " Get the name of the swap file, and clean up the :redir capture.
redir => g:swapname | swapname | redir END redir => g:swapname | swapname | redir END
let g:swapname = substitute(g:swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', 'g') let g:swapname = substitute(g:swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', 'g')
let g:swapname = fnameescape(g:swapname) let g:swapname = fnameescape(g:swapname)
" Make a copy of the swap file in Xswap " Make a copy of the swap file in Xswap
set bin set bin
exe 'sp ' . g:swapname exe 'sp ' . g:swapname
w! Xswap w! Xswap
set nobin set nobin
new new
only! only!
bwipe! Xtest bwipe! Xtest
call rename('Xswap', g:swapname) call rename('Xswap', g:swapname)
"TODO(jkeyes): without 'silent', this hangs the test " at message: "TODO(jkeyes): without 'silent', this hangs the test " at message:
" 'Recovery completed. You should check if everything is OK.' " 'Recovery completed. You should check if everything is OK.'
silent recover Xtest silent recover Xtest
call delete(g:swapname) call delete(g:swapname)
new new
call append(0, 'recovery start') call append(0, 'recovery start')
wincmd w wincmd w
let g:linedollar = line('$') let g:linedollar = line('$')
if g:linedollar < linecount if g:linedollar < linecount
wincmd w wincmd w
@@ -56,7 +56,7 @@ describe('78', function()
wincmd w wincmd w
let linecount = g:linedollar let linecount = g:linedollar
endif endif
let i = 1 let i = 1
while i <= linecount while i <= linecount
if getline(i) != i . text if getline(i) != i . text
@@ -72,7 +72,7 @@ describe('78', function()
expect([[ expect([[
recovery start recovery start
recovery end]]) recovery end]])
end) end)
end) end)

View File

@@ -7,6 +7,7 @@ local feed_command, expect = helpers.feed_command, helpers.expect
describe('coptions', function() describe('coptions', function()
setup(clear) setup(clear)
-- luacheck: ignore 613 (Trailing whitespace in a string)
it('is working', function() it('is working', function()
insert([[ insert([[
aaa two three four aaa two three four

View File

@@ -115,9 +115,9 @@ describe('case-insensitive string comparison in UTF-8', function()
-- Assert buffer contents. -- Assert buffer contents.
expect([=[ expect([=[
3732 checks passed 3732 checks passed
ABCD ABCD
defg]=]) defg]=])
end) end)
end) end)

View File

@@ -7,6 +7,7 @@ local clear, expect = helpers.clear, helpers.expect
describe('curswant', function() describe('curswant', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
it('is working', function() it('is working', function()
insert([[ insert([[
start target options start target options

View File

@@ -12,6 +12,7 @@ end
describe('cursor and column position with conceal and tabulators', function() describe('cursor and column position with conceal and tabulators', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
it('are working', function() it('are working', function()
insert([[ insert([[
start: start:

View File

@@ -63,26 +63,26 @@ describe("setting 'number' and 'relativenumber'", function()
-- Assert buffer contents. -- Assert buffer contents.
expect([[ expect([[
results: results:
number number
relativenumber relativenumber
number number
relativenumber relativenumber
:setlocal must NOT reset the other global value :setlocal must NOT reset the other global value
number number
relativenumber relativenumber
:setglobal MUST reset the other global value :setglobal MUST reset the other global value
number number
relativenumber relativenumber
:set MUST reset the other global value :set MUST reset the other global value
number number
relativenumber]]) relativenumber]])
end) end)
end) end)
@@ -108,7 +108,7 @@ describe('findfile', function()
expect([[ expect([[
Testing findfile Testing findfile
src/nvim/api/vim.c src/nvim/api/vim.c
api/vim.c api/vim.c
api/vim.c]]) api/vim.c]])

View File

@@ -15,6 +15,7 @@ describe('store cursor position in session file in UTF-8', function()
os.remove('test.out') os.remove('test.out')
end) end)
-- luacheck: ignore 621 (Indentation)
it('is working', function() it('is working', function()
insert([[ insert([[
start: start:

View File

@@ -17,6 +17,7 @@ describe('store cursor position in session file in Latin-1', function()
os.remove('test.out') os.remove('test.out')
end) end)
-- luacheck: ignore 621 (Indentation)
it('is working', function() it('is working', function()
insert([[ insert([[
start: start:

View File

@@ -372,6 +372,7 @@ describe('Visual mode and operator', function()
end) end)
end) end)
-- luacheck: ignore 613 (Trailing whitespace in a string)
it('gv in exclusive select mode after operation', function() it('gv in exclusive select mode after operation', function()
source([[ source([[
$put ='zzz ' $put ='zzz '

View File

@@ -32,7 +32,7 @@ describe('E315 error', function()
-- :del the ex-way will require the colon operator which resets the -- :del the ex-way will require the colon operator which resets the
-- visual mode thus preventing the problem: -- visual mode thus preventing the problem:
feed('GV:call TriggerTheProblem()<cr>') feed('GV:call TriggerTheProblem()<cr>')
source([[ source([[
%del _ %del _
call append(line('$'), g:msg) call append(line('$'), g:msg)
@@ -41,7 +41,7 @@ describe('E315 error', function()
-- Assert buffer contents. -- Assert buffer contents.
expect([[ expect([[
Everything's fine.]]) Everything's fine.]])
end) end)
end) end)

View File

@@ -15,9 +15,9 @@ describe('errorformat', function()
command("$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))") command("$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))")
command("cgetexpr ['WWWW', 'GGGG', 'ZZZZ', 'EEEE', 'CCCC', 'YYYY']") command("cgetexpr ['WWWW', 'GGGG', 'ZZZZ', 'EEEE', 'CCCC', 'YYYY']")
command("$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))") command("$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))")
expect([=[ expect([=[
[['W', 1], ['E^@CCCC', 1]] [['W', 1], ['E^@CCCC', 1]]
[['W', 1], ['E^@CCCC', 1]] [['W', 1], ['E^@CCCC', 1]]
[['W', 1], ['ZZZZ', 0], ['E^@CCCC', 1], ['YYYY', 0]]]=]) [['W', 1], ['ZZZZ', 0], ['E^@CCCC', 1], ['YYYY', 0]]]=])

View File

@@ -89,18 +89,18 @@ describe('108', function()
-- Assert buffer contents. -- Assert buffer contents.
expect([=[ expect([=[
- show backtrace: - show backtrace:
2 function Foo[2] 2 function Foo[2]
1 Bar[2] 1 Bar[2]
->0 Bazz ->0 Bazz
line 2: let var3 = "another var" line 2: let var3 = "another var"
show variables on different levels: show variables on different levels:
6 6
2 function Foo[2] 2 function Foo[2]
->1 Bar[2] ->1 Bar[2]
@@ -112,9 +112,9 @@ describe('108', function()
0 Bazz 0 Bazz
line 2: let var3 = "another var" line 2: let var3 = "another var"
1 1
- undefined vars: - undefined vars:
undefined var3 on former level: undefined var3 on former level:
Error detected while processing function Foo[2]..Bar[2]..Bazz: Error detected while processing function Foo[2]..Bar[2]..Bazz:
line 3: line 3:
@@ -122,7 +122,7 @@ describe('108', function()
E15: Invalid expression: var3 E15: Invalid expression: var3
here var3 is defined with "another var": here var3 is defined with "another var":
another var another var
undefined var2 on former level undefined var2 on former level
Error detected while processing function Foo[2]..Bar: Error detected while processing function Foo[2]..Bar:
line 3: line 3:
@@ -130,37 +130,37 @@ describe('108', function()
E15: Invalid expression: var2 E15: Invalid expression: var2
here var2 is defined with 10: here var2 is defined with 10:
10 10
- backtrace movements: - backtrace movements:
1 function Foo[2] 1 function Foo[2]
->0 Bar ->0 Bar
line 3: End of function line 3: End of function
next command cannot go down, we are on bottom next command cannot go down, we are on bottom
frame is zero frame is zero
next command cannot go up, we are on top next command cannot go up, we are on top
frame at highest level: 1 frame at highest level: 1
->1 function Foo[2] ->1 function Foo[2]
0 Bar 0 Bar
line 3: End of function line 3: End of function
fil is not frame or finish, it is file fil is not frame or finish, it is file
"[No Name]" --No lines in buffer-- "[No Name]" --No lines in buffer--
- relative backtrace movement - relative backtrace movement
1 function Foo[2] 1 function Foo[2]
->0 Bar ->0 Bar
line 3: End of function line 3: End of function
->1 function Foo[2] ->1 function Foo[2]
0 Bar 0 Bar
line 3: End of function line 3: End of function
- go beyond limits does not crash - go beyond limits does not crash
frame at highest level: 1 frame at highest level: 1
->1 function Foo[2] ->1 function Foo[2]
0 Bar 0 Bar
@@ -169,7 +169,7 @@ describe('108', function()
1 function Foo[2] 1 function Foo[2]
->0 Bar ->0 Bar
line 3: End of function line 3: End of function
- final result 19: - final result 19:
19 19
]=]) ]=])

View File

@@ -7,6 +7,9 @@ local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers
describe('breakindent', function() describe('breakindent', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
-- luacheck: ignore 613 (Trailing whitespace in a string)
-- luacheck: ignore 611 (Line contains only whitespaces)
it('is working', function() it('is working', function()
insert('dummy text') insert('dummy text')

View File

@@ -4,6 +4,7 @@ local helpers = require('test.functional.helpers')(after_each)
local clear, source, expect = helpers.clear, helpers.source, helpers.expect local clear, source, expect = helpers.clear, helpers.source, helpers.expect
local feed_command = helpers.feed_command local feed_command = helpers.feed_command
-- luacheck: ignore 613 (Trailing whitespace in a string)
describe('command_count', function() describe('command_count', function()
it('is working', function() it('is working', function()
-- It is relevant for the test to load a file initially. If this is -- It is relevant for the test to load a file initially. If this is
@@ -133,8 +134,8 @@ describe('command_count', function()
let g:lines = [] let g:lines = []
func BufStatus() func BufStatus()
call add(g:lines, call add(g:lines,
\ 'aaa: ' . buflisted(g:buf_aaa) . \ 'aaa: ' . buflisted(g:buf_aaa) .
\ ' bbb: ' . buflisted(g:buf_bbb) . \ ' bbb: ' . buflisted(g:buf_bbb) .
\ ' ccc: ' . buflisted(g:buf_ccc)) \ ' ccc: ' . buflisted(g:buf_ccc))
endfunc endfunc
se nohidden se nohidden
@@ -214,7 +215,7 @@ describe('command_count', function()
RangeTabsAll 1 5 RangeTabsAll 1 5
RangeLines 2 5 RangeLines 2 5
LocalRangeLines 2 5 LocalRangeLines 2 5
5argu E16: Invalid range 5argu E16: Invalid range
4argu d 4argu d
1argu a 1argu a
@@ -225,7 +226,7 @@ describe('command_count', function()
$tabe 2 $tabe 2
$+tabe E16: Invalid range $+tabe E16: Invalid range
0tabm x 0tabm x
aaa: 1 bbb: 1 ccc: 1 aaa: 1 bbb: 1 ccc: 1
aaa: 1 bbb: 0 ccc: 0 aaa: 1 bbb: 0 ccc: 0
aaa: 0 bbb: 0 ccc: 0 aaa: 0 bbb: 0 ccc: 0

View File

@@ -6,6 +6,7 @@ local clear, feed, expect = helpers.clear, helpers.feed, helpers.expect
describe('CTRL-W in Insert mode', function() describe('CTRL-W in Insert mode', function()
setup(clear) setup(clear)
-- luacheck: ignore 611 (Line contains only whitespaces)
it('works for multi-byte characters', function() it('works for multi-byte characters', function()
for i = 1, 6 do for i = 1, 6 do

View File

@@ -685,7 +685,7 @@ describe('Ctrl-A/Ctrl-X on visual selections', function()
" Text: " Text:
" 1 23 " 1 23
" 4 56 " 4 56
" "
" Expected: " Expected:
" 1) f2 Ctrl-V jl <ctrl-a>, repeat twice afterwards with . " 1) f2 Ctrl-V jl <ctrl-a>, repeat twice afterwards with .
" 1 26 " 1 26

View File

@@ -4,12 +4,14 @@ local helpers = require('test.functional.helpers')(after_each)
local feed, insert, source = helpers.feed, helpers.insert, helpers.source local feed, insert, source = helpers.feed, helpers.insert, helpers.source
local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers.expect local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers.expect
-- luacheck: ignore 621 (Indentation)
describe("'listchars'", function() describe("'listchars'", function()
before_each(function() before_each(function()
clear() clear()
feed_command('set listchars&vi') feed_command('set listchars&vi')
end) end)
-- luacheck: ignore 613 (Trailing whitespace in a string)
it("works with 'list'", function() it("works with 'list'", function()
source([[ source([[
function GetScreenCharsForLine(lnum) function GetScreenCharsForLine(lnum)

View File

@@ -7,6 +7,9 @@ local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers
describe('listlbr', function() describe('listlbr', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
-- luacheck: ignore 611 (Line contains only whitespaces)
-- luacheck: ignore 613 (Trailing whitespaces in a string)
it('is working', function() it('is working', function()
insert([[ insert([[
dummy text]]) dummy text]])
@@ -20,20 +23,20 @@ describe('listlbr', function()
feed_command('set ts=4 sw=4 sts=4 linebreak sbr=+ wrap') feed_command('set ts=4 sw=4 sts=4 linebreak sbr=+ wrap')
source([[ source([[
fu! ScreenChar(width) fu! ScreenChar(width)
let c='' let c=''
for j in range(1,4) for j in range(1,4)
for i in range(1,a:width) for i in range(1,a:width)
let c.=nr2char(screenchar(j, i)) let c.=nr2char(screenchar(j, i))
endfor endfor
let c.="\n" let c.="\n"
endfor endfor
return c return c
endfu endfu
fu! DoRecordScreen() fu! DoRecordScreen()
wincmd l wincmd l
$put =printf(\"\n%s\", g:test) $put =printf(\"\n%s\", g:test)
$put =g:line $put =g:line
wincmd p wincmd p
endfu endfu
]]) ]])
feed_command('let g:test="Test 1: set linebreak"') feed_command('let g:test="Test 1: set linebreak"')

View File

@@ -8,6 +8,8 @@ local clear, expect = helpers.clear, helpers.expect
describe('linebreak', function() describe('linebreak', function()
setup(clear) setup(clear)
-- luacheck: ignore 621 (Indentation)
-- luacheck: ignore 613 (Trailing whitespaces in a string)
it('is working', function() it('is working', function()
source([[ source([[
set wildchar=^E set wildchar=^E
@@ -18,20 +20,20 @@ describe('linebreak', function()
norm! zt norm! zt
set ts=4 sw=4 sts=4 linebreak sbr=+ wrap set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
fu! ScreenChar(width, lines) fu! ScreenChar(width, lines)
let c='' let c=''
for j in range(1,a:lines) for j in range(1,a:lines)
for i in range(1,a:width) for i in range(1,a:width)
let c.=nr2char(screenchar(j, i)) let c.=nr2char(screenchar(j, i))
endfor endfor
let c.="\n" let c.="\n"
endfor endfor
return c return c
endfu endfu
fu! DoRecordScreen() fu! DoRecordScreen()
wincmd l wincmd l
$put =printf(\"\n%s\", g:test) $put =printf(\"\n%s\", g:test)
$put =g:line $put =g:line
wincmd p wincmd p
endfu endfu
" "
let g:test ="Test 1: set linebreak + set list + fancy listchars" let g:test ="Test 1: set linebreak + set list + fancy listchars"
@@ -148,22 +150,22 @@ describe('linebreak', function()
-- Assert buffer contents. -- Assert buffer contents.
expect([[ expect([[
abcdef hijklmn pqrstuvwxyz 1060ABCDEFGHIJKLMNOP abcdef hijklmn pqrstuvwxyz 1060ABCDEFGHIJKLMNOP
Test 1: set linebreak + set list + fancy listchars Test 1: set linebreak + set list + fancy listchars
▕———abcdef ▕———abcdef
+hijklmn▕——— +hijklmn▕———
+pqrstuvwxyz␣1060ABC +pqrstuvwxyz␣1060ABC
+DEFGHIJKLMNOPˑ¶ +DEFGHIJKLMNOPˑ¶
Test 2: set nolinebreak list Test 2: set nolinebreak list
▕———abcdef hijklmn▕— ▕———abcdef hijklmn▕—
+pqrstuvwxyz␣1060ABC +pqrstuvwxyz␣1060ABC
+DEFGHIJKLMNOPˑ¶ +DEFGHIJKLMNOPˑ¶
*mask = nil; *mask = nil;
Test 3: set linebreak nolist Test 3: set linebreak nolist
*mask = nil; *mask = nil;
~ ~
@@ -177,7 +179,7 @@ describe('linebreak', function()
#define MSG_MODE_CONSOLE 2 #define MSG_MODE_CONSOLE 2
#define MSG_MODE_FILE_AND_CONSOLE 3 #define MSG_MODE_FILE_AND_CONSOLE 3
#define MSG_MODE_FILE_THEN_CONSOLE 4 #define MSG_MODE_FILE_THEN_CONSOLE 4
Test 4: set linebreak list listchars and concealing Test 4: set linebreak list listchars and concealing
#define ABCDE>-->---1 #define ABCDE>-->---1
#define >CDEF>-->---1 #define >CDEF>-->---1
@@ -187,7 +189,7 @@ describe('linebreak', function()
#define >_CONSOLE>---------->---2 #define >_CONSOLE>---------->---2
#define >_FILE_AND_CONSOLE>---------3 #define >_FILE_AND_CONSOLE>---------3
bbeeeeee ; some text bbeeeeee ; some text
Test 5: set linebreak list listchars and concealing part2 Test 5: set linebreak list listchars and concealing part2
eeeeee>--->-;>some text eeeeee>--->-;>some text
Test 6: Screenattributes for comment Test 6: Screenattributes for comment
@@ -196,10 +198,10 @@ describe('linebreak', function()
Attribut 0 and 1 and 3 and 5 are different! Attribut 0 and 1 and 3 and 5 are different!
Test 8: set linebreak with visual block mode and v_b_A and selection=exclusive and multibyte char Test 8: set linebreak with visual block mode and v_b_A and selection=exclusive and multibyte char
long line: foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar TARGETÃx' at end long line: foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar TARGETÃx' at end
a b c a b c
a b c a b c
Test 9: a multibyte sign and colorcolumn Test 9: a multibyte sign and colorcolumn
a b c¶ a b c¶

View File

@@ -7,6 +7,7 @@ describe('marks', function()
clear() clear()
end) end)
-- luacheck: ignore 621 (Indentation)
it('restores a deleted mark after delete-undo-redo-undo', function() it('restores a deleted mark after delete-undo-redo-undo', function()
insert([[ insert([[

View File

@@ -21,7 +21,7 @@ describe('set', function()
$put =&path]]) $put =&path]])
expect([[ expect([[
foo,,bar]]) foo,,bar]])
end) end)
end) end)

View File

@@ -172,9 +172,9 @@ describe('packadd', function()
helptags ALL helptags ALL
let tags1 = readfile(docdir1 . '/tags') let tags1 = readfile(docdir1 . '/tags')
call assert_true(tags1[0] =~ 'look-here') call assert_true(tags1[0] =~ 'look-here')
let tags2 = readfile(docdir2 . '/tags') let tags2 = readfile(docdir2 . '/tags')
call assert_true(tags2[0] =~ 'look-away') call assert_true(tags2[0] =~ 'look-away')
endfunc endfunc

View File

@@ -53,11 +53,11 @@ describe("'tagcase' option", function()
-- Verify that the correct number of matching tags is found for all values of -- Verify that the correct number of matching tags is found for all values of
-- 'ignorecase' and global and local values 'tagcase', in all combinations. -- 'ignorecase' and global and local values 'tagcase', in all combinations.
insert([[ insert([[
Foo Foo
Bar Bar
foo foo
end text]]) end text]])
source([[ source([[
@@ -70,7 +70,7 @@ describe("'tagcase' option", function()
endfor endfor
endfor endfor
endfor endfor
1,/^end text$/d]]) 1,/^end text$/d]])
expect([[ expect([[

View File

@@ -54,6 +54,7 @@ describe('utf8', function()
eq(1, eval('strchars("\\u20dd", 1)')) eq(1, eval('strchars("\\u20dd", 1)'))
end) end)
-- luacheck: ignore 613 (Trailing whitespace in a string)
it('customlist completion', function() it('customlist completion', function()
source([[ source([[
function! CustomComplete1(lead, line, pos) function! CustomComplete1(lead, line, pos)