While reviewing the Texinfo documentation for references to GRUB Legacy constructs that needed to be updated, I found some discussion of completion that used "root (<TAB>" as an example. For GRUB 2, this would need to become "set root=(<TAB>" - but that doesn't work! The completion code isn't smart enough to complete only the part after the '=' in this case.
What do people think about the following patch, which makes this work so that we can document it with a clear conscience? 2010-06-03 Colin Watson <cjwat...@ubuntu.com> * normal/completion.c (grub_normal_do_completion): When completing arguments to "set" and the current word contains an equals sign, skip to after the equals sign before starting completion. === modified file 'normal/completion.c' --- normal/completion.c 2010-01-20 08:12:47 +0000 +++ normal/completion.c 2010-06-03 12:49:47 +0000 @@ -414,6 +414,14 @@ grub_normal_do_completion (char *buf, in else current_word = argv[argc - 1]; + if (argc > 1 && ! grub_strcmp (argv[0], "set")) + { + char *equals = grub_strchr (current_word, '='); + if (equals) + /* Complete the value of the variable. */ + current_word = equals + 1; + } + /* Determine the state the command line is in, depending on the state, it can be determined how to complete. */ cmdline_state = get_state (buf); Thanks, -- Colin Watson [cjwat...@ubuntu.com] _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel