patch 8.2.3259: when 'indentexpr' causes an error did_throw may hang
Problem: When 'indentexpr' causes an error the did_throw flag may remain
set.
Solution: Reset did_throw and show the error. (closes #8677)
diff --git a/src/indent.c b/src/indent.c
index 89653c7..99951c8 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1822,6 +1822,13 @@
check_cursor();
State = save_State;
+ // Reset did_throw, unless 'debug' has "throw" and inside a try/catch.
+ if (did_throw && (vim_strchr(p_debug, 't') == NULL || trylevel == 0))
+ {
+ handle_did_throw();
+ did_throw = FALSE;
+ }
+
// If there is an error, just keep the current indent.
if (indent < 0)
indent = get_indent();