aboutsummaryrefslogtreecommitdiff
path: root/gdb/completer.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/completer.c')
-rw-r--r--gdb/completer.c59
1 files changed, 35 insertions, 24 deletions
diff --git a/gdb/completer.c b/gdb/completer.c
index 45adc62..9183e2a 100644
--- a/gdb/completer.c
+++ b/gdb/completer.c
@@ -84,29 +84,30 @@ char *line_completion_function (const char *text, int matches,
readline library sees one in any of the current completion strings,
it thinks that the string needs to be quoted and automatically
supplies a leading quote. */
-static char *gdb_completer_command_word_break_characters =
+static const char gdb_completer_command_word_break_characters[] =
" \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,";
/* When completing on file names, we remove from the list of word
break characters any characters that are commonly used in file
names, such as '-', '+', '~', etc. Otherwise, readline displays
incorrect completion candidates. */
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
/* MS-DOS and MS-Windows use colon as part of the drive spec, and most
programs support @foo style response files. */
-static char *gdb_completer_file_name_break_characters = " \t\n*|\"';?><@";
+static const char gdb_completer_file_name_break_characters[] =
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ " \t\n*|\"';?><@";
#else
-static char *gdb_completer_file_name_break_characters = " \t\n*|\"';:?><";
+ " \t\n*|\"';:?><";
#endif
/* Characters that can be used to quote completion strings. Note that
we can't include '"' because the gdb C parser treats such quoted
sequences as strings. */
-static char *gdb_completer_quote_characters = "'";
+static const char gdb_completer_quote_characters[] = "'";
/* Accessor for some completer data that may interest other files. */
-char *
+const char *
get_gdb_completer_quote_characters (void)
{
return gdb_completer_quote_characters;
@@ -652,16 +653,26 @@ expression_completer (struct cmd_list_element *ignore,
/* See definition in completer.h. */
void
+set_rl_completer_word_break_characters (const char *break_chars)
+{
+ rl_completer_word_break_characters = (char *) break_chars;
+}
+
+/* See definition in completer.h. */
+
+void
set_gdb_completion_word_break_characters (completer_ftype *fn)
{
+ const char *break_chars;
+
/* So far we are only interested in differentiating filename
completers from everything else. */
if (fn == filename_completer)
- rl_completer_word_break_characters
- = gdb_completer_file_name_break_characters;
+ break_chars = gdb_completer_file_name_break_characters;
else
- rl_completer_word_break_characters
- = gdb_completer_command_word_break_characters;
+ break_chars = gdb_completer_command_word_break_characters;
+
+ set_rl_completer_word_break_characters (break_chars);
}
/* Here are some useful test cases for completion. FIXME: These
@@ -743,8 +754,8 @@ complete_line_internal (const char *text,
then we will switch to the special word break set for command
strings, which leaves out the '-' character used in some
commands. */
- rl_completer_word_break_characters =
- current_language->la_word_break_characters();
+ set_rl_completer_word_break_characters
+ (current_language->la_word_break_characters());
/* Decide whether to complete on a list of gdb commands or on
symbols. */
@@ -821,8 +832,8 @@ complete_line_internal (const char *text,
}
/* Ensure that readline does the right thing with respect to
inserting quotes. */
- rl_completer_word_break_characters =
- gdb_completer_command_word_break_characters;
+ set_rl_completer_word_break_characters
+ (gdb_completer_command_word_break_characters);
}
}
else
@@ -848,8 +859,8 @@ complete_line_internal (const char *text,
/* Ensure that readline does the right thing
with respect to inserting quotes. */
- rl_completer_word_break_characters =
- gdb_completer_command_word_break_characters;
+ set_rl_completer_word_break_characters
+ (gdb_completer_command_word_break_characters);
}
else if (reason == handle_help)
list = NULL;
@@ -857,8 +868,8 @@ complete_line_internal (const char *text,
{
if (reason != handle_brkchars)
list = complete_on_enum (c->enums, p, word);
- rl_completer_word_break_characters =
- gdb_completer_command_word_break_characters;
+ set_rl_completer_word_break_characters
+ (gdb_completer_command_word_break_characters);
}
else
{
@@ -879,8 +890,8 @@ complete_line_internal (const char *text,
&& strchr (gdb_completer_file_name_break_characters, p[-1]) == NULL;
p--)
;
- rl_completer_word_break_characters =
- gdb_completer_file_name_break_characters;
+ set_rl_completer_word_break_characters
+ (gdb_completer_file_name_break_characters);
}
if (reason == handle_brkchars
&& c->completer_handle_brkchars != NULL)
@@ -913,8 +924,8 @@ complete_line_internal (const char *text,
/* Ensure that readline does the right thing
with respect to inserting quotes. */
- rl_completer_word_break_characters =
- gdb_completer_command_word_break_characters;
+ set_rl_completer_word_break_characters
+ (gdb_completer_command_word_break_characters);
}
}
else if (reason == handle_help)
@@ -947,8 +958,8 @@ complete_line_internal (const char *text,
p[-1]) == NULL;
p--)
;
- rl_completer_word_break_characters =
- gdb_completer_file_name_break_characters;
+ set_rl_completer_word_break_characters
+ (gdb_completer_file_name_break_characters);
}
if (reason == handle_brkchars
&& c->completer_handle_brkchars != NULL)