From 376da1ea68879229d43704ebe70874020d0e8fd6 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Mon, 24 Feb 2025 04:04:47 +0300 Subject: fixed rubbing out `?` (help) after editing a Q-Register * Test case: @EQa// @?/EX/ -- Rubout should return you to the Q-Register view. * The test suite has been extended. Unfortunately we cannot currently directly check whether we're editing a Q-Register. But we add a magic number of characters to the Q-Register, that we can check afterwards. --- TODO | 5 +++-- src/help.c | 4 ++-- tests/testsuite.at | 6 ++++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index a47a7f4..cbe1714 100644 --- a/TODO +++ b/TODO @@ -4,8 +4,9 @@ Tasks: "edit" hook. Known Bugs: - * ?^E$ does not scroll automatically - * Rubout EQ{$ ?^E$ -- Q-reg view is not restored + * ?^E$ does not scroll automatically on GTK. + This is apparently since the buffer is newly added to the ring + and the view is not yet realized. * PDCurses/WinGUI: There is still some flickering, but it got better since key macros update the command line only once. Could already be fixed upstream, see: diff --git a/src/help.c b/src/help.c index a093032..07acb86 100644 --- a/src/help.c +++ b/src/help.c @@ -289,13 +289,13 @@ teco_state_help_done(teco_machine_main_t *ctx, const teco_string_t *str, GError return NULL; } - teco_ring_undo_edit(); /* * ED hooks with the default lexer framework * will usually load the styling SciTECO script * when editing the buffer for the first time. */ - if (!teco_ring_edit(topic->filename, error)) + if (!teco_current_doc_undo_edit(error) || + !teco_ring_edit(topic->filename, error)) return NULL; /* diff --git a/tests/testsuite.at b/tests/testsuite.at index 3f0b7e5..eb71689 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -301,6 +301,12 @@ AT_CHECK([$SCITECO_CMDLINE "@^Um{:@S/XXX/} :Mm\"S(0/0)' Mm\"S(0/0)'"], 0, ignore AT_FAIL_IF([$GREP "^Error:" stderr]) AT_CLEANUP +AT_SETUP([Rub out help command]) +# Should restore the Q-Register view. But we cannot test this directly. +AT_CHECK([$SCITECO_CMDLINE "@EQa// 23<@I/x/> @?/EX/{-6D} Z-23\"N(0/0)'"], 0, ignore, stderr) +AT_FAIL_IF([$GREP "^Error:" stderr]) +AT_CLEANUP + AT_BANNER([Known Bugs]) AT_SETUP([Number stack]) -- cgit v1.2.3