From patchwork Thu May 21 07:10:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 6845 Received: (qmail 117972 invoked by alias); 21 May 2015 07:10:35 -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 117927 invoked by uid 89); 21 May 2015 07:10:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=AWL, BAYES_50, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: mail-wi0-f172.google.com Received: from mail-wi0-f172.google.com (HELO mail-wi0-f172.google.com) (209.85.212.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 21 May 2015 07:10:32 +0000 Received: by wicmc15 with SMTP id mc15so3574080wic.1 for ; Thu, 21 May 2015 00:10:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=Us6NkE8Lc4R9vPWSv5tTxGjvzg67gbegWeZfd3oBExw=; b=Ij4bem0eoT9QfvP4ba7NjsibL5g8jDSqQkC2oHH4YbowcXikELmmg9H5AbIFd3u9H6 kpidJzH+2hEBpj6jVbzRj+g5R+aBtlQwX8z3mzibyeMwLuDhJSF9teGV0Mhgy46hO8Ir 8+3b8UDGVY9j+R3iMa6BhU21wlD1Zi8CuoOo/d3MPmiXFZgAgQgU6czQztsB7S7B6RHA sEuLfR0i9tDfrDZp7Xu19fvGqPqByVT6FUWaJz5OchmS3SGG4Zzm/AVak38s9HDFWOTs zcB2VG4v/gwbOLJgxdn6rCbgd4/JgGuBK2E74STEXjDIwwQLWhLa+uiWrPaGjJ5x5ErI QxeQ== X-Gm-Message-State: ALoCoQkkLEAS+a/14Y1CM6Ldv1hYk7pODb1ESUB17gc0Lz1xAMWRCBQOz0g0MlNfZv7iTGY3G9lH X-Received: by 10.194.47.231 with SMTP id g7mr2521561wjn.140.1432192229499; Thu, 21 May 2015 00:10:29 -0700 (PDT) Received: from localhost (TK158115.telekabel.at. [195.34.158.115]) by mx.google.com with ESMTPSA id fw3sm1289224wib.5.2015.05.21.00.10.28 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 21 May 2015 00:10:28 -0700 (PDT) Date: Thu, 21 May 2015 09:10:27 +0200 From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Keith Seitz Subject: Re: [PATCH 2/4] gdb: Add completer for layout command. Message-ID: <20150521071027.GG2880@embecosm.com> References: <624c38b3a3d842f5f41f1f2203bdfce78e0c2390.1432163460.git.andrew.burgess@embecosm.com> <555D25EA.5000007@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <555D25EA.5000007@redhat.com> X-Editor: GNU Emacs [ http://www.gnu.org/software/emacs ] User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes * Keith Seitz [2015-05-20 17:25:14 -0700]: > One quick observation (having seen my fair share of completion functions > recently)... Most completer functions are using complete_on_enum to do > this sort of thing. Will that work here? Indeed it will, I never knew this even existed :) New simpler version of the patch below. Thanks, Andrew --- gdb: Add completer for layout command. 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. -- 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..600f0de 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -350,6 +350,19 @@ 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) +{ + static const char *layout_names [] = + { "src", "asm", "split", "regs", "next", "prev", NULL }; + + return complete_on_enum (layout_names, text, word); +} + /* Function to initialize gdb commands, for tui window layout manipulation. */ @@ -359,7 +372,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 +387,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); }