On Sat, Sep 25, 2021 at 3:00 AM Ariel Marcovitch <arielmarcovitch@xxxxxxxxx> 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@xxxxxxxxx> > > --- > > 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