Clean up "completer_handle_brkchars" callback handling

This patch cleans up "completer_handle_brkchars" callback handling:

- Renames the function typedef to better match its intent:
  completer_ftype_void ->  completer_handle_brkchars_ftype

- Factors out common code in complete_line_internal handling the
  "handle_brkchars" callback to a separate function.

- Centralizes all the "completer method" to "handle_brkchars method"
  mapping in a single function.

gdb/ChangeLog:
2017-07-17  Pedro Alves  <palves@redhat.com>

	* cli/cli-decode.c (set_cmd_completer_handle_brkchars): Adjust to
	renames.
	* cli/cli-decode.h (struct cmd_list_element) <completer>: Move
	comments to completer_ftype's declaration.
	<completer_handle_brkchars>: Change type to
	completer_handle_brkchars_ftype.
	* command.h (completer_ftype): Add describing comment and give
	names to parameters.
	(completer_ftype_void): Rename to ...
	(completer_handle_brkchars_ftype) ... this.  Add describing comment.
	(set_cmd_completer_handle_brkchars): Adjust.
	* completer.c (filename_completer_handle_brkchars): New function.
	(complete_line_internal_normal_command): New function, factored
	out from ...
	(complete_line_internal): ... here.
	(command_completer_handle_brkchars)
	(default_completer_handle_brkchars)
	(completer_handle_brkchars_func_for_completer): New functions.
	* completer.h (set_gdb_completion_word_break_characters): Delete
	declaration.
	(completer_handle_brkchars_func_for_completer): New declaration.
	* python/py-cmd.c (cmdpy_completer_handle_brkchars): Adjust to use
	completer_handle_brkchars_func_for_completer.
This commit is contained in:
Pedro Alves
2017-07-17 12:05:03 +01:00
parent 78b13106ed
commit 6e1dbf8cda
7 changed files with 154 additions and 69 deletions

View File

@@ -160,19 +160,7 @@ struct cmd_list_element
/* The prefix command of this command. */
struct cmd_list_element *prefix;
/* Completion routine for this command. TEXT is the text beyond
what was matched for the command itself (leading whitespace is
skipped). It stops where we are supposed to stop completing
(rl_point) and is '\0' terminated.
Return value is a malloc'd vector of pointers to possible
completions terminated with NULL. If there are no completions,
returning a pointer to a NULL would work but returning NULL
itself is also valid. WORD points in the same buffer as TEXT,
and completions should be returned relative to this position.
For example, suppose TEXT is "foo" and we want to complete to
"foobar". If WORD is "oo", return "oobar"; if WORD is
"baz/foo", return "baz/foobar". */
/* Completion routine for this command. */
completer_ftype *completer;
/* Handle the word break characters for this completer. Usually
@@ -181,8 +169,7 @@ struct cmd_list_element
a class) the word break chars may need to be redefined
depending on the completer type (e.g., for filename
completers). */
completer_ftype_void *completer_handle_brkchars;
completer_handle_brkchars_ftype *completer_handle_brkchars;
/* Destruction routine for this command. If non-NULL, this is
called when this command instance is destroyed. This may be