add support for tolower (), toupper (~), and swap case become alt-
This commit is contained in:
parent
81b5c477f6
commit
90b92aed3c
|
@ -128,7 +128,9 @@ Changes
|
||||||
* _r_: replace each character with the next entered one
|
* _r_: replace each character with the next entered one
|
||||||
* _&_: align selection, align the last character of selections by
|
* _&_: align selection, align the last character of selections by
|
||||||
inserting spaces before
|
inserting spaces before
|
||||||
* _~_: swap case
|
* _`_: to lower case
|
||||||
|
* _~_: to upper case
|
||||||
|
* _alt-`_: swap case
|
||||||
|
|
||||||
Goto Commands
|
Goto Commands
|
||||||
-------------
|
-------------
|
||||||
|
|
|
@ -211,20 +211,24 @@ void replace_with_char(Context& context)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Codepoint swapped_case(Codepoint cp)
|
Codepoint to_lower(Codepoint cp) { return tolower(cp); }
|
||||||
|
Codepoint to_upper(Codepoint cp) { return toupper(cp); }
|
||||||
|
|
||||||
|
Codepoint swap_case(Codepoint cp)
|
||||||
{
|
{
|
||||||
Codepoint res = std::tolower(cp);
|
Codepoint res = std::tolower(cp);
|
||||||
return res == cp ? std::toupper(cp) : res;
|
return res == cp ? std::toupper(cp) : res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void swap_case(Context& context)
|
template<Codepoint (*func)(Codepoint)>
|
||||||
|
void for_each_char(Context& context)
|
||||||
{
|
{
|
||||||
Editor& editor = context.editor();
|
Editor& editor = context.editor();
|
||||||
std::vector<String> sels = editor.selections_content();
|
std::vector<String> sels = editor.selections_content();
|
||||||
for (auto& sel : sels)
|
for (auto& sel : sels)
|
||||||
{
|
{
|
||||||
for (auto& c : sel)
|
for (auto& c : sel)
|
||||||
c = swapped_case(c);
|
c = func(c);
|
||||||
}
|
}
|
||||||
editor.insert(sels, InsertMode::Replace);
|
editor.insert(sels, InsertMode::Replace);
|
||||||
}
|
}
|
||||||
|
@ -881,7 +885,10 @@ KeyMap keymap =
|
||||||
{ { Key::Modifiers::None, 'q' }, start_or_end_macro_recording },
|
{ { Key::Modifiers::None, 'q' }, start_or_end_macro_recording },
|
||||||
{ { Key::Modifiers::None, 'Q' }, replay_macro },
|
{ { Key::Modifiers::None, 'Q' }, replay_macro },
|
||||||
|
|
||||||
{ { Key::Modifiers::None, '~' }, swap_case },
|
{ { Key::Modifiers::None, '`' }, for_each_char<to_lower> },
|
||||||
|
{ { Key::Modifiers::None, '~' }, for_each_char<to_upper> },
|
||||||
|
{ { Key::Modifiers::Alt, '`' }, for_each_char<swap_case> },
|
||||||
|
|
||||||
{ { Key::Modifiers::None, '&' }, align },
|
{ { Key::Modifiers::None, '&' }, align },
|
||||||
|
|
||||||
{ Key::Left, move<CharCount, Backward> },
|
{ Key::Left, move<CharCount, Backward> },
|
||||||
|
|
Loading…
Reference in New Issue
Block a user