Commit 1f58f6c2 authored by Tankut Baris Aktemur's avatar Tankut Baris Aktemur
Browse files

gdb/completer: improve tab completion to consider the '-force-condition' flag

The commit

  commit 733d554a
  Author: Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
  Date:   Tue Oct 27 10:56:03 2020 +0100

  gdb/breakpoint: add flags to 'condition' and 'break' commands to force condition

introduced the '-force-condition' flag to the 'break' command.  This
flag was defined as a keyword like 'thread', 'task', and 'if'.
However, it starts with '-'.  This difference caused an uncovered case
when tab-completing a seemingly complete linespec.

Below, we see "-force-condition" in the completion list, where both
the options and the keywords are listed:

  (gdb) break -function main <TAB>
  -force-condition  -function  -label  -line  -qualified
  -source           if         task    thread

But tab-completing '-' lists only options:

  (gdb) break -function main -<TAB>
  -function   -label      -line       -qualified  -source

This patch fixes the problem by adding keywords to the completion
list, so that we see:

  (gdb) break -function main -<TAB>
  -force-condition  -function  -label  -line  -qualified  -source

gdb/ChangeLog:
2020-12-07  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* completer.c (complete_explicit_location): Also add keywords
	that start with '-' to the completion list.

gdb/testsuite/ChangeLog:
2020-12-07  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* gdb.linespec/explicit.exp: Extend with a test to check completing
	'-' after seemingly complete options.
parent 5759831a
2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* completer.c (complete_explicit_location): Also add keywords
that start with '-' to the completion list.
2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* linespec.c (linespec_lexer_lex_keyword): The "-force-condition"
......
......@@ -892,7 +892,11 @@ complete_explicit_location (completion_tracker &tracker,
int keyword = skip_keyword (tracker, explicit_options, &text);
if (keyword == -1)
complete_on_enum (tracker, explicit_options, text, text);
{
complete_on_enum (tracker, explicit_options, text, text);
/* There are keywords that start with "-". Include them, too. */
complete_on_enum (tracker, linespec_keywords, text, text);
}
else
{
/* Completing on value. */
......
2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* gdb.linespec/explicit.exp: Extend with a test to check completing
'-' after seemingly complete options.
2020-12-07 Tankut Baris Aktemur <tankut.baris.aktemur@intel.com>
* gdb.linespec/keywords.exp: Add tests to check positional
......
......@@ -469,6 +469,20 @@ namespace eval $testfile {
}
}
# Test that after a seemingly finished option argument,
# completion for "-" matches both the explicit location
# options and the linespec keywords that start with "-".
with_test_prefix "complete '-' after options" {
test_gdb_complete_multiple "b -function myfunction " "-" "" {
"-force-condition"
"-function"
"-label"
"-line"
"-qualified"
"-source"
}
}
# Tests that ensure that after "if" we complete on expressions
# are in cpcompletion.exp.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment