Mercurial > vim
view src/testdir/test_getcwd.in @ 11416:32aed0993813 v8.0.0592
patch 8.0.0592: if a job writes to a buffer screen is not updated
commit https://github.com/vim/vim/commit/29ae377ea7039874337bc79ace9ab2b37b9056e5
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 30 19:39:39 2017 +0200
patch 8.0.0592: if a job writes to a buffer screen is not updated
Problem: If a job writes to a buffer and the user is typing a command, the
screen isn't updated. When a message is displayed the changed
buffer may cause it to be cleared. (Ramel Eshed)
Solution: Update the screen and then the command line if the screen didn't
scroll. Avoid inserting screen lines, as it clears any message.
Update the status line when the buffer changed.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 30 Apr 2017 19:45:03 +0200 |
parents | a539e9e4e534 |
children |
line wrap: on
line source
Tests for getcwd(), haslocaldir(), and :lcd vim: set ft=vim : STARTTEST :so small.vim :" Do all test in a separate window to avoid E211 when we recursively :" delete the Xtopdir directory during cleanup :" :" This will cause a few errors, do it silently. :set visualbell :set nocp viminfo+=nviminfo :" :" On windows a swapfile in Xtopdir prevents it from being cleaned up. :set noswapfile :" :function! GetCwdInfo(win, tab) : let tab_changed = 0 : let mod = ":t" : if a:tab > 0 && a:tab != tabpagenr() : let tab_changed = 1 : exec "tabnext " . a:tab : endif : let bufname = fnamemodify(bufname(winbufnr(a:win)), mod) : if tab_changed : tabprevious : endif : if a:win == 0 && a:tab == 0 : let dirname = fnamemodify(getcwd(), mod) : let lflag = haslocaldir() : elseif a:tab == 0 : let dirname = fnamemodify(getcwd(a:win), mod) : let lflag = haslocaldir(a:win) : else : let dirname = fnamemodify(getcwd(a:win, a:tab), mod) : let lflag = haslocaldir(a:win, a:tab) : endif : return bufname . ' ' . dirname . ' ' . lflag :endfunction :" On windows a stale "Xtopdir" directory may exist, remove it so that :" we start from a clean state. :call delete("Xtopdir", "rf") :let r=[] :new :let cwd=getcwd() :let test_out = cwd . '/test.out' :call mkdir('Xtopdir') :cd Xtopdir :call mkdir('Xdir1') :call mkdir('Xdir2') :call mkdir('Xdir3') :new a :new b :new c :3wincmd w :lcd Xdir1 :call add(r, GetCwdInfo(0, 0)) :wincmd W :call add(r, GetCwdInfo(0, 0)) :wincmd W :lcd Xdir3 :call add(r, GetCwdInfo(0, 0)) :call add(r, GetCwdInfo(bufwinnr("a"), 0)) :call add(r, GetCwdInfo(bufwinnr("b"), 0)) :call add(r, GetCwdInfo(bufwinnr("c"), 0)) :wincmd W :call add(r, GetCwdInfo(bufwinnr("a"), tabpagenr())) :call add(r, GetCwdInfo(bufwinnr("b"), tabpagenr())) :call add(r, GetCwdInfo(bufwinnr("c"), tabpagenr())) :" :tabnew x :new y :new z :3wincmd w :call add(r, GetCwdInfo(0, 0)) :wincmd W :lcd Xdir2 :call add(r, GetCwdInfo(0, 0)) :wincmd W :lcd Xdir3 :call add(r, GetCwdInfo(0, 0)) :call add(r, GetCwdInfo(bufwinnr("x"), 0)) :call add(r, GetCwdInfo(bufwinnr("y"), 0)) :call add(r, GetCwdInfo(bufwinnr("z"), 0)) :let tp_nr = tabpagenr() :tabrewind :call add(r, GetCwdInfo(3, tp_nr)) :call add(r, GetCwdInfo(2, tp_nr)) :call add(r, GetCwdInfo(1, tp_nr)) :" :call writefile(r, test_out, "a") :q :exec "cd " . cwd :call delete("Xtopdir", "rf") :qa! ENDTEST