Key: always pass by value

This commit is contained in:
Maxime Coste 2013-07-26 01:44:25 +02:00
parent eedd37c09a
commit a4138201b0
5 changed files with 21 additions and 21 deletions

View File

@ -24,7 +24,7 @@ public:
InputMode(const InputMode&) = delete;
InputMode& operator=(const InputMode&) = delete;
virtual void on_key(const Key& key) = 0;
virtual void on_key(Key key) = 0;
Context& context() const { return m_input_handler.context(); }
using Insertion = InputHandler::Insertion;
@ -58,7 +58,7 @@ public:
context().hooks().run_hook("NormalEnd", "", context());
}
void on_key(const Key& key) override
void on_key(Key key) override
{
if (key.modifiers == Key::Modifiers::None and isdigit(key.key))
m_count = m_count * 10 + key.key - '0';
@ -84,7 +84,7 @@ private:
class LineEditor
{
public:
void handle_key(const Key& key)
void handle_key(Key key)
{
if (key == Key::Left or
key == Key{Key::Modifiers::Control, 'b'})
@ -172,7 +172,7 @@ public:
get_color("MenuBackground"), MenuStyle::Prompt);
}
void on_key(const Key& key) override
void on_key(Key key) override
{
auto match_filter = [this](const String& str) {
return boost::regex_match(str.begin(), str.end(), m_filter);
@ -299,7 +299,7 @@ public:
display();
}
void on_key(const Key& key) override
void on_key(Key key) override
{
std::vector<String>& history = ms_history[m_prompt];
const String& line = m_line_editor.line();
@ -476,7 +476,7 @@ public:
NextKey(InputHandler& input_handler, KeyCallback callback)
: InputMode(input_handler), m_callback(callback) {}
void on_key(const Key& key) override
void on_key(Key key) override
{
reset_normal_mode();
m_callback(key, context());
@ -746,7 +746,7 @@ public:
context().hooks().run_hook("InsertBegin", "", context());
}
void on_key(const Key& key) override
void on_key(Key key) override
{
if (&context().editor() != &m_inserter.editor())
return reset_normal_mode().on_key(key);
@ -892,7 +892,7 @@ void InputHandler::on_next_key(KeyCallback callback)
m_mode.reset(new InputModes::NextKey(*this, callback));
}
bool is_valid(const Key& key)
bool is_valid(Key key)
{
return key != Key::Invalid and key.key <= 0x10FFFF;
}

View File

@ -29,7 +29,7 @@ enum class PromptEvent
Validate
};
using PromptCallback = std::function<void (const String&, PromptEvent, Context&)>;
using KeyCallback = std::function<void (const Key&, Context&)>;
using KeyCallback = std::function<void (Key, Context&)>;
class InputMode;
enum class InsertMode : unsigned;

View File

@ -87,7 +87,7 @@ KeyList parse_keys(const String& str)
return result;
}
String key_to_str(const Key& key)
String key_to_str(Key key)
{
bool named = false;
String res;

View File

@ -44,17 +44,17 @@ struct Key
constexpr Key(Codepoint key)
: modifiers(Modifiers::None), key(key) {}
constexpr bool operator==(const Key& other) const
constexpr bool operator==(Key other) const
{ return modifiers == other.modifiers and key == other.key; }
constexpr bool operator!=(const Key& other) const
constexpr bool operator!=(Key other) const
{ return modifiers != other.modifiers or key != other.key; }
};
typedef std::vector<Key> KeyList;
KeyList parse_keys(const String& str);
String key_to_str(const Key& key);
String key_to_str(Key key);
}
@ -64,7 +64,7 @@ namespace std
template<>
struct hash<Kakoune::Key> : unary_function<const Kakoune::Key&, size_t>
{
size_t operator()(const Kakoune::Key& key) const
size_t operator()(Kakoune::Key key) const
{
return static_cast<size_t>(key.modifiers) * 1024 + key.key;
}

View File

@ -69,7 +69,7 @@ void goto_commands(Context& context)
"│ a: last buffer │\n"
"│ f: file │\n"
"╰─────────────────────╯\n", context);
context.input_handler().on_next_key([=](const Key& key, Context& context) {
context.input_handler().on_next_key([=](Key key, Context& context) {
if (hide)
context.ui().info_hide();
if (key.modifiers != Key::Modifiers::None)
@ -169,7 +169,7 @@ void view_commands(Context& context)
"│ j: scroll down │\n"
"│ k: scroll up │\n"
"╰────────────────────────╯\n", context);
context.input_handler().on_next_key([hide](const Key& key, Context& context) {
context.input_handler().on_next_key([hide](Key key, Context& context) {
if (hide)
context.ui().info_hide();
if (key.modifiers != Key::Modifiers::None or not context.has_window())
@ -206,7 +206,7 @@ void view_commands(Context& context)
void replace_with_char(Context& context)
{
context.input_handler().on_next_key([](const Key& key, Context& context) {
context.input_handler().on_next_key([](Key key, Context& context) {
if (not isprint(key.key))
return;
Editor& editor = context.editor();
@ -573,7 +573,7 @@ void select_object(Context& context)
"│ p: paragraph │\n"
"╰────────────────────────────╯\n", context);
context.input_handler().on_next_key(
[=](const Key& key, Context& context) {
[=](Key key, Context& context) {
if (hide)
context.ui().info_hide();
typedef std::function<Selection (const Buffer&, const Selection&)> Selector;
@ -660,7 +660,7 @@ template<SelectFlags flags>
void select_to_next_char(Context& context)
{
int param = context.numeric_param();
context.input_handler().on_next_key([param](const Key& key, Context& context) {
context.input_handler().on_next_key([param](Key key, Context& context) {
context.editor().select(
std::bind(flags & SelectFlags::Reverse ? select_to_reverse : select_to,
_1, _2, key.key, param, flags & SelectFlags::Inclusive),
@ -673,7 +673,7 @@ void start_or_end_macro_recording(Context& context)
if (context.input_handler().is_recording())
context.input_handler().stop_recording();
else
context.input_handler().on_next_key([](const Key& key, Context& context) {
context.input_handler().on_next_key([](Key key, Context& context) {
if (key.modifiers == Key::Modifiers::None)
context.input_handler().start_recording(key.key);
});
@ -682,7 +682,7 @@ void start_or_end_macro_recording(Context& context)
void replay_macro(Context& context)
{
int count = context.numeric_param();
context.input_handler().on_next_key([count](const Key& key, Context& context) mutable {
context.input_handler().on_next_key([count](Key key, Context& context) mutable {
if (key.modifiers == Key::Modifiers::None)
{
static std::unordered_set<char> running_macros;