mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:9.1.0216: Error on exit with EXITFREE and 'winfixbuf' (#28070)
Problem: Error on exit with EXITFREE and 'winfixbuf'.
Solution: Handle DT_FREE before checking for 'winfixbuf'.
(zeertzjq)
closes: vim/vim#14314
620e85265c
This commit is contained in:
parent
2dea0ea820
commit
67596c42eb
@ -290,10 +290,6 @@ void set_buflocal_tfu_callback(buf_T *buf)
|
|||||||
/// @param verbose print "tag not found" message
|
/// @param verbose print "tag not found" message
|
||||||
void do_tag(char *tag, int type, int count, int forceit, bool verbose)
|
void do_tag(char *tag, int type, int count, int forceit, bool verbose)
|
||||||
{
|
{
|
||||||
if (postponed_split == 0 && !check_can_set_curbuf_forceit(forceit)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
taggy_T *tagstack = curwin->w_tagstack;
|
taggy_T *tagstack = curwin->w_tagstack;
|
||||||
int tagstackidx = curwin->w_tagstackidx;
|
int tagstackidx = curwin->w_tagstackidx;
|
||||||
int tagstacklen = curwin->w_tagstacklen;
|
int tagstacklen = curwin->w_tagstacklen;
|
||||||
@ -320,11 +316,6 @@ void do_tag(char *tag, int type, int count, int forceit, bool verbose)
|
|||||||
static char **matches = NULL;
|
static char **matches = NULL;
|
||||||
static int flags;
|
static int flags;
|
||||||
|
|
||||||
if (tfu_in_use) {
|
|
||||||
emsg(_(e_cannot_modify_tag_stack_within_tagfunc));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef EXITFREE
|
#ifdef EXITFREE
|
||||||
if (type == DT_FREE) {
|
if (type == DT_FREE) {
|
||||||
// remove the list of matches
|
// remove the list of matches
|
||||||
@ -334,6 +325,15 @@ void do_tag(char *tag, int type, int count, int forceit, bool verbose)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (tfu_in_use) {
|
||||||
|
emsg(_(e_cannot_modify_tag_stack_within_tagfunc));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (postponed_split == 0 && !check_can_set_curbuf_forceit(forceit)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (type == DT_HELP) {
|
if (type == DT_HELP) {
|
||||||
type = DT_TAG;
|
type = DT_TAG;
|
||||||
no_regexp = true;
|
no_regexp = true;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
" Test 'winfixbuf'
|
" Test 'winfixbuf'
|
||||||
|
|
||||||
source check.vim
|
source check.vim
|
||||||
|
source shared.vim
|
||||||
|
|
||||||
" Find the number of open windows in the current tab
|
" Find the number of open windows in the current tab
|
||||||
func s:get_windows_count()
|
func s:get_windows_count()
|
||||||
@ -3427,4 +3428,15 @@ func Test_bufdo_cnext_splitwin_fails()
|
|||||||
set winminheight&vim winheight&vim
|
set winminheight&vim winheight&vim
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test that exiting with 'winfixbuf' and EXITFREE doesn't cause an error.
|
||||||
|
func Test_exitfree_no_error()
|
||||||
|
let lines =<< trim END
|
||||||
|
set winfixbuf
|
||||||
|
qall!
|
||||||
|
END
|
||||||
|
call writefile(lines, 'Xwfb_exitfree', 'D')
|
||||||
|
call assert_notmatch('E1513:',
|
||||||
|
\ system(GetVimCommandClean() .. ' -X -S Xwfb_exitfree'))
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
Loading…
Reference in New Issue
Block a user