diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-04-19 09:51:09 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-04-19 09:51:09 +0100 |
| commit | 199ccb4021b9f740d9959e532e515775a00c90e9 (patch) | |
| tree | 526a5803938168b2d7b42effc8f1ae80a034eaa0 /src/input_handler.cc | |
| parent | 2435949faeb9bc77ca6ff3b5ec64430df7116602 (diff) | |
Add a -password switch to :prompt to allow for more secure password entering
Fixes #660
Diffstat (limited to 'src/input_handler.cc')
| -rw-r--r-- | src/input_handler.cc | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/input_handler.cc b/src/input_handler.cc index 0edc9a1a..61da7b41 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -647,10 +647,10 @@ class Prompt : public InputMode { public: Prompt(InputHandler& input_handler, StringView prompt, - String initstr, Face face, Completer completer, - PromptCallback callback) + String initstr, Face face, bool password, + Completer completer, PromptCallback callback) : InputMode(input_handler), m_prompt(prompt.str()), m_prompt_face(face), - m_completer(completer), m_callback(callback), + m_password(password), m_completer(completer), m_callback(callback), m_autoshowcompl{context().options()["autoshowcompl"].get<bool>()} { m_history_it = ms_history[m_prompt].end(); @@ -875,7 +875,9 @@ private: return; auto width = context().client().dimensions().column - m_prompt.char_length(); - auto display_line = m_line_editor.build_display_line(width); + DisplayLine display_line; + if (not m_password) + display_line = m_line_editor.build_display_line(width); display_line.insert(display_line.begin(), { m_prompt, m_prompt_face }); context().print_status(display_line); } @@ -892,6 +894,7 @@ private: String m_prefix; LineEditor m_line_editor; bool m_autoshowcompl; + bool m_password; using History = Vector<String, MemoryDomain::History>; static UnorderedMap<String, History, MemoryDomain::History> ms_history; @@ -1314,11 +1317,11 @@ void InputHandler::repeat_last_insert() } void InputHandler::prompt(StringView prompt, String initstr, - Face prompt_face, Completer completer, - PromptCallback callback) + Face prompt_face, bool password, + Completer completer, PromptCallback callback) { push_mode(new InputModes::Prompt(*this, prompt, initstr, prompt_face, - completer, callback)); + password, completer, callback)); } void InputHandler::set_prompt_face(Face prompt_face) |
