From 8fedd523deb07a33fc6ef786d57fd904ffecc8f5 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 18 Oct 2024 14:28:08 +0300 Subject: fixed the "Editing local registers in macro calls" check * The previous check could result in false positives if you are editing a local Q-Register, that will be destroyed at the end of the current macro frame, and call another non-colon modified macro. * It must instead be invalid to keep the register edited only if it belongs to the local Q-Registers that are about to be freed. In other words, the table that the currently edited Q-Register belongs to, must be the one we're about to destroy. * This fixes the solarized.toggle (F5) macro when using the Solarized color scheme. --- src/qreg-commands.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/qreg-commands.c') diff --git a/src/qreg-commands.c b/src/qreg-commands.c index cff4c84..5b80d15 100644 --- a/src/qreg-commands.c +++ b/src/qreg-commands.c @@ -658,8 +658,8 @@ teco_state_macro_got_register(teco_machine_main_t *ctx, teco_qreg_t *qreg, if (!teco_qreg_execute(qreg, &table, error)) return NULL; - if (teco_qreg_current && !teco_qreg_current->must_undo) { - /* currently editing local Q-Register */ + if (teco_qreg_table_current == &table) { + /* currently editing local Q-Register that's about to be freed */ teco_error_editinglocalqreg_set(error, teco_qreg_current->head.name.data, teco_qreg_current->head.name.len); return NULL; -- cgit v1.2.3