All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] kconfig: Create links to main menu items in search
@ 2021-09-13 16:45 Ariel Marcovitch
  2021-09-24 18:00 ` Ariel Marcovitch
  0 siblings, 1 reply; 3+ messages in thread
From: Ariel Marcovitch @ 2021-09-13 16:45 UTC (permalink / raw)
  To: masahiroy; +Cc: linux-kbuild, linux-kernel, Ariel Marcovitch

When one searches for a main menu item, links aren't created for it like
with the rest of the symbols.

This happens because we trace the item until we get to the rootmenu, but
we don't include it in the path of the item. The rationale was probably
that we don't want to show the main menu in the path of all items,
because it is redundant.

However, when an item has only the rootmenu in its path it should be
included, because this way the user can jump to its location.

Add a 'Main menu' entry in the 'Location:' section for the kconfig
items.

This makes the 'if (i > 0)' superfluous because each item with prompt
will have at least one menu in its path.

Signed-off-by: Ariel Marcovitch <arielmarcovitch@gmail.com>
---
 scripts/kconfig/menu.c | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index 606ba8a63c24..3d6f7cba8846 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -728,7 +728,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 		get_dep_str(r, prop->visible.expr, "  Visible if: ");
 
 	menu = prop->menu->parent;
-	for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {
+	for (i = 0; menu && i < 8; menu = menu->parent) {
 		bool accessible = menu_is_visible(menu);
 
 		submenu[i++] = menu;
@@ -758,21 +758,24 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 		list_add_tail(&jump->entries, head);
 	}
 
-	if (i > 0) {
-		str_printf(r, "  Location:\n");
-		for (j = 4; --i >= 0; j += 2) {
-			menu = submenu[i];
-			if (jump && menu == location)
-				jump->offset = strlen(r->s);
-			str_printf(r, "%*c-> %s", j, ' ',
-				   menu_get_prompt(menu));
-			if (menu->sym) {
-				str_printf(r, " (%s [=%s])", menu->sym->name ?
-					menu->sym->name : "<choice>",
-					sym_get_string_value(menu->sym));
-			}
-			str_append(r, "\n");
+	str_printf(r, "  Location:\n");
+	for (j = 4; --i >= 0; j += 2) {
+		menu = submenu[i];
+		if (jump && menu == location)
+			jump->offset = strlen(r->s);
+
+		if (menu == &rootmenu)
+			/* The real rootmenu prompt is ugly */
+			str_printf(r, "%*cMain menu", j, ' ');
+		else
+			str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu));
+
+		if (menu->sym) {
+			str_printf(r, " (%s [=%s])", menu->sym->name ?
+				menu->sym->name : "<choice>",
+				sym_get_string_value(menu->sym));
 		}
+		str_append(r, "\n");
 	}
 }
 

base-commit: a9086b878b7fd65894eb8cb1fa395dd469970566
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] kconfig: Create links to main menu items in search
  2021-09-13 16:45 [PATCH v2] kconfig: Create links to main menu items in search Ariel Marcovitch
@ 2021-09-24 18:00 ` Ariel Marcovitch
  2021-09-25  7:28   ` Masahiro Yamada
  0 siblings, 1 reply; 3+ messages in thread
From: Ariel Marcovitch @ 2021-09-24 18:00 UTC (permalink / raw)
  To: masahiroy; +Cc: linux-kbuild, linux-kernel

On 13/09/2021 19:45, Ariel Marcovitch wrote:
> When one searches for a main menu item, links aren't created for it like
> with the rest of the symbols.
>
> This happens because we trace the item until we get to the rootmenu, but
> we don't include it in the path of the item. The rationale was probably
> that we don't want to show the main menu in the path of all items,
> because it is redundant.
>
> However, when an item has only the rootmenu in its path it should be
> included, because this way the user can jump to its location.
>
> Add a 'Main menu' entry in the 'Location:' section for the kconfig
> items.
>
> This makes the 'if (i > 0)' superfluous because each item with prompt
> will have at least one menu in its path.
>
> Signed-off-by: Ariel Marcovitch <arielmarcovitch@gmail.com>
> ---
>   scripts/kconfig/menu.c | 33 ++++++++++++++++++---------------
>   1 file changed, 18 insertions(+), 15 deletions(-)
>
> diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
> index 606ba8a63c24..3d6f7cba8846 100644
> --- a/scripts/kconfig/menu.c
> +++ b/scripts/kconfig/menu.c
> @@ -728,7 +728,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
>   		get_dep_str(r, prop->visible.expr, "  Visible if: ");
>   
>   	menu = prop->menu->parent;
> -	for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {
> +	for (i = 0; menu && i < 8; menu = menu->parent) {
>   		bool accessible = menu_is_visible(menu);
>   
>   		submenu[i++] = menu;
> @@ -758,21 +758,24 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
>   		list_add_tail(&jump->entries, head);
>   	}
>   
> -	if (i > 0) {
> -		str_printf(r, "  Location:\n");
> -		for (j = 4; --i >= 0; j += 2) {
> -			menu = submenu[i];
> -			if (jump && menu == location)
> -				jump->offset = strlen(r->s);
> -			str_printf(r, "%*c-> %s", j, ' ',
> -				   menu_get_prompt(menu));
> -			if (menu->sym) {
> -				str_printf(r, " (%s [=%s])", menu->sym->name ?
> -					menu->sym->name : "<choice>",
> -					sym_get_string_value(menu->sym));
> -			}
> -			str_append(r, "\n");
> +	str_printf(r, "  Location:\n");
> +	for (j = 4; --i >= 0; j += 2) {
> +		menu = submenu[i];
> +		if (jump && menu == location)
> +			jump->offset = strlen(r->s);
> +
> +		if (menu == &rootmenu)
> +			/* The real rootmenu prompt is ugly */
> +			str_printf(r, "%*cMain menu", j, ' ');
> +		else
> +			str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu));
> +
> +		if (menu->sym) {
> +			str_printf(r, " (%s [=%s])", menu->sym->name ?
> +				menu->sym->name : "<choice>",
> +				sym_get_string_value(menu->sym));
>   		}
> +		str_append(r, "\n");
>   	}
>   }
>   
>
> base-commit: a9086b878b7fd65894eb8cb1fa395dd469970566
A friendly ping :)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] kconfig: Create links to main menu items in search
  2021-09-24 18:00 ` Ariel Marcovitch
@ 2021-09-25  7:28   ` Masahiro Yamada
  0 siblings, 0 replies; 3+ messages in thread
From: Masahiro Yamada @ 2021-09-25  7:28 UTC (permalink / raw)
  To: Ariel Marcovitch; +Cc: Linux Kbuild mailing list, Linux Kernel Mailing List

On Sat, Sep 25, 2021 at 3:00 AM Ariel Marcovitch
<arielmarcovitch@gmail.com> wrote:
>
> On 13/09/2021 19:45, Ariel Marcovitch wrote:
> > When one searches for a main menu item, links aren't created for it like
> > with the rest of the symbols.
> >
> > This happens because we trace the item until we get to the rootmenu, but
> > we don't include it in the path of the item. The rationale was probably
> > that we don't want to show the main menu in the path of all items,
> > because it is redundant.
> >
> > However, when an item has only the rootmenu in its path it should be
> > included, because this way the user can jump to its location.
> >
> > Add a 'Main menu' entry in the 'Location:' section for the kconfig
> > items.
> >
> > This makes the 'if (i > 0)' superfluous because each item with prompt
> > will have at least one menu in its path.
> >
> > Signed-off-by: Ariel Marcovitch <arielmarcovitch@gmail.com>
> > ---
> >   scripts/kconfig/menu.c | 33 ++++++++++++++++++---------------
> >   1 file changed, 18 insertions(+), 15 deletions(-)
> >
> > diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
> > index 606ba8a63c24..3d6f7cba8846 100644
> > --- a/scripts/kconfig/menu.c
> > +++ b/scripts/kconfig/menu.c
> > @@ -728,7 +728,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
> >               get_dep_str(r, prop->visible.expr, "  Visible if: ");
> >
> >       menu = prop->menu->parent;
> > -     for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {
> > +     for (i = 0; menu && i < 8; menu = menu->parent) {
> >               bool accessible = menu_is_visible(menu);
> >
> >               submenu[i++] = menu;
> > @@ -758,21 +758,24 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
> >               list_add_tail(&jump->entries, head);
> >       }
> >
> > -     if (i > 0) {
> > -             str_printf(r, "  Location:\n");
> > -             for (j = 4; --i >= 0; j += 2) {
> > -                     menu = submenu[i];
> > -                     if (jump && menu == location)
> > -                             jump->offset = strlen(r->s);
> > -                     str_printf(r, "%*c-> %s", j, ' ',
> > -                                menu_get_prompt(menu));
> > -                     if (menu->sym) {
> > -                             str_printf(r, " (%s [=%s])", menu->sym->name ?
> > -                                     menu->sym->name : "<choice>",
> > -                                     sym_get_string_value(menu->sym));
> > -                     }
> > -                     str_append(r, "\n");
> > +     str_printf(r, "  Location:\n");
> > +     for (j = 4; --i >= 0; j += 2) {
> > +             menu = submenu[i];
> > +             if (jump && menu == location)
> > +                     jump->offset = strlen(r->s);
> > +
> > +             if (menu == &rootmenu)
> > +                     /* The real rootmenu prompt is ugly */
> > +                     str_printf(r, "%*cMain menu", j, ' ');
> > +             else
> > +                     str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu));
> > +
> > +             if (menu->sym) {
> > +                     str_printf(r, " (%s [=%s])", menu->sym->name ?
> > +                             menu->sym->name : "<choice>",
> > +                             sym_get_string_value(menu->sym));
> >               }
> > +             str_append(r, "\n");
> >       }
> >   }
> >
> >
> > base-commit: a9086b878b7fd65894eb8cb1fa395dd469970566
> A friendly ping :)


Applied to linux-kbuild. Thanks.

-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-09-25  7:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-13 16:45 [PATCH v2] kconfig: Create links to main menu items in search Ariel Marcovitch
2021-09-24 18:00 ` Ariel Marcovitch
2021-09-25  7:28   ` Masahiro Yamada

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.