patch 8.1.0337: :file fails in quickfix command
Problem: :file fails in quickfix command.
Solution: Allow :file without argument when curbuf_lock is set. (Jason
Franklin)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index c8a1c3f..5b53785 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2039,12 +2039,15 @@
errormsg = (char_u *)_(get_text_locked_msg());
goto doend;
}
+
/* Disallow editing another buffer when "curbuf_lock" is set.
- * Do allow ":edit" (check for argument later).
- * Do allow ":checktime" (it's postponed). */
+ * Do allow ":checktime" (it is postponed).
+ * Do allow ":edit" (check for an argument later).
+ * Do allow ":file" with no arguments (check for an argument later). */
if (!(ea.argt & CMDWIN)
- && ea.cmdidx != CMD_edit
&& ea.cmdidx != CMD_checktime
+ && ea.cmdidx != CMD_edit
+ && ea.cmdidx != CMD_file
&& !IS_USER_CMDIDX(ea.cmdidx)
&& curbuf_locked())
goto doend;
@@ -2130,6 +2133,10 @@
else
ea.arg = skipwhite(p);
+ // ":file" cannot be run with an argument when "curbuf_lock" is set
+ if (ea.cmdidx == CMD_file && *ea.arg != NUL && curbuf_locked())
+ goto doend;
+
/*
* Check for "++opt=val" argument.
* Must be first, allow ":w ++enc=utf8 !cmd"
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 6063fd6..36982c2 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -2485,6 +2485,35 @@
call test_override('starting', 0)
endfunc
+" Check that ":file" without an argument is possible even when "curbuf_lock"
+" is set.
+func Test_file_from_copen()
+ " Works without argument.
+ augroup QF_Test
+ au!
+ au FileType qf file
+ augroup END
+ copen
+
+ augroup QF_Test
+ au!
+ augroup END
+ cclose
+
+ " Fails with argument.
+ augroup QF_Test
+ au!
+ au FileType qf call assert_fails(':file foo', 'E788')
+ augroup END
+ copen
+ augroup QF_Test
+ au!
+ augroup END
+ cclose
+
+ augroup! QF_Test
+endfunction
+
func Test_resize_from_copen()
augroup QF_Test
au!
diff --git a/src/version.c b/src/version.c
index baf005e..12c86aa 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 337,
+/**/
336,
/**/
335,