mirror of
https://github.com/mawww/kakoune.git
synced 2024-12-26 13:02:01 +03:00
Do not pass a context to InputHandler methods
This commit is contained in:
parent
94bbf47cd4
commit
38a67e72bc
@ -53,7 +53,7 @@ void ClientManager::create_client(std::unique_ptr<UserInterface>&& ui,
|
||||
context->ui().set_input_callback([context, this]() {
|
||||
try
|
||||
{
|
||||
context->input_handler().handle_available_inputs(*context);
|
||||
context->input_handler().handle_available_inputs();
|
||||
context->window().forget_timestamp();
|
||||
}
|
||||
catch (Kakoune::runtime_error& error)
|
||||
|
@ -532,7 +532,7 @@ void exec_keys(const KeyList& keys, Context& context)
|
||||
InputHandler batch_input_handler(batch_ui);
|
||||
batch_input_handler.context().change_editor(context.editor());
|
||||
|
||||
batch_input_handler.handle_available_inputs(batch_input_handler.context());
|
||||
batch_input_handler.handle_available_inputs();
|
||||
context.change_editor(batch_input_handler.context().editor());
|
||||
}
|
||||
|
||||
@ -618,7 +618,7 @@ void menu(const CommandParameters& params, Context& context)
|
||||
CommandManager::instance().execute(commands[choice], context);
|
||||
if (event == MenuEvent::Select and choice >= 0 and choice < select_cmds.size())
|
||||
CommandManager::instance().execute(select_cmds[choice], context);
|
||||
}, context);
|
||||
});
|
||||
}
|
||||
|
||||
void info(const CommandParameters& params, Context& context)
|
||||
|
@ -617,17 +617,15 @@ InputHandler::~InputHandler()
|
||||
{
|
||||
}
|
||||
|
||||
void InputHandler::insert(Context& context, InsertMode mode)
|
||||
void InputHandler::insert(InsertMode mode)
|
||||
{
|
||||
assert(&context == &m_context);
|
||||
m_mode_trash.emplace_back(std::move(m_mode));
|
||||
m_mode.reset(new InputModes::Insert(*this, mode));
|
||||
}
|
||||
|
||||
void InputHandler::repeat_last_insert(Context& context)
|
||||
void InputHandler::repeat_last_insert()
|
||||
{
|
||||
assert(&context == &m_context);
|
||||
Context::Insertion& last_insert = context.last_insert();
|
||||
Context::Insertion& last_insert = m_context.last_insert();
|
||||
if (last_insert.second.empty())
|
||||
return;
|
||||
|
||||
@ -643,17 +641,15 @@ void InputHandler::repeat_last_insert(Context& context)
|
||||
}
|
||||
|
||||
void InputHandler::prompt(const String& prompt, Completer completer,
|
||||
PromptCallback callback, Context& context)
|
||||
PromptCallback callback)
|
||||
{
|
||||
assert(&context == &m_context);
|
||||
m_mode_trash.emplace_back(std::move(m_mode));
|
||||
m_mode.reset(new InputModes::Prompt(*this, prompt, completer, callback));
|
||||
}
|
||||
|
||||
void InputHandler::menu(const memoryview<String>& choices,
|
||||
MenuCallback callback, Context& context)
|
||||
MenuCallback callback)
|
||||
{
|
||||
assert(&context == &m_context);
|
||||
m_mode_trash.emplace_back(std::move(m_mode));
|
||||
m_mode.reset(new InputModes::Menu(*this, choices, callback));
|
||||
}
|
||||
@ -669,13 +665,12 @@ bool is_valid(const Key& key)
|
||||
return key != Key::Invalid and key.key <= 0x10FFFF;
|
||||
}
|
||||
|
||||
void InputHandler::handle_available_inputs(Context& context)
|
||||
void InputHandler::handle_available_inputs()
|
||||
{
|
||||
assert(&context == &m_context);
|
||||
m_mode_trash.clear();
|
||||
while (context.ui().is_key_available())
|
||||
while (m_context.ui().is_key_available())
|
||||
{
|
||||
Key key = context.ui().get_key();
|
||||
Key key = m_context.ui().get_key();
|
||||
if (is_valid(key))
|
||||
m_mode->on_key(key);
|
||||
m_mode_trash.clear();
|
||||
|
@ -39,23 +39,23 @@ public:
|
||||
~InputHandler();
|
||||
|
||||
// switch to insert mode
|
||||
void insert(Context& context, InsertMode mode);
|
||||
void insert(InsertMode mode);
|
||||
// repeat last insert mode key sequence
|
||||
void repeat_last_insert(Context& context);
|
||||
void repeat_last_insert();
|
||||
|
||||
// enter prompt mode, callback is called on each change,
|
||||
// abort or validation with corresponding PromptEvent value
|
||||
// returns to normal mode after validation if callback does
|
||||
// not change the mode itself
|
||||
void prompt(const String& prompt, Completer completer,
|
||||
PromptCallback callback, Context& context);
|
||||
PromptCallback callback);
|
||||
|
||||
// enter menu mode, callback is called on each selection change,
|
||||
// abort or validation with corresponding MenuEvent value
|
||||
// returns to normal mode after validation if callback does
|
||||
// not change the mode itself
|
||||
void menu(const memoryview<String>& choices,
|
||||
MenuCallback callback, Context& context);
|
||||
MenuCallback callback);
|
||||
|
||||
// execute callback on next keypress and returns to normal mode
|
||||
// if callback does not change the mode itself
|
||||
@ -63,7 +63,7 @@ public:
|
||||
|
||||
// read and process all inputs available in context
|
||||
// user interface
|
||||
void handle_available_inputs(Context& context);
|
||||
void handle_available_inputs();
|
||||
|
||||
Context& context() { return m_context; }
|
||||
private:
|
||||
|
14
src/main.cc
14
src/main.cc
@ -43,12 +43,12 @@ namespace Kakoune
|
||||
template<InsertMode mode>
|
||||
void do_insert(Context& context)
|
||||
{
|
||||
context.input_handler().insert(context, mode);
|
||||
context.input_handler().insert(mode);
|
||||
}
|
||||
|
||||
void do_repeat_insert(Context& context)
|
||||
{
|
||||
context.input_handler().repeat_last_insert(context);
|
||||
context.input_handler().repeat_last_insert();
|
||||
}
|
||||
|
||||
template<SelectMode mode>
|
||||
@ -113,7 +113,7 @@ void do_command(Context& context)
|
||||
[](const String& cmdline, PromptEvent event, Context& context) {
|
||||
if (event == PromptEvent::Validate)
|
||||
CommandManager::instance().execute(cmdline, context);
|
||||
}, context);
|
||||
});
|
||||
}
|
||||
|
||||
void do_pipe(Context& context)
|
||||
@ -130,7 +130,7 @@ void do_pipe(Context& context)
|
||||
strings.push_back(ShellManager::instance().pipe({sel.begin(), sel.end()},
|
||||
cmdline, context, {}, {}));
|
||||
editor.insert(strings, InsertMode::Replace);
|
||||
}, context);
|
||||
});
|
||||
}
|
||||
|
||||
template<SelectMode mode, bool forward>
|
||||
@ -169,7 +169,7 @@ void do_search(Context& context)
|
||||
throw;
|
||||
}
|
||||
|
||||
}, context);
|
||||
});
|
||||
}
|
||||
|
||||
template<SelectMode mode, bool forward>
|
||||
@ -253,7 +253,7 @@ void do_select_regex(Context& context)
|
||||
[](const String& ex, PromptEvent event, Context& context) {
|
||||
if (event == PromptEvent::Validate and not ex.empty())
|
||||
context.editor().multi_select(std::bind(select_all_matches, _1, ex));
|
||||
}, context);
|
||||
});
|
||||
}
|
||||
|
||||
void do_split_regex(Context& context)
|
||||
@ -262,7 +262,7 @@ void do_split_regex(Context& context)
|
||||
[](const String& ex, PromptEvent event, Context& context) {
|
||||
if (event == PromptEvent::Validate and not ex.empty())
|
||||
context.editor().multi_select(std::bind(split_selection, _1, ex));
|
||||
}, context);
|
||||
});
|
||||
}
|
||||
|
||||
void do_join(Context& context)
|
||||
|
Loading…
Reference in New Issue
Block a user