but it does affect how much stuff M-? lists.
(2) If one of the matches contains a word break character, readline
will quote it. That's why we switch between
- current_language->la_word_break_characters() and
+ current_language->word_break_characters () and
gdb_completer_command_word_break_characters. I'm not sure when
we need this behavior (perhaps for funky characters in C++
symbols?). */
will loop indefinitely. */
subsequent_name = 1;
/* Like emacs, don't complete on old versions. Especially
- useful in the "source" command. */
+ useful in the "source" command. */
const char *p = p_rl.get ();
if (p[strlen (p) - 1] == '~')
continue;
advance_to_expression_complete_word_point (completion_tracker &tracker,
const char *text)
{
- const char *brk_chars = current_language->la_word_break_characters ();
+ const char *brk_chars = current_language->word_break_characters ();
return advance_to_completion_word (tracker, brk_chars, text);
}
colon = p;
symbol_start = p + 1;
}
- else if (strchr (current_language->la_word_break_characters(), *p))
+ else if (strchr (current_language->word_break_characters (), *p))
symbol_start = p + 1;
}
fieldname, namelen))
output.emplace_back (xstrdup (TYPE_FIELD_NAME (type, i)));
}
- else if (TYPE_FIELD_TYPE (type, i)->code () == TYPE_CODE_UNION)
+ else if (type->field (i).type ()->code () == TYPE_CODE_UNION)
{
/* Recurse into anonymous unions. */
- add_struct_fields (TYPE_FIELD_TYPE (type, i),
+ add_struct_fields (type->field (i).type (),
output, fieldname, namelen);
}
}
strings, which leaves out the '-' and '.' character used in some
commands. */
set_rl_completer_word_break_characters
- (current_language->la_word_break_characters());
+ (current_language->word_break_characters ());
/* Decide whether to complete on a list of gdb commands or on
symbols. */
}
else
{
- c = lookup_cmd_1 (&p, cmdlist, &result_list, ignore_help_classes);
+ c = lookup_cmd_1 (&p, cmdlist, &result_list, NULL, ignore_help_classes);
}
/* Move p up to the next interesting thing. */
m_lowest_common_denominator_unique = false;
m_lowest_common_denominator_valid = false;
- /* A null check here allows this function to be used from the
- constructor. */
- if (m_entries_hash != NULL)
- htab_delete (m_entries_hash);
+ m_entries_hash.reset (nullptr);
/* A callback used by the hash table to compare new entries with existing
entries. We can't use the standard streq_hash function here as the
return entry->hash_name ();
};
- m_entries_hash = htab_create_alloc (INITIAL_COMPLETION_HTAB_SIZE,
- entry_hash_func, entry_eq_func,
- completion_hash_entry::deleter,
- xcalloc, xfree);
+ m_entries_hash.reset (htab_create_alloc (INITIAL_COMPLETION_HTAB_SIZE,
+ entry_hash_func, entry_eq_func,
+ completion_hash_entry::deleter,
+ xcalloc, xfree));
}
/* See completer.h. */
completion_tracker::~completion_tracker ()
{
xfree (m_lowest_common_denominator);
- htab_delete (m_entries_hash);
}
/* See completer.h. */
if (max_completions == 0)
return false;
- if (htab_elements (m_entries_hash) >= max_completions)
+ if (htab_elements (m_entries_hash.get ()) >= max_completions)
return false;
hashval_t hash = htab_hash_string (name.get ());
- slot = htab_find_slot_with_hash (m_entries_hash, name.get (), hash, INSERT);
+ slot = htab_find_slot_with_hash (m_entries_hash.get (), name.get (),
+ hash, INSERT);
if (*slot == HTAB_EMPTY_ENTRY)
{
const char *match_for_lcd_str = NULL;
completion_tracker::remove_completion (const char *name)
{
hashval_t hash = htab_hash_string (name);
- if (htab_find_slot_with_hash (m_entries_hash, name, hash, NO_INSERT)
+ if (htab_find_slot_with_hash (m_entries_hash.get (), name, hash, NO_INSERT)
!= NULL)
{
- htab_remove_elt_with_hash (m_entries_hash, name, hash);
+ htab_remove_elt_with_hash (m_entries_hash.get (), name, hash);
m_lowest_common_denominator_valid = false;
}
}
const char *text, const char *word)
{
set_rl_completer_word_break_characters
- (current_language->la_word_break_characters ());
+ (current_language->word_break_characters ());
}
/* See definition in completer.h. */
return 1;
};
- htab_traverse (m_entries_hash, visitor_func, this);
+ htab_traverse (m_entries_hash.get (), visitor_func, this);
m_lowest_common_denominator_valid = true;
}
completion_tracker::build_completion_result (const char *text,
int start, int end)
{
- size_t element_count = htab_elements (m_entries_hash);
+ size_t element_count = htab_elements (m_entries_hash.get ());
if (element_count == 0)
return {};
};
/* Build the completion list and add a null at the end. */
- htab_traverse_noresize (m_entries_hash, func, &builder);
+ htab_traverse_noresize (m_entries_hash.get (), func, &builder);
match_list[builder.index] = NULL;
return completion_result (match_list, builder.index - 1, false);
quotechars = gdb_completer_quote_characters;
if (breakchars == NULL)
- breakchars = current_language->la_word_break_characters();
+ breakchars = current_language->word_break_characters ();
for (scan = str; *scan != '\0'; scan++)
{
else if (temp[1] == '\0')
{
for (x = temp - 1; x > pathname; x--)
- if (*x == '/')
- break;
+ if (*x == '/')
+ break;
return ((*x == '/') ? x + 1 : pathname);
}
else
while (*s)
{
if (CTRL_CHAR (*s))
- {
- displayer->putch (displayer, '^');
- displayer->putch (displayer, UNCTRL (*s));
- printed_len += 2;
- s++;
+ {
+ displayer->putch (displayer, '^');
+ displayer->putch (displayer, UNCTRL (*s));
+ printed_len += 2;
+ s++;
#if defined (HANDLE_MULTIBYTE)
memset (&ps, 0, sizeof (mbstate_t));
#endif
- }
+ }
else if (*s == RUBOUT)
{
displayer->putch (displayer, '^');