patch 8.1.2048: not clear why SafeState and SafeStateAgain are not triggered
Problem: Not clear why SafeState and SafeStateAgain are not triggered.
Solution: Add log statements.
diff --git a/src/getchar.c b/src/getchar.c
index 3f3c6bc..93d0d64 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2103,7 +2103,7 @@
// When not nested we'll go back to waiting for a typed character. If it
// was safe before then this triggers a SafeStateAgain autocommand event.
if (entered == 1)
- leave_unsafe_state();
+ may_trigger_safestateagain();
may_garbage_collect = save_may_garbage_collect;
diff --git a/src/main.c b/src/main.c
index 42aa990..ff3d234 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1061,6 +1061,11 @@
&& scriptin[curscript] == NULL
&& !global_busy;
+ 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");
if (is_safe)
apply_autocmds(EVENT_SAFESTATE, NULL, NULL, FALSE, curbuf);
was_safe = is_safe;
@@ -1074,6 +1079,8 @@
void
state_no_longer_safe(void)
{
+ if (was_safe)
+ ch_log(NULL, "safe state reset");
was_safe = FALSE;
}
@@ -1082,10 +1089,15 @@
* SafeStateAgain, if it was safe when starting to wait for a character.
*/
void
-leave_unsafe_state(void)
+may_trigger_safestateagain(void)
{
if (was_safe)
+ {
+ ch_log(NULL, "Leaving unsafe area, triggering SafeStateAgain");
apply_autocmds(EVENT_SAFESTATEAGAIN, NULL, NULL, FALSE, curbuf);
+ }
+ else
+ ch_log(NULL, "Leaving unsafe area, not triggering SafeStateAgain");
}
diff --git a/src/proto/main.pro b/src/proto/main.pro
index caf435e..873255d 100644
--- a/src/proto/main.pro
+++ b/src/proto/main.pro
@@ -5,7 +5,7 @@
int op_pending(void);
void may_trigger_safestate(int safe);
void state_no_longer_safe(void);
-void leave_unsafe_state(void);
+void may_trigger_safestateagain(void);
void main_loop(int cmdwin, int noexmode);
void getout_preserve_modified(int exitval);
void getout(int exitval);
diff --git a/src/version.c b/src/version.c
index 622f168..b8c8808 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2048,
+/**/
2047,
/**/
2046,