patch 8.0.0677: setting 'filetype' may switch buffers
Problem: Setting 'filetype' internally may cause the current buffer and
window to change unexpectedly.
Solution: Set curbuf_lock. (closes #1734)
diff --git a/src/quickfix.c b/src/quickfix.c
index 40b6fe9..084d82e 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3425,6 +3425,9 @@
/* Set the 'filetype' to "qf" each time after filling the buffer.
* This resembles reading a file into a buffer, it's more logical when
* using autocommands. */
+#ifdef FEAT_AUTOCMD
+ ++curbuf_lock;
+#endif
set_option_value((char_u *)"ft", 0L, (char_u *)"qf", OPT_LOCAL);
curbuf->b_p_ma = FALSE;
@@ -3435,6 +3438,7 @@
apply_autocmds(EVENT_BUFWINENTER, (char_u *)"quickfix", NULL,
FALSE, curbuf);
keep_filetype = FALSE;
+ --curbuf_lock;
#endif
/* make sure it will be redrawn */
redraw_curbuf_later(NOT_VALID);