From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id AF9C83858CDB for ; Fri, 14 Jul 2023 12:47:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AF9C83858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id D22371F86B; Fri, 14 Jul 2023 12:47:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1689338835; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=J4ymS67R9k1uAwADVBigj2tSmRoNUoi8RvUXO5XL194=; b=zGSpIfpB+y9pHJAd6886fw2kZzoNOjKCo3f+Gd+BQ7PHMrXtxzv7wC+fbdHgx4dKUQzloj Pu+ATTHY0jBEfqJpx1EgZAVmFZvZBC66NpTC1jSit0PC7KtLn9GW4TfLulWiMYaIu164aj gUe2ryBNNikWXEnfYDpovJ0rsmNZzdk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1689338835; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=J4ymS67R9k1uAwADVBigj2tSmRoNUoi8RvUXO5XL194=; b=EogSaRNtVqZOgCTkoLq/SMg36OoPPF6CV9/SJ2+8+m41XGBOv6ai+9dfBI/vjPyOCS/a6Q tjcCn3YnNmwzu3Ag== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id BC37713A15; Fri, 14 Jul 2023 12:47:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id vUzLLNNDsWTtXAAAMHmgww (envelope-from ); Fri, 14 Jul 2023 12:47:15 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] [gdb/tui] Fix secondary prompt Date: Fri, 14 Jul 2023 14:47:13 +0200 Message-Id: <20230714124713.22550-1-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: With CLI, a session defining a command looks like: ... (gdb) define foo Type commands for definition of "foo". End with a line saying just "end". >bar >end (gdb) ... With TUI however, we get the same secondary prompts, and type the same, but are left with: ... (gdb) define foo Type commands for definition of "foo". End with a line saying just "end". (gdb) ... Fix this by calling tui_inject_newline_into_command_window in gdb_readline_wrapper_line, as is done in tui_command_line_handler. Tested on x86_64-linux. PR tui/30636 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30636 --- gdb/testsuite/gdb.tui/secondary-prompt.exp | 38 ++++++++++++++++++++++ gdb/top.c | 6 ++++ 2 files changed, 44 insertions(+) create mode 100644 gdb/testsuite/gdb.tui/secondary-prompt.exp diff --git a/gdb/testsuite/gdb.tui/secondary-prompt.exp b/gdb/testsuite/gdb.tui/secondary-prompt.exp new file mode 100644 index 00000000000..99fedaa3e47 --- /dev/null +++ b/gdb/testsuite/gdb.tui/secondary-prompt.exp @@ -0,0 +1,38 @@ +# Copyright 2023 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +require allow_tui_tests + +tuiterm_env + +Term::clean_restart 24 80 + +if {![Term::enter_tui]} { + unsupported "TUI not supported" + return +} + +# Define a macro. +send_gdb "define foo\n" +send_gdb "bar\n" +send_gdb "end\n" + +# Wait for the last secondary prompt to appear, followed by the gdb prompt. +Term::wait_for ">end" + +# Regression test for PR tui/30636. Make sure the secondary prompts are not +# overwritten. +Term::check_region_contents "secondary prompt not overwritten" 0 19 80 2 \ + "^>bar *\r\n>end *$" diff --git a/gdb/top.c b/gdb/top.c index 90ddc5f5ea7..2322e55f1db 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -77,6 +77,7 @@ #if defined(TUI) # include "tui/tui.h" +# include "tui/tui-io.h" #endif #ifndef O_NOCTTY @@ -958,6 +959,11 @@ gdb_readline_wrapper_line (gdb::unique_xmalloc_ptr &&line) saved_after_char_processing_hook = after_char_processing_hook; after_char_processing_hook = NULL; +#if defined(TUI) + if (tui_active) + tui_inject_newline_into_command_window (); +#endif + /* Prevent parts of the prompt from being redisplayed if annotations are enabled, and readline's state getting out of sync. We'll reinstall the callback handler, which puts the terminal in raw base-commit: 9d9f26d8b1a15561af02370f15be0af0d56ac5fa -- 2.35.3