aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTankut Baris Aktemur <tankut.baris.aktemur@intel.com>2020-12-07 09:28:33 +0100
committerTankut Baris Aktemur <tankut.baris.aktemur@intel.com>2020-12-07 09:31:00 +0100
commit1f58f6c25916481dd1e2110ac79f151384d172b2 (patch)
tree08697c1970cba6268fb5050fbad29b22e2b7bd4e
parent5759831a2d06600a7eae4697417a388444c8e13b (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--gdb/completer.c6
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.linespec/explicit.exp14
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.