mirror of
https://github.com/neovim/neovim.git
synced 2025-09-16 00:08:19 +00:00
vim-patch:8.1.2220: :cfile does not abort like other quickfix commands
Problem: :cfile does not abort like other quickfix commands.
Solution: Abort when desired. Add tests for aborting. (Yegappan Lakshmanan,
closes vim/vim#5121)
6a0cc916bd
This commit is contained in:
@@ -4152,10 +4152,15 @@ void ex_cfile(exarg_T *eap)
|
||||
case CMD_laddfile: au_name = (char_u *)"laddfile"; break;
|
||||
default: break;
|
||||
}
|
||||
if (au_name != NULL)
|
||||
apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf);
|
||||
if (*eap->arg != NUL)
|
||||
if (au_name != NULL
|
||||
&& apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, false, curbuf)) {
|
||||
if (aborting()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (*eap->arg != NUL) {
|
||||
set_string_option_direct((char_u *)"ef", -1, eap->arg, OPT_FREE, 0);
|
||||
}
|
||||
|
||||
char_u *enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
|
||||
|
||||
|
@@ -2515,7 +2515,7 @@ func Test_file_from_copen()
|
||||
cclose
|
||||
|
||||
augroup! QF_Test
|
||||
endfunction
|
||||
endfunc
|
||||
|
||||
func Test_resize_from_copen()
|
||||
augroup QF_Test
|
||||
@@ -2534,6 +2534,94 @@ func Test_resize_from_copen()
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
" Test for aborting quickfix commands using QuickFixCmdPre
|
||||
func Xtest_qfcmd_abort(cchar)
|
||||
call s:setup_commands(a:cchar)
|
||||
|
||||
call g:Xsetlist([], 'f')
|
||||
|
||||
" cexpr/lexpr
|
||||
let e = ''
|
||||
try
|
||||
Xexpr ["F1:10:Line10", "F2:20:Line20"]
|
||||
catch /.*/
|
||||
let e = v:exception
|
||||
endtry
|
||||
call assert_equal('AbortCmd', e)
|
||||
call assert_equal(0, g:Xgetlist({'nr' : '$'}).nr)
|
||||
|
||||
" cfile/lfile
|
||||
call writefile(["F1:10:Line10", "F2:20:Line20"], 'Xfile1')
|
||||
let e = ''
|
||||
try
|
||||
Xfile Xfile1
|
||||
catch /.*/
|
||||
let e = v:exception
|
||||
endtry
|
||||
call assert_equal('AbortCmd', e)
|
||||
call assert_equal(0, g:Xgetlist({'nr' : '$'}).nr)
|
||||
call delete('Xfile1')
|
||||
|
||||
" cgetbuffer/lgetbuffer
|
||||
enew!
|
||||
call append(0, ["F1:10:Line10", "F2:20:Line20"])
|
||||
let e = ''
|
||||
try
|
||||
Xgetbuffer
|
||||
catch /.*/
|
||||
let e = v:exception
|
||||
endtry
|
||||
call assert_equal('AbortCmd', e)
|
||||
call assert_equal(0, g:Xgetlist({'nr' : '$'}).nr)
|
||||
enew!
|
||||
|
||||
" vimgrep/lvimgrep
|
||||
let e = ''
|
||||
try
|
||||
Xvimgrep /func/ test_quickfix.vim
|
||||
catch /.*/
|
||||
let e = v:exception
|
||||
endtry
|
||||
call assert_equal('AbortCmd', e)
|
||||
call assert_equal(0, g:Xgetlist({'nr' : '$'}).nr)
|
||||
|
||||
" helpgrep/lhelpgrep
|
||||
let e = ''
|
||||
try
|
||||
Xhelpgrep quickfix
|
||||
catch /.*/
|
||||
let e = v:exception
|
||||
endtry
|
||||
call assert_equal('AbortCmd', e)
|
||||
call assert_equal(0, g:Xgetlist({'nr' : '$'}).nr)
|
||||
|
||||
" grep/lgrep
|
||||
if has('unix')
|
||||
let e = ''
|
||||
try
|
||||
silent Xgrep func test_quickfix.vim
|
||||
catch /.*/
|
||||
let e = v:exception
|
||||
endtry
|
||||
call assert_equal('AbortCmd', e)
|
||||
call assert_equal(0, g:Xgetlist({'nr' : '$'}).nr)
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func Test_qfcmd_abort()
|
||||
augroup QF_Test
|
||||
au!
|
||||
autocmd QuickFixCmdPre * throw "AbortCmd"
|
||||
augroup END
|
||||
|
||||
call Xtest_qfcmd_abort('c')
|
||||
call Xtest_qfcmd_abort('l')
|
||||
|
||||
augroup QF_Test
|
||||
au!
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
" Tests for the quickfix buffer b:changedtick variable
|
||||
func Xchangedtick_tests(cchar)
|
||||
call s:setup_commands(a:cchar)
|
||||
@@ -3699,3 +3787,5 @@ func Test_viscol()
|
||||
set efm&
|
||||
call delete('Xfile1')
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
Reference in New Issue
Block a user