diff options
author | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2020-12-07 09:28:33 +0100 |
---|---|---|
committer | Tankut Baris Aktemur <tankut.baris.aktemur@intel.com> | 2020-12-07 09:31:00 +0100 |
commit | 1f58f6c25916481dd1e2110ac79f151384d172b2 (patch) | |
tree | 08697c1970cba6268fb5050fbad29b22e2b7bd4e | |
parent | 5759831a2d06600a7eae4697417a388444c8e13b (diff) | |
download | gdb-1f58f6c25916481dd1e2110ac79f151384d172b2.zip gdb-1f58f6c25916481dd1e2110ac79f151384d172b2.tar.gz gdb-1f58f6c25916481dd1e2110ac79f151384d172b2.tar.bz2 |
gdb/completer: improve tab completion to consider the '-force-condition' flag
The commit
commit 733d554a4625db4ffb89b7a20e1cf27ab071ef4d
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.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/completer.c | 6 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.linespec/explicit.exp | 14 |
4 files changed, 29 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 60b3ce4..bea7a5b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 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" keyword may be followed by any keyword. * breakpoint.c (find_condition_and_thread): Advance 'tok' by diff --git a/gdb/completer.c b/gdb/completer.c index 83b46a0..7f63ced 100644 --- a/gdb/completer.c +++ b/gdb/completer.c @@ -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. */ diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 3c28bc7..f5219ea 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 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 flexibility of "-force-condition". diff --git a/gdb/testsuite/gdb.linespec/explicit.exp b/gdb/testsuite/gdb.linespec/explicit.exp index 52a1fce..c33ab50 100644 --- a/gdb/testsuite/gdb.linespec/explicit.exp +++ b/gdb/testsuite/gdb.linespec/explicit.exp @@ -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. |