From patchwork Wed May 20 23:17:29 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 6840 Received: (qmail 126542 invoked by alias); 20 May 2015 23:18:09 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 126490 invoked by uid 89); 20 May 2015 23:18:08 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=0.5 required=5.0 tests=AWL, BAYES_20, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: mail-wg0-f50.google.com Received: from mail-wg0-f50.google.com (HELO mail-wg0-f50.google.com) (74.125.82.50) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 20 May 2015 23:18:07 +0000 Received: by wgjc11 with SMTP id c11so68203222wgj.0 for ; Wed, 20 May 2015 16:18:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=mtsA6kgXE7kJ/evsVkAiaNV0cLfYjD6enTtfpGjd51M=; b=Xahj6xFN5B54D+WBZ7ca/nplajWYe1Q6rHdwuagCmHm5rRdCZfUhFcvVPvzSf83Yf5 /srBX9m3hhkbQXgQ7QLcO1ZB+XmbXcLWxC71r3G57j58mIqAE2DbwFvJUiDxkFaLmySS OhYv69+dIQuwuK8JWTDwJeMmY/GmD/S7zSYVrv0Jx31VwYmZSzreOvAy1o6qDNja9ha3 Fjy1ZJ5KeXxuTr2K5aOQom4/NYzfTLmKMUFTLDuSi7Y3VUfT6WVgyllXz2xk7d4PR88T TcoXhHES/rt2gEwgUwgRimgz/SfRIWxqu0IlcOXcJFd+IySotvoWHBfqlrYUQvyha1FA dTOw== X-Gm-Message-State: ALoCoQmuJ7jugkCmAFrq2bUR1rSCUTBHKQITKloa/kzgHI7pZAqo1OQ0SVeI2tkudMLdAPZwR74B X-Received: by 10.180.94.168 with SMTP id dd8mr23717121wib.76.1432163884456; Wed, 20 May 2015 16:18:04 -0700 (PDT) Received: from localhost ([46.189.28.200]) by mx.google.com with ESMTPSA id it5sm5781883wid.3.2015.05.20.16.18.03 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 May 2015 16:18:03 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Andrew Burgess Subject: [PATCH 2/4] gdb: Add completer for layout command. Date: Thu, 21 May 2015 01:17:29 +0200 Message-Id: <624c38b3a3d842f5f41f1f2203bdfce78e0c2390.1432163460.git.andrew.burgess@embecosm.com> In-Reply-To: References: In-Reply-To: References: X-IsSubscribed: yes Add layout name completion for the layout command. gdb/ChangeLog: * tui/tui-layout.c (layout_completer): New function. (_initialize_tui_layout): Set completer on layout command. gdb/testsuite/ChangeLog: * gdb.base/completion.exp: Add test for completion of layout names. --- gdb/ChangeLog | 5 +++++ gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/completion.exp | 19 +++++++++++++++++++ gdb/tui/tui-layout.c | 35 ++++++++++++++++++++++++++++++++++- 4 files changed, 63 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 40c70e7..51d2bfc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2015-05-20 Andrew Burgess + * tui/tui-layout.c (layout_completer): New function. + (_initialize_tui_layout): Set completer on layout command. + +2015-05-20 Andrew Burgess + * tui/tui-layout.c (tui_set_layout): Remove tui_register_display_type parameter. Remove all checking of this parameter, and reindent function. Update header comment. diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 3a947eb..15dae61 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2015-05-20 Andrew Burgess + * gdb.base/completion.exp: Add test for completion of layout + names. + +2015-05-20 Andrew Burgess + * lib/gdb.exp (skip_tui_tests): New proc. * gdb.base/tui-layout.exp: Check skip_tui_tests. diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp index f77bfe2..4c31bfc 100644 --- a/gdb/testsuite/gdb.base/completion.exp +++ b/gdb/testsuite/gdb.base/completion.exp @@ -859,3 +859,22 @@ gdb_test_multiple "" "$test" { pass "$test" } } + +gdb_test_no_output "set max-completions unlimited" + +if {![skip_tui_tests]} { + set test "test completion of layout names" + send_gdb "layout\t\t\t" + gdb_test_multiple "" "$test" { + -re "asm *next *prev *regs *split *src *\r\n$gdb_prompt layout $" { + pass "$test" + } + } + send_gdb "\003" + set test "quit command input after testing layout completion" + gdb_test_multiple "" "$test" { + -re "$gdb_prompt $" { + pass "$test" + } + } +} diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index 44aca5d..45fa575 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -350,6 +350,36 @@ tui_default_win_viewport_height (enum tui_win_type type, return h; } +/* Complete possible layout names. TEXT is the complete text entered so + far, WORD is the word currently being completed. */ + +static VEC (char_ptr) * +layout_completer (struct cmd_list_element *ignore, + const char *text, const char *word) +{ + VEC (char_ptr) *return_val = NULL; + const char **tmp, *p; + size_t len; + + static const char *layout_names [] = + { "src", "asm", "split", "regs", "next", "prev", NULL }; + + gdb_assert (text != NULL); + p = strchr (text, ' '); + len = (p == NULL) ? strlen (text) : p - text; + + for (tmp = layout_names; *tmp != NULL; ++tmp) + { + if (strncmp (text, *tmp, len) == 0) + { + char *str = xstrdup (*tmp); + VEC_safe_push (char_ptr, return_val, str); + } + } + + return return_val; +} + /* Function to initialize gdb commands, for tui window layout manipulation. */ @@ -359,7 +389,9 @@ extern initialize_file_ftype _initialize_tui_layout; void _initialize_tui_layout (void) { - add_com ("layout", class_tui, tui_layout_command, _("\ + struct cmd_list_element *cmd; + + cmd = add_com ("layout", class_tui, tui_layout_command, _("\ Change the layout of windows.\n\ Usage: layout prev | next | \n\ Layout names are:\n\ @@ -372,6 +404,7 @@ Layout names are:\n\ source/assembly/command (split) is displayed, \n\ the register window is displayed with \n\ the window that has current logical focus.\n")); + set_cmd_completer (cmd, layout_completer); }