Mercurial > vim
comparison src/testdir/test_quickfix.vim @ 8702:39d6e4f2f748 v7.4.1640
commit https://github.com/vim/vim/commit/ffec3c53496d49668669deabc0724ec78e2274fd
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Mar 23 20:55:42 2016 +0100
patch 7.4.1640
Problem: Crash when an autocommand changes a quickfix list. (Dominique)
Solution: Check wether an entry is still valid. (Yegappan Lakshmanan,
Hirohito Higashi)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 23 Mar 2016 21:00:05 +0100 |
parents | ec78ecf15de7 |
children | 4ce26276caeb |
comparison
equal
deleted
inserted
replaced
8701:e688797c41ff | 8702:39d6e4f2f748 |
---|---|
502 augroup testgroup | 502 augroup testgroup |
503 au! | 503 au! |
504 autocmd BufReadCmd t call R(expand("<amatch>")) | 504 autocmd BufReadCmd t call R(expand("<amatch>")) |
505 augroup END | 505 augroup END |
506 | 506 |
507 function R(n) | 507 function! R(n) |
508 quit | 508 quit |
509 endfunc | 509 endfunc |
510 | 510 |
511 new | 511 new |
512 let q = [] | 512 let q = [] |
635 let &efm = save_efm | 635 let &efm = save_efm |
636 call delete('Xerrorfile1') | 636 call delete('Xerrorfile1') |
637 call delete('Xerrorfile2') | 637 call delete('Xerrorfile2') |
638 call delete('Xtestfile') | 638 call delete('Xtestfile') |
639 endfunction | 639 endfunction |
640 | |
641 function XquickfixChangedByAutocmd(cchar) | |
642 let Xolder = a:cchar . 'older' | |
643 let Xgetexpr = a:cchar . 'getexpr' | |
644 let Xrewind = a:cchar . 'rewind' | |
645 if a:cchar == 'c' | |
646 let Xsetlist = 'setqflist(' | |
647 let ErrorNr = 'E925' | |
648 function! ReadFunc() | |
649 colder | |
650 cgetexpr [] | |
651 endfunc | |
652 else | |
653 let Xsetlist = 'setloclist(0,' | |
654 let ErrorNr = 'E926' | |
655 function! ReadFunc() | |
656 lolder | |
657 lgetexpr [] | |
658 endfunc | |
659 endif | |
660 | |
661 augroup testgroup | |
662 au! | |
663 autocmd BufReadCmd t call ReadFunc() | |
664 augroup END | |
665 | |
666 bwipe! | |
667 let words = [ "a", "b" ] | |
668 let qflist = [] | |
669 for word in words | |
670 call add(qflist, {'filename': 't'}) | |
671 exec "call " . Xsetlist . "qflist, '')" | |
672 endfor | |
673 exec "call assert_fails('" . Xrewind . "', '" . ErrorNr . ":')" | |
674 | |
675 augroup! testgroup | |
676 endfunc | |
677 | |
678 function Test_quickfix_was_changed_by_autocmd() | |
679 call XquickfixChangedByAutocmd('c') | |
680 call XquickfixChangedByAutocmd('l') | |
681 endfunction |