keymap: Make replace_termcodes and friends accept length and cpo_flags

Reasons:
- One does not have to do `s[len] = NUL` to work with these functions if they do
  not need to replace the whole string: thus `s` may be const.
- One does not have to save/restore p_cpo to work with them.
This commit is contained in:
ZyX
2014-07-13 11:10:27 +04:00
parent 83c683f5e1
commit ebabdff5cd
10 changed files with 168 additions and 119 deletions

View File

@@ -2964,7 +2964,8 @@ did_set_string_option (
/* 'pastetoggle': translate key codes like in a mapping */
else if (varp == &p_pt) {
if (*p_pt) {
(void)replace_termcodes(p_pt, &p, TRUE, TRUE, FALSE);
(void)replace_termcodes(p_pt, STRLEN(p_pt), &p, true, true, false,
CPO_TO_CPO_FLAGS);
if (p != NULL) {
if (new_value_alloced)
free_string_option(p_pt);
@@ -4656,7 +4657,7 @@ char_u *get_highlight_default(void)
/*
* Translate a string like "t_xx", "<t_xx>" or "<S-Tab>" to a key number.
*/
static int find_key_option(char_u *arg)
static int find_key_option(const char_u *arg)
{
int key;
int modifiers;
@@ -4670,9 +4671,10 @@ static int find_key_option(char_u *arg)
else {
--arg; /* put arg at the '<' */
modifiers = 0;
key = find_special_key(&arg, &modifiers, TRUE, TRUE);
if (modifiers) /* can't handle modifiers here */
key = find_special_key(&arg, STRLEN(arg), &modifiers, true, true);
if (modifiers) { // can't handle modifiers here
key = 0;
}
}
return key;
}