binutils-gdb/gdb/common
Gary Benson ef0b411a11 Add max-completions parameter, and implement tab-completion limiting.
This commit adds a new exception, MAX_COMPLETIONS_REACHED_ERROR, to be
thrown whenever the completer has generated too many candidates to
be useful.  A new user-settable variable, "max_completions", is added
to control this behaviour.  A top-level completion limit is added to
complete_line_internal, as the final check to ensure the user never
sees too many completions.  An additional limit is added to
default_make_symbol_completion_list_break_on, to halt time-consuming
symbol table expansions.

gdb/ChangeLog:

	PR cli/9007
	PR cli/11920
	PR cli/15548
	* cli/cli-cmds.c (complete_command): Notify user if max-completions
	reached.
	* common/common-exceptions.h (enum errors)
	<MAX_COMPLETIONS_REACHED_ERROR>: New value.
	* completer.h (get_max_completions_reached_message): New declaration.
	(max_completions): Likewise.
	(completion_tracker_t): New typedef.
	(new_completion_tracker): New declaration.
	(make_cleanup_free_completion_tracker): Likewise.
	(maybe_add_completion_enum): New enum.
	(maybe_add_completion): New declaration.
	(throw_max_completions_reached_error): Likewise.
	* completer.c (max_completions): New global variable.
	(new_completion_tracker): New function.
	(free_completion_tracker): Likewise.
	(make_cleanup_free_completion_tracker): Likewise.
	(maybe_add_completions): Likewise.
	(throw_max_completions_reached_error): Likewise.
	(complete_line): Remove duplicates and limit result to max_completions
	entries.
	(get_max_completions_reached_message): New function.
	(gdb_display_match_list): Handle max_completions.
	(_initialize_completer): New declaration and function.
	* symtab.c: Include completer.h.
	(completion_tracker): New static variable.
	(completion_list_add_name): Call maybe_add_completion.
	(default_make_symbol_completion_list_break_on_1): Renamed from
	default_make_symbol_completion_list_break_on.  Maintain
	completion_tracker across calls to completion_list_add_name.
	(default_make_symbol_completion_list_break_on): New function.
	* top.c (init_main): Set rl_completion_display_matches_hook.
	* tui/tui-io.c: Include completer.h.
	(tui_old_rl_display_matches_hook): New static global.
	(tui_rl_display_match_list): Notify user if max-completions reached.
	(tui_setup_io): Save/restore rl_completion_display_matches_hook.
	* NEWS (New Options): Mention set/show max-completions.

gdb/doc/ChangeLog:

	* gdb.texinfo (Command Completion): Document new
	"set/show max-completions" option.

gdb/testsuite/ChangeLog:

	* gdb.base/completion.exp: Disable completion limiting for
	existing tests.  Add new tests to check completion limiting.
	* gdb.linespec/ls-errs.exp: Disable completion limiting.
2015-01-31 15:07:22 -08:00
..
agent.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
agent.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
ax.def Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
break-common.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
btrace-common.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
buffer.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
buffer.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
cleanups.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
cleanups.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
common-debug.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
common-debug.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
common-defs.h Move code to disable ASR to nat/ 2015-01-15 15:10:49 -05:00
common-exceptions.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
common-exceptions.h Add max-completions parameter, and implement tab-completion limiting. 2015-01-31 15:07:22 -08:00
common-regcache.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
common-types.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
common-utils.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
common-utils.h Move safe_strerror to common/ 2015-01-15 15:09:15 -05:00
common.host Move safe_strerror to common/ 2015-01-15 15:09:15 -05:00
common.m4 Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
create-version.sh Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
errors.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
errors.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
filestuff.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
filestuff.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
format.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
format.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
gdb_assert.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
gdb_locale.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
gdb_setjmp.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
gdb_signals.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
gdb_vecs.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
gdb_vecs.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
gdb_wait.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
host-defs.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
mingw-strerror.c Move safe_strerror to common/ 2015-01-15 15:09:15 -05:00
posix-strerror.c Move safe_strerror to common/ 2015-01-15 15:09:15 -05:00
print-utils.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
print-utils.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
ptid.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
ptid.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
queue.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
rsp-low.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
rsp-low.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
signals.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
symbol.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
vec.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
vec.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
version.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
x86-xstate.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
xml-utils.c Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00
xml-utils.h Update year range in copyright notice of all files owned by the GDB project. 2015-01-01 13:32:14 +04:00