From 620c959c6c00e469c4d3b1ab2e08e4767ee142a4 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 31 Jul 2021 21:32:31 +0200 Subject: 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) --- src/indent.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/indent.c') diff --git a/src/indent.c b/src/indent.c index 89653c777..99951c81b 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1822,6 +1822,13 @@ get_expr_indent(void) 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(); -- cgit v1.2.1