Re: [PATCH 2/2] kconfig: menuconfig: remove jump_key::index

Jesse T
2023-07-01T04:09:09Z

On Thu, Jun 29, 2023 at 12:03 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> You do not need to remember the index of each jump key because you can
> count it up after a key is pressed.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>
> scripts/kconfig/expr.h | 1 -
> scripts/kconfig/mconf.c | 7 ++++---
> scripts/kconfig/menu.c | 8 --------
> 3 files changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h
> index 9c9caca5bd5f..4a9a23b1b7e1 100644
> --- a/scripts/kconfig/expr.h
> +++ b/scripts/kconfig/expr.h
> @@ -275,7 +275,6 @@ struct jump_key {
> struct list_head entries;
> size_t offset;
> struct menu *target;
> - int index;
> };
>
> extern struct file *file_list;
> diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
> index 7adfd6537279..fcb91d69c774 100644
> --- a/scripts/kconfig/mconf.c
> +++ b/scripts/kconfig/mconf.c
> @@ -22,8 +22,6 @@
> #include "lkc.h"
> #include "lxdialog/dialog.h"
>
> -#define JUMP_NB 9
> -
> static const char mconf_readme[] =
> "Overview\n"
> "--------\n"
> @@ -399,6 +397,7 @@ static int handle_search_keys(int key, int start, int end, void *_data)
> {
> struct search_data *data = _data;
> struct jump_key *pos;
> + int index = '1';
>
> if (key < '1' || key > '9')
> return 0;
> @@ -408,11 +407,13 @@ static int handle_search_keys(int key, int start, int end, void *_data)
> if (pos->offset >= end)
> break;
>
> - if (key == '1' + (pos->index % JUMP_NB)) {
> + if (key == index) {
> data->target = pos->target;
> return 1;
> }
> }
> +
> + index = next_key(index);
> }
>
> return 0;
> diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
> index 5578b8bc8a23..198eb1367e7a 100644
> --- a/scripts/kconfig/menu.c
> +++ b/scripts/kconfig/menu.c
> @@ -735,15 +735,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
> }
> if (head && location) {
> jump = xmalloc(sizeof(struct jump_key));
> -
> jump->target = location;
> -
> - if (list_empty(head))
> - jump->index = 0;
> - else
> - jump->index = list_entry(head->prev, struct jump_key,
> - entries)->index + 1;
> -
> list_add_tail(&jump->entries, head);
> }
>
> --
> 2.39.2
>

Looks good!
Reviewed-by: Jesse Taube <Mr.Bossman075@gmail.com>

One slight off-topic question.
The names of the menu-based config programs have names similar to their
corresponding file gconfig ('gconf'), xconfig ('qconf'), menuconfig ('mconf'),
and nconfig ('nconf'). The only exceptions to this one-letter naming are mconfig
is not memuconfig and qconfig isn't xconfig. Would it be possible to
add an alias
to fix this?

Side-side note config isn't in the docs.

Thanks,
Jesse Taube