Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] Add autocompletion for convenience vars in print and set
@ 2014-05-20 15:51 Daniel Gutson
  2014-05-20 15:52 ` Daniel Gutson
  2014-05-20 16:36 ` Tom Tromey
  0 siblings, 2 replies; 8+ messages in thread
From: Daniel Gutson @ 2014-05-20 15:51 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 569 bytes --]

Hi,

  this small patch adds autocompletion for convenience variables
for 'print' and 'set' commands. I guess other commands using the
same completers will be benefited as well.

I could not find any testsuite where to add tests for this; if there are,
please let me know.


2014-05-20  Daniel Gutson  <daniel.gutson@tallertechnologies.com>

gdb/
        * c-exp.y (exp): Do not create an internal var when completing.
        * completer.c (expression_completer): Call complete_internalvar.
        * symtab.c (make_symbol_completion_list): Call complete_internalvar.

[-- Attachment #2: completer.patch --]
[-- Type: text/x-patch, Size: 2241 bytes --]

diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 0191067..3ae969f 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -777,7 +777,8 @@ exp	:	variable
 
 exp	:	VARIABLE
 			{
-			  write_dollar_variable (pstate, $1);
+			  if (!parse_completion)
+			    write_dollar_variable (pstate, $1);
 			}
 	;
 
diff --git a/gdb/completer.c b/gdb/completer.c
index 94f70a9..6c5cdf8 100644
--- a/gdb/completer.c
+++ b/gdb/completer.c
@@ -20,6 +20,7 @@
 #include "symtab.h"
 #include "gdbtypes.h"
 #include "expression.h"
+#include "value.h"
 #include "filenames.h"		/* For DOSish file names.  */
 #include "language.h"
 #include "gdb_assert.h"
@@ -446,8 +447,11 @@ expression_completer (struct cmd_list_element *ignore,
        p--)
     ;
 
-  /* Not ideal but it is what we used to do before...  */
-  return location_completer (ignore, p, word);
+  if (p != NULL && *p == '$')
+    return complete_internalvar (p + 1);
+  else
+    /* Not ideal but it is what we used to do before...  */
+    return location_completer (ignore, p, word);
 }
 
 /* Here are some useful test cases for completion.  FIXME: These
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 15ac3d1..5ceaf46 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4542,14 +4542,21 @@ default_make_symbol_completion_list (const char *text, const char *word,
 }
 
 /* Return a vector of all symbols (regardless of class) which begin by
-   matching TEXT.  If the answer is no symbols, then the return value
-   is NULL.  */
+   matching TEXT.  If the answer is no symbols, then check whether the
+   text is an internal var ($foo), if so, return what complete_internalvar
+   returns; otherwise the return value is NULL.  */
 
 VEC (char_ptr) *
 make_symbol_completion_list (const char *text, const char *word)
 {
-  return current_language->la_make_symbol_completion_list (text, word,
-							   TYPE_CODE_UNDEF);
+  VEC (char_ptr) * ret = current_language->la_make_symbol_completion_list (
+                                                      text, word,
+                                                      TYPE_CODE_UNDEF);
+
+  if (ret == NULL && *text == '$')
+    ret = complete_internalvar (text + 1);
+
+  return ret;
 }
 
 /* Like make_symbol_completion_list, but only return STRUCT_DOMAIN

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-02-25 21:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-20 15:51 [PATCH] Add autocompletion for convenience vars in print and set Daniel Gutson
2014-05-20 15:52 ` Daniel Gutson
2014-05-20 16:36 ` Tom Tromey
2014-05-22 15:17   ` Daniel Gutson
2014-05-27 15:18     ` Daniel Gutson
2014-05-27 16:46     ` Andrew Burgess
2014-05-27 20:24       ` Daniel Gutson
2016-02-25 21:23         ` Daniel Gutson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox