diff src/indent.c @ 25445:65f04b6effd5 v8.2.3259

patch 8.2.3259: when 'indentexpr' causes an error did_throw may hang Commit: https://github.com/vim/vim/commit/620c959c6c00e469c4d3b1ab2e08e4767ee142a4 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jul 31 21:32:31 2021 +0200 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)
author Bram Moolenaar <Bram@vim.org>
date Sat, 31 Jul 2021 21:45:04 +0200
parents e8e2c4d33b9b
children 357a3bee56f5
line wrap: on
line diff
--- 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();