patch 9.1.0231: Filetype may be undetected when SwapExists sets ft in other buf

Problem:  Filetype may be undetected when a SwapExists autocommand sets
          filetype in another buffer.
Solution: Make filetype detection state buffer-specific.  Also fix a
          similar problem for 'modified' (zeertzjq).

closes: #14344

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/autocmd.c b/src/autocmd.c
index 8a7e607..9632c74 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -2258,7 +2258,7 @@
 	    saveRedobuff(&save_redo);
 	    did_save_redobuff = TRUE;
 	}
-	did_filetype = keep_filetype;
+	curbuf->b_did_filetype = curbuf->b_keep_filetype;
     }
 
     /*
@@ -2270,7 +2270,7 @@
 
     // Remember that FileType was triggered.  Used for did_filetype().
     if (event == EVENT_FILETYPE)
-	did_filetype = TRUE;
+	curbuf->b_did_filetype = TRUE;
 
     tail = gettail(fname);
 
@@ -2379,7 +2379,7 @@
 	restore_search_patterns();
 	if (did_save_redobuff)
 	    restoreRedobuff(&save_redo);
-	did_filetype = FALSE;
+	curbuf->b_did_filetype = FALSE;
 	while (au_pending_free_buf != NULL)
 	{
 	    buf_T *b = au_pending_free_buf->b_next;
@@ -2421,7 +2421,7 @@
 	aubuflocal_remove(buf);
 
     if (retval == OK && event == EVENT_FILETYPE)
-	au_did_filetype = TRUE;
+	curbuf->b_au_did_filetype = TRUE;
 
     return retval;
 }