summaryrefslogtreecommitdiff
path: root/src/input_handler.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-04-04 19:03:59 +0200
committerMaxime Coste <frrrwww@gmail.com>2013-04-04 19:09:19 +0200
commit6e2fa38c15e7e1bdb50498697b22a195782a4018 (patch)
tree048afc8cdb6d52fa1079ce8f50ec3611fbe724e4 /src/input_handler.cc
parentf540566b1b4565f9306101c67fa51776ff7dc0dc (diff)
InputHandler::prompt takes a color pair to use
Diffstat (limited to 'src/input_handler.cc')
-rw-r--r--src/input_handler.cc24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc
index cb9cabbf..1222b379 100644
--- a/src/input_handler.cc
+++ b/src/input_handler.cc
@@ -286,12 +286,12 @@ class Prompt : public InputMode
{
public:
Prompt(InputHandler& input_handler, const String& prompt,
- Completer completer, PromptCallback callback)
- : InputMode(input_handler), m_prompt(prompt),
+ ColorPair colors, Completer completer, PromptCallback callback)
+ : InputMode(input_handler), m_prompt(prompt), m_prompt_colors(colors),
m_completer(completer), m_callback(callback)
{
m_history_it = ms_history[m_prompt].end();
- context().ui().print_status(line_with_cursor(m_prompt, m_prompt.char_length()));
+ display();
}
void on_key(const Key& key) override
@@ -429,15 +429,22 @@ public:
m_current_completion = -1;
m_line_editor.handle_key(key);
}
- auto curpos = m_prompt.char_length() + m_line_editor.cursor_pos();
- context().ui().print_status(line_with_cursor(m_prompt + line, curpos));
+ display();
m_callback(line, PromptEvent::Change, context());
}
private:
+ void display() const
+ {
+ auto display_line = line_with_cursor(m_line_editor.line(), m_line_editor.cursor_pos());
+ display_line.insert(display_line.begin(), { m_prompt, m_prompt_colors });
+ context().ui().print_status(display_line);
+ }
+
PromptCallback m_callback;
Completer m_completer;
const String m_prompt;
+ ColorPair m_prompt_colors;
Completions m_completions;
int m_current_completion = -1;
String m_prefix;
@@ -784,11 +791,12 @@ void InputHandler::repeat_last_insert()
assert(dynamic_cast<InputModes::Normal*>(m_mode.get()) != nullptr);
}
-void InputHandler::prompt(const String& prompt, Completer completer,
- PromptCallback callback)
+void InputHandler::prompt(const String& prompt, ColorPair prompt_colors,
+ Completer completer, PromptCallback callback)
{
m_mode_trash.emplace_back(std::move(m_mode));
- m_mode.reset(new InputModes::Prompt(*this, prompt, completer, callback));
+ m_mode.reset(new InputModes::Prompt(*this, prompt, prompt_colors,
+ completer, callback));
}
void InputHandler::menu(const memoryview<String>& choices,