use on_next_key in do_go and do_select_object
This commit is contained in:
parent
b23425764e
commit
737ee8af24
15
src/main.cc
15
src/main.cc
|
@ -123,22 +123,21 @@ template<bool append>
|
||||||
void do_go(Context& context)
|
void do_go(Context& context)
|
||||||
{
|
{
|
||||||
int count = context.numeric_param();
|
int count = context.numeric_param();
|
||||||
Editor& editor = context.editor();
|
|
||||||
if (count != 0)
|
if (count != 0)
|
||||||
{
|
{
|
||||||
BufferIterator target =
|
BufferIterator target =
|
||||||
editor.buffer().iterator_at_line_begin(count-1);
|
context.editor().buffer().iterator_at_line_begin(count-1);
|
||||||
|
|
||||||
editor.select(target);
|
context.editor().select(target);
|
||||||
if (context.has_window())
|
if (context.has_window())
|
||||||
context.window().center_selection();
|
context.window().center_selection();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
context.client().on_next_key([](const Key& key, Context& context) {
|
||||||
Key key = context.client().get_key();
|
|
||||||
if (key.modifiers != Key::Modifiers::None)
|
if (key.modifiers != Key::Modifiers::None)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Editor& editor = context.editor();
|
||||||
switch (key.key)
|
switch (key.key)
|
||||||
{
|
{
|
||||||
case 'g':
|
case 'g':
|
||||||
|
@ -160,7 +159,7 @@ void do_go(Context& context)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_command(Context& context)
|
void do_command(Context& context)
|
||||||
|
@ -288,6 +287,8 @@ void do_join(Context& context)
|
||||||
template<bool inner>
|
template<bool inner>
|
||||||
void do_select_object(Context& context)
|
void do_select_object(Context& context)
|
||||||
{
|
{
|
||||||
|
context.client().on_next_key(
|
||||||
|
[](const Key& key, Context& context) {
|
||||||
typedef std::function<SelectionAndCaptures (const Selection&)> Selector;
|
typedef std::function<SelectionAndCaptures (const Selection&)> Selector;
|
||||||
static const std::unordered_map<Key, Selector> key_to_selector =
|
static const std::unordered_map<Key, Selector> key_to_selector =
|
||||||
{
|
{
|
||||||
|
@ -305,10 +306,10 @@ void do_select_object(Context& context)
|
||||||
{ { Key::Modifiers::None, 'W' }, std::bind(select_whole_word<true>, _1, inner) },
|
{ { Key::Modifiers::None, 'W' }, std::bind(select_whole_word<true>, _1, inner) },
|
||||||
};
|
};
|
||||||
|
|
||||||
Key key = context.client().get_key();
|
|
||||||
auto it = key_to_selector.find(key);
|
auto it = key_to_selector.find(key);
|
||||||
if (it != key_to_selector.end())
|
if (it != key_to_selector.end())
|
||||||
context.editor().select(it->second);
|
context.editor().select(it->second);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user