+2017-04-05 Pedro Alves <palves@redhat.com>
+
+ * ada-lang.c (ada_completer_word_break_characters): Now a const
+ array.
+ (ada_get_gdb_completer_word_break_characters): Constify.
+ * completer.c (gdb_completer_command_word_break_characters)
+ (gdb_completer_file_name_break_characters)
+ (gdb_completer_quote_characters): Now const arrays.
+ (get_gdb_completer_quote_characters): Constify.
+ (set_rl_completer_word_break_characters): New function.
+ (set_gdb_completion_word_break_characters)
+ (complete_line_internal): Use it.
+ * completer.h (get_gdb_completer_quote_characters): Constify.
+ (set_rl_completer_word_break_characters): Declare.
+ * f-lang.c (f_word_break_characters): Constify.
+ * language.c (default_word_break_characters): Constify.
+ * language.h (language_defn::la_word_break_characters): Constify.
+ (default_word_break_characters): Constify.
+ * top.c (init_main): Use set_rl_completer_word_break_characters.
+
2017-04-05 Pedro Alves <palves@redhat.com>
* aix-thread.c (aix_thread_pid_to_str)
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[] = "'";
\f
/* Accessor for some completer data that may interest other files. */
-char *
+const char *
get_gdb_completer_quote_characters (void)
{
return gdb_completer_quote_characters;
/* 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
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. */
}
/* 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
/* 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;
{
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
{
&& 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)
/* 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)
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)