forked from Imagelibrary/binutils-gdb
gdb: make skip_over_slash_fmt available outside printcmd.c
Move the function skip_over_slash_fmt into completer.c, and make it extern, with a declaration in completer.h. This is a refactor in order to support the next commit. I've not changed any of the code in skip_over_slash_fmt. There should be no user visible changes after this commit.
This commit is contained in:
@@ -1380,71 +1380,6 @@ print_command_1 (const char *args, int voidprint)
|
||||
}
|
||||
}
|
||||
|
||||
/* Called from command completion function to skip over /FMT
|
||||
specifications, allowing the rest of the line to be completed. Returns
|
||||
true if the /FMT is at the end of the current line and there is nothing
|
||||
left to complete, otherwise false is returned.
|
||||
|
||||
In either case *ARGS can be updated to point after any part of /FMT that
|
||||
is present.
|
||||
|
||||
This function is designed so that trying to complete '/' will offer no
|
||||
completions, the user needs to insert the format specification
|
||||
themselves. Trying to complete '/FMT' (where FMT is any non-empty set
|
||||
of alpha-numeric characters) will cause readline to insert a single
|
||||
space, setting the user up to enter the expression. */
|
||||
|
||||
static bool
|
||||
skip_over_slash_fmt (completion_tracker &tracker, const char **args)
|
||||
{
|
||||
const char *text = *args;
|
||||
|
||||
if (text[0] == '/')
|
||||
{
|
||||
bool in_fmt;
|
||||
tracker.set_use_custom_word_point (true);
|
||||
|
||||
if (text[1] == '\0')
|
||||
{
|
||||
/* The user tried to complete after typing just the '/' character
|
||||
of the /FMT string. Step the completer past the '/', but we
|
||||
don't offer any completions. */
|
||||
in_fmt = true;
|
||||
++text;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The user has typed some characters after the '/', we assume
|
||||
this is a complete /FMT string, first skip over it. */
|
||||
text = skip_to_space (text);
|
||||
|
||||
if (*text == '\0')
|
||||
{
|
||||
/* We're at the end of the input string. The user has typed
|
||||
'/FMT' and asked for a completion. Push an empty
|
||||
completion string, this will cause readline to insert a
|
||||
space so the user now has '/FMT '. */
|
||||
in_fmt = true;
|
||||
tracker.add_completion (make_unique_xstrdup (text));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The user has already typed things after the /FMT, skip the
|
||||
whitespace and return false. Whoever called this function
|
||||
should then try to complete what comes next. */
|
||||
in_fmt = false;
|
||||
text = skip_spaces (text);
|
||||
}
|
||||
}
|
||||
|
||||
tracker.advance_custom_word_point_by (text - *args);
|
||||
*args = text;
|
||||
return in_fmt;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* See valprint.h. */
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user