From 00b56dbe7016bc33f882525a47faab943fdeda9a Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 13 Jun 2019 00:06:52 +0100 Subject: [PATCH] Fix latent bug in custom word point completion handling Without this fix, if we switch the "print" completer to custom word point handling, we regress gdb.base/completion.exp like this: (gdb) p "break1.c FAIL: gdb.base/completion.exp: complete 'p "break1' (timeout) The problem is that completing an expression that starts with double quotes, and resolves to a filename, like this: (gdb) p "break1[TAB] would change from this, with current master: (gdb) p "break1.c"| ^^^^^^^^^^| \- cursor here to this: (gdb) p "break1.c | ^^^^^^^^^^| \- quote replaced by space The issue is that completer.c:advance_to_completion_word misses telling the completion tracker to emulate readline's handling of completing a string when rl_find_completion_word returns a delimiter. This commit fixes the latent bug. gdb/ChangeLog: 2019-06-13 Pedro Alves * completer.c (advance_to_completion_word): Handle delimiters. --- gdb/ChangeLog | 4 ++++ gdb/completer.c | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f282e12254..19b2a7dc76 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2019-06-13 Pedro Alves + + * completer.c (advance_to_completion_word): Handle delimiters. + 2019-06-11 Bernhard Heckel * dwarf2read.c (add_partial_symbol): Skip nameless modules. diff --git a/gdb/completer.c b/gdb/completer.c index d4773f2a77..03d0d0e5db 100644 --- a/gdb/completer.c +++ b/gdb/completer.c @@ -365,11 +365,18 @@ advance_to_expression_complete_word_point (completion_tracker &tracker, info.quote_characters = gdb_completer_quote_characters; info.basic_quote_characters = rl_basic_quote_characters; + int delimiter; const char *start - = gdb_rl_find_completion_word (&info, NULL, NULL, text); + = gdb_rl_find_completion_word (&info, NULL, &delimiter, text); tracker.advance_custom_word_point_by (start - text); + if (delimiter) + { + tracker.set_quote_char (delimiter); + tracker.set_suppress_append_ws (true); + } + return start; } -- 2.34.1