Mercurial > vim
view src/testdir/test_winbuf_close.vim @ 32464:f2138180c6f0
patch 9.0.1563: GTK3: window manager resize hints are incomplete
Commit: https://github.com/vim/vim/commit/c0da540466c89e388e7a15a12bab2f9fc42d9671
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue May 16 22:15:51 2023 +0100
patch 9.0.1563: GTK3: window manager resize hints are incomplete
Problem: GTK3: window manager resize hints are incomplete.
Solution: Use NULL for second argument of gtk_window_set_geometry_hints().
(Kenny Stauffer closes #11055)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 17 May 2023 00:00:04 +0200 |
parents | dbec60b8c253 |
children |
line wrap: on
line source
" Test for commands that close windows and/or buffers: " :quit " :close " :hide " :only " :sall " :all " :ball " :buf " :edit " func Test_winbuf_close() enew | only call writefile(['testtext 1'], 'Xtest1', 'D') call writefile(['testtext 2'], 'Xtest2', 'D') call writefile(['testtext 3'], 'Xtest3', 'D') next! Xtest1 Xtest2 call setline(1, 'testtext 1 1') " test for working :n when hidden set set hidden next call assert_equal('Xtest2', bufname('%')) " test for failing :rew when hidden not set set nohidden call setline(1, 'testtext 2 2') call assert_fails('rewind', 'E37:') call assert_equal('Xtest2', bufname('%')) call assert_equal('testtext 2 2', getline(1)) " test for working :rew when hidden set set hidden rewind call assert_equal('Xtest1', bufname('%')) call assert_equal('testtext 1 1', getline(1)) " test for :all keeping a buffer when it's modified set nohidden call setline(1, 'testtext 1 1 1') split next Xtest2 Xtest3 all 1wincmd w call assert_equal('Xtest1', bufname('%')) call assert_equal('testtext 1 1 1', getline(1)) " test abandoning changed buffer, should be unloaded even when 'hidden' set set hidden call setline(1, 'testtext 1 1 1 1') quit! call assert_equal('Xtest2', bufname('%')) call assert_equal('testtext 2 2', getline(1)) unhide call assert_equal('Xtest2', bufname('%')) call assert_equal('testtext 2 2', getline(1)) " test ":hide" hides anyway when 'hidden' not set set nohidden call setline(1, 'testtext 2 2 2') hide call assert_equal('Xtest3', bufname('%')) call assert_equal('testtext 3', getline(1)) " test ":edit" failing in modified buffer when 'hidden' not set call setline(1, 'testtext 3 3') call assert_fails('edit Xtest1', 'E37:') call assert_equal('Xtest3', bufname('%')) call assert_equal('testtext 3 3', getline(1)) " test ":edit" working in modified buffer when 'hidden' set set hidden edit Xtest1 call assert_equal('Xtest1', bufname('%')) call assert_equal('testtext 1', getline(1)) " test ":close" not hiding when 'hidden' not set in modified buffer split Xtest3 set nohidden call setline(1, 'testtext 3 3 3') call assert_fails('close', 'E37:') call assert_equal('Xtest3', bufname('%')) call assert_equal('testtext 3 3 3', getline(1)) " test ":close!" does hide when 'hidden' not set in modified buffer; call setline(1, 'testtext 3 3 3 3') close! call assert_equal('Xtest1', bufname('%')) call assert_equal('testtext 1', getline(1)) set nohidden " test ":all!" hides changed buffer split Xtest4 call setline(1, 'testtext 4') all! 1wincmd w call assert_equal('Xtest2', bufname('%')) call assert_equal('testtext 2 2 2', getline(1)) " test ":q!" and hidden buffer. bwipe! Xtest1 Xtest2 Xtest3 Xtest4 split Xtest1 wincmd w bwipe! set modified bot split Xtest2 set modified bot split Xtest3 set modified wincmd t hide call assert_equal('Xtest2', bufname('%')) quit! call assert_equal('Xtest3', bufname('%')) call assert_fails('silent! quit!', 'E37:') call assert_equal('Xtest1', bufname('%')) endfunc " Test that ":close" will respect 'winfixheight' when possible. func Test_winfixheight_on_close() set nosplitbelow nosplitright split | split | vsplit $wincmd w setlocal winfixheight let l:height = winheight(0) 3close call assert_equal(l:height, winheight(0)) %bwipeout! setlocal nowinfixheight splitbelow& splitright& endfunc " Test that ":close" will respect 'winfixwidth' when possible. func Test_winfixwidth_on_close() set nosplitbelow nosplitright vsplit | vsplit | split $wincmd w setlocal winfixwidth let l:width = winwidth(0) 3close call assert_equal(l:width, winwidth(0)) %bwipeout! setlocal nowinfixwidth splitbelow& splitright& endfunction " Test that 'winfixheight' will be respected even there is non-leaf frame func Test_winfixheight_non_leaf_frame() vsplit botright 11new let l:wid = win_getid() setlocal winfixheight call assert_equal(11, winheight(l:wid)) botright new bwipe! call assert_equal(11, winheight(l:wid)) %bwipe! endf " Test that 'winfixwidth' will be respected even there is non-leaf frame func Test_winfixwidth_non_leaf_frame() split topleft 11vnew let l:wid = win_getid() setlocal winfixwidth call assert_equal(11, winwidth(l:wid)) topleft new bwipe! call assert_equal(11, winwidth(l:wid)) %bwipe! endf func Test_tabwin_close() enew let l:wid = win_getid() tabedit call win_execute(l:wid, 'close') " Should not crash. call assert_true(v:true) " This tests closing a window in another tab, while leaving the tab open " i.e. two windows in another tab. tabedit let w:this_win = 42 new let othertab_wid = win_getid() tabprevious call win_execute(othertab_wid, 'q') " drawing the tabline helps check that the other tab's windows and buffers " are still valid redrawtabline " but to be certain, ensure we can focus the other tab too tabnext call assert_equal(42, w:this_win) bwipe! endfunc " Test when closing a split window (above/below) restores space to the window " below when 'noequalalways' and 'splitright' are set. func Test_window_close_splitright_noequalalways() set noequalalways set splitright new let w1 = win_getid() new let w2 = win_getid() execute "normal \<c-w>b" let h = winheight(0) let w = win_getid() new q call assert_equal(h, winheight(0), "Window height does not match eight before opening and closing another window") call assert_equal(w, win_getid(), "Did not return to original window after opening and closing a window") endfunc " vim: shiftwidth=2 sts=2 expandtab