From cf01f0ed7a5622d31ab030672313b7ad2ec32542 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Thu, 21 Feb 2013 13:35:20 +0100 Subject: [PATCH] Avoid recursive macro calls --- src/main.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main.cc b/src/main.cc index 7102b853..4a4a6bb8 100644 --- a/src/main.cc +++ b/src/main.cc @@ -453,6 +453,10 @@ void start_or_end_macro_recording(Context& context) void replay_macro(Context& context) { + static bool running_macro = false; + if (running_macro) + throw runtime_error("nested macros not supported"); + int count = context.numeric_param(); context.input_handler().on_next_key([count](const Key& key, Context& context) mutable { if (key.modifiers == Key::Modifiers::None) @@ -460,6 +464,9 @@ void replay_macro(Context& context) memoryview reg_val = RegisterManager::instance()[key.key].values(context); if (not reg_val.empty()) { + running_macro = true; + auto stop_macro = on_scope_end([&] { running_macro = false; }); + scoped_edition edition(context.editor()); do { exec_keys(parse_keys(reg_val[0]), context); } while (--count > 0); }