From 8cb688c57488de1b14d5628e519414ac8ecbb296 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 24 Sep 2026 07:48:48 +0000 Subject: [PATCH] Regex replace prompt: say that Enter searches skipped long lines The note added for search-as-you-type told the regex replace prompt to use Left/Right, which only step through matches in the search prompts. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_015rcVQiiWyTzoNrsvLSaAfB --- Command.cc | 10 ++++++++-- tests/test_audit_regressions.cc | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Command.cc b/Command.cc index ad63d83..3479793 100644 --- a/Command.cc +++ b/Command.cc @@ -2450,7 +2450,10 @@ cmd_insert_text(CommandContext &ctx) search_apply_match_regex(ctx.editor, *buf, rmatches); if (skipped > 0 && err.empty()) ctx.editor.SetStatus(ctx.editor.Status() + " [" + std::to_string(skipped) + - " long line(s) skipped; Left/Right search all]"); + " long line(s) skipped; " + + (ctx.editor.CurrentPromptKind() == Editor::PromptKind::RegexSearch + ? "Left/Right search all]" + : "Enter searches all]")); } else { auto matches = search_compute_matches(*buf, ctx.editor.SearchQuery()); // Keep index stable unless out of range @@ -3614,7 +3617,10 @@ cmd_backspace(CommandContext &ctx) search_apply_match_regex(ctx.editor, *buf2, rm); if (skipped > 0 && err.empty()) ctx.editor.SetStatus(ctx.editor.Status() + " [" + std::to_string(skipped) + - " long line(s) skipped; Left/Right search all]"); + " long line(s) skipped; " + + (ctx.editor.CurrentPromptKind() == Editor::PromptKind::RegexSearch + ? "Left/Right search all]" + : "Enter searches all]")); } else { auto matches = search_compute_matches(*buf2, ctx.editor.SearchQuery()); search_apply_match(ctx.editor, *buf2, matches); diff --git a/tests/test_audit_regressions.cc b/tests/test_audit_regressions.cc index 2412ad3..46c7e85 100644 --- a/tests/test_audit_regressions.cc +++ b/tests/test_audit_regressions.cc @@ -1291,6 +1291,12 @@ TEST(Audit_RegexSearch_LongLineFoundByNext) ASSERT_TRUE(h.Exec(CommandId::MoveRight)); ASSERT_EQ(h.Buf().Cury(), (std::size_t) 1); ASSERT_EQ(h.Buf().Curx(), (std::size_t) 25000); + ASSERT_TRUE(h.Exec(CommandId::Refresh)); + ASSERT_TRUE(!ed.PromptActive()); + // The replace prompt has no next/previous; its Enter searches all lines. + ASSERT_TRUE(h.Exec(CommandId::RegexpReplace)); + ASSERT_TRUE(h.Exec(CommandId::InsertText, "NEE+DLE")); + ASSERT_TRUE(ed.Status().find("Enter searches all") != std::string::npos); }