diff --git a/src/main.c b/src/main.c
index 52bbafe..8c56c17 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1049,24 +1049,33 @@
 }
 
 /*
+ * Return whether currently it is safe, assuming it was safe before (high level
+ * state didn't change).
+ */
+    static int
+is_safe_now(void)
+{
+    return stuff_empty()
+	&& typebuf.tb_len == 0
+	&& scriptin[curscript] == NULL
+	&& !global_busy;
+}
+
+/*
  * Trigger SafeState if currently in s safe state, that is "safe" is TRUE and
  * there is no typeahead.
  */
     void
 may_trigger_safestate(int safe)
 {
-    int is_safe = safe
-		    && stuff_empty()
-		    && typebuf.tb_len == 0
-		    && scriptin[curscript] == NULL
-		    && !global_busy;
+    int is_safe = safe && is_safe_now();
 
 #ifdef FEAT_JOB_CHANNEL
     if (was_safe != is_safe)
 	// Only log when the state changes, otherwise it happens at nearly
 	// every key stroke.
-	ch_log(NULL, is_safe ? "Start triggering SafeState"
-						: "Stop triggering SafeState");
+	ch_log(NULL, is_safe ? "SafeState: Start triggering"
+					       : "SafeState: Stop triggering");
 #endif
     if (is_safe)
 	apply_autocmds(EVENT_SAFESTATE, NULL, NULL, FALSE, curbuf);
@@ -1079,15 +1088,21 @@
  * may_trigger_safestate().
  */
     void
-state_no_longer_safe(void)
+state_no_longer_safe(char *reason UNUSED)
 {
 #ifdef FEAT_JOB_CHANNEL
     if (was_safe)
-	ch_log(NULL, "safe state reset");
+	ch_log(NULL, "SafeState: reset: %s", reason);
 #endif
     was_safe = FALSE;
 }
 
+    int
+get_was_safe_state(void)
+{
+    return was_safe;
+}
+
 /*
  * Invoked when leaving code that invokes callbacks.  Then trigger
  * SafeStateAgain, if it was safe when starting to wait for a character.
@@ -1095,16 +1110,28 @@
     void
 may_trigger_safestateagain(void)
 {
+    if (!was_safe)
+    {
+	// If the safe state was reset in state_no_longer_safe(), e.g. because
+	// of calling feedkeys(), we check if it's now safe again (all keys
+	// were consumed).
+	was_safe = is_safe_now();
+#ifdef FEAT_JOB_CHANNEL
+	if (was_safe)
+	    ch_log(NULL, "SafeState: undo reset");
+#endif
+    }
     if (was_safe)
     {
 #ifdef FEAT_JOB_CHANNEL
-	ch_log(NULL, "Leaving unsafe area, triggering SafeStateAgain");
+	ch_log(NULL, "SafeState: back to waiting, triggering SafeStateAgain");
 #endif
 	apply_autocmds(EVENT_SAFESTATEAGAIN, NULL, NULL, FALSE, curbuf);
     }
 #ifdef FEAT_JOB_CHANNEL
     else
-	ch_log(NULL, "Leaving unsafe area, not triggering SafeStateAgain");
+	ch_log(NULL,
+		  "SafeState: back to waiting, not triggering SafeStateAgain");
 #endif
 }
 
