From patchwork Fri May 17 10:28:12 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dirk Gouders X-Patchwork-Id: 2581941 Return-Path: X-Original-To: patchwork-linux-kbuild@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id C4CD9E00E6 for ; Fri, 17 May 2013 10:28:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755088Ab3EQK23 (ORCPT ); Fri, 17 May 2013 06:28:29 -0400 Received: from mx10.gouders.net ([89.244.147.155]:55520 "EHLO mx10.gouders.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755116Ab3EQK22 (ORCPT ); Fri, 17 May 2013 06:28:28 -0400 Received: from mx10.gouders.net (localhost [127.0.0.1]) by mx10.gouders.net (8.14.6/8.14.5) with ESMTP id r4HASPMQ023882; Fri, 17 May 2013 12:28:25 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gouders.net; s=gnet; t=1368786505; bh=6CyG4IDeoj0Ioit7Zk8YiHfehUloziCblLnDm3Dpfbo=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=b85l3Al9FoyST+xjpx6pX8IZVxHGofJs70EBGGDFzuTZJSkWjYO6MiPKc7+eJcBm5 S3mnrupoSWRrz2B4lGqvV7JDt+64aKE7Xv2YOx2Rt5DvTeq9bweicQEyFaA53MtHo9 c6cJ85lKQ3UHP7L04MMFxjMMK08sfMa8a1OE0B7E= From: Dirk Gouders To: "Yann E. MORIN" Cc: linux-kbuild@vger.kernel.org Subject: [PATCH] mconf: mark empty menus/menuconfigs different form non-empty ones Date: Fri, 17 May 2013 12:28:12 +0200 Message-Id: <1368786492-23751-2-git-send-email-dirk@gouders.net> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1368786492-23751-1-git-send-email-dirk@gouders.net> References: <20130516230404.GB19534@free.fr> <1368786492-23751-1-git-send-email-dirk@gouders.net> Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Submenus are sometimes empty and it would be nice if there is be somethying that notifies us that we should not expect any content _before_ we enter a submenu. A new function menu_is_empty() was introduced and empty menus and menuconfigs are now marked by "----" as opposed to non-empty ones that are marked by "--->". This scheme was suggested by "Yann E. MORIN" . Signed-off-by: Dirk Gouders --- scripts/kconfig/mconf.c | 20 ++++++++++++++------ scripts/kconfig/menu.c | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index ccb71ae..80b289c 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -48,7 +48,7 @@ static const char mconf_readme[] = N_( "----------\n" "o Use the Up/Down arrow keys (cursor keys) to highlight the item\n" " you wish to change or submenu wish to select and press .\n" -" Submenus are designated by \"--->\".\n" +" Submenus are designated by \"--->\", empty ones by \"----\".\n" "\n" " Shortcut: Press the option's highlighted letter (hotkey).\n" " Pressing a hotkey more than once will sequence\n" @@ -176,7 +176,7 @@ static const char mconf_readme[] = N_( "\n"), menu_instructions[] = N_( "Arrow keys navigate the menu. " - " selects submenus --->. " + " selects submenus ---> (or empty submenus ----). " "Highlighted letters are hotkeys. " "Pressing includes, excludes, modularizes features. " "Press to exit, for Help, for Search. " @@ -497,9 +497,14 @@ static void build_conf(struct menu *menu) item_make("%s%*c%s", menu->data ? "-->" : "++>", indent + 1, ' ', prompt); - } else - item_make(" %*c%s --->", indent + 1, ' ', prompt); - + } else { + if (menu_is_empty(menu)) + item_make(" %*c%s ----", + indent + 1, ' ', prompt); + else + item_make(" %*c%s --->", + indent + 1, ' ', prompt); + } item_set_tag('m'); item_set_data(menu); if (single_menu_mode && menu->data) @@ -630,7 +635,10 @@ static void build_conf(struct menu *menu) (sym_has_value(sym) || !sym_is_changable(sym)) ? "" : _(" (NEW)")); if (menu->prompt->type == P_MENU) { - item_add_str(" --->"); + if (menu_is_empty(menu)) + item_add_str(" ----"); + else + item_add_str(" --->"); return; } } diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index b5c7d90..6d11c8f 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -430,6 +430,22 @@ bool menu_has_prompt(struct menu *menu) return true; } +/* + * Determine if a menu is empty. + * A menu is considered empty if it contains no or only + * invisible entries. + */ +bool menu_is_empty(struct menu *menu) +{ + struct menu *child; + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child)) + return(false); + } + return(true); +} + bool menu_is_visible(struct menu *menu) { struct menu *child;