Hi,
I was running a function, (say write()) to call redir to write in a
file and then another function, (say read()) to call readfile to read
the last entry from that same file, when I discovered that in every
second call to those functions, readfile couldn't read the last line of
the file, although the redirection was successful and the file was
written properly.
After some tests I was able to create a reproducible example; below is
that function.
function! Test(...)
let list = [0, 1]
let nr = 1
while nr < 10
let len = len(list)
echo "\n"
redir >> test
echo join(list)
redir END
let nr += 1
call add(list, nr)
if a:0 != 0
exec a:1.'sleep'
endif
let lastline = join(readfile('test')[-1:])
let lenlastline = len(split(lastline))
if len != lenlastline
echo lastline
echohl Error
echo "this pair is different"
echohl NONE
break
endif
echo lastline
endwhile
endfunction
The function takes an optional argument to add a delay (between writing
and reading).
Now double (at least) run this function and observe (if it is reproducible)
in that in every second call to the function, at least in one pair of lines,
the first line is different than the second.
Try then:
echo readfile('test')[-1:]
readfile cannot read the last line, while the line was written, check
this with:
echo system('tail -1 test')
If this test is reproducible, is there an explanation?
VIM - Vi IMproved 7.2a BETA (2008 Jun 24, compiled Jul 10 2008 13:40:07)
Included patches: 1-19
Huge version in Linux 2.6.25.10, with (GNU libc) 2.7.
Regards,
Ag.
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---