Tests for tab pages STARTTEST :so small.vim :" Simple test for opening and closing a tab page :tabnew :let nr = tabpagenr() :q :call append(line('$'), 'tab page ' . nr) :unlet nr :" :" Open three tab pages and use ":tabdo" :0tabnew :1tabnew :888tabnew :tabdo call append(line('$'), 'this is tab page ' . tabpagenr()) :tabclose! 2 :tabrewind :let line1 = getline('$') :undo :q :tablast :let line2 = getline('$') :q! :call append(line('$'), line1) :call append(line('$'), line2) :unlet line1 line2 :" :" Test for settabvar() and gettabvar() functions. Open a new tab page and :" set 3 variables to a number, string and a list. Verify that the variables :" are correctly set. :tabnew :tabfirst :call settabvar(2, 'val_num', 100) :call settabvar(2, 'val_str', 'SetTabVar test') :call settabvar(2, 'val_list', ['red', 'blue', 'green']) :" :let test_status = 'gettabvar: fail' :if gettabvar(2, 'val_num') == 100 && gettabvar(2, 'val_str') == 'SetTabVar test') && gettabvar(2, 'val_list') == ['red', 'blue', 'green']) : let test_status = 'gettabvar: pass' :endif :call append(line('$'), test_status) :" :tabnext 2 :let test_status = 'settabvar: fail' :if t:val_num == 100 && t:val_str == 'SetTabVar test' && t:val_list == ['red', 'blue', 'green'] : let test_status = 'settabvar: pass' :endif :tabclose :call append(line('$'), test_status) :" :if has('gui') || has('clientserver') :" Test for ":tab drop exist-file" to keep current window. :sp test1 :tab drop test1 :let test_status = 'tab drop 1: fail' :if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1 : let test_status = 'tab drop 1: pass' :endif :close :call append(line('$'), test_status) :" :" :" Test for ":tab drop new-file" to keep current window of tabpage 1. :split :tab drop newfile :let test_status = 'tab drop 2: fail' :if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1 : let test_status = 'tab drop 2: pass' :endif :tabclose :q :call append(line('$'), test_status) :" :" :" Test for ":tab drop multi-opend-file" to keep current tabpage and window. :new test1 :tabnew :new test1 :tab drop test1 :let test_status = 'tab drop 3: fail' :if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1 : let test_status = 'tab drop 3: pass' :endif :tabclose :q :call append(line('$'), test_status) :else :" :drop not supported :call append(line('$'), 'tab drop 1: pass') :call append(line('$'), 'tab drop 2: pass') :call append(line('$'), 'tab drop 3: pass') :endif :" :" :for i in range(9) | tabnew | endfor 1gt Go=tabpagenr()  :tabmove 5 i=tabpagenr()  :tabmove -2 i=tabpagenr()  :tabmove +4 i=tabpagenr()  :tabmove i=tabpagenr()  :tabmove -20 i=tabpagenr()  :tabmove +20 i=tabpagenr()  :3tabmove i=tabpagenr()  :7tabmove 5 i=tabpagenr()  :let a='No error caught.' :try :tabmove foo :catch E474 :let a='E474 caught.' :endtry i=a  :" :" :/^Results/,$w! test.out :qa! ENDTEST Results: