diff options
Diffstat (limited to 'contrib/epee/src/readline_buffer.cpp')
-rw-r--r-- | contrib/epee/src/readline_buffer.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/contrib/epee/src/readline_buffer.cpp b/contrib/epee/src/readline_buffer.cpp index d4051bcb8..42b474052 100644 --- a/contrib/epee/src/readline_buffer.cpp +++ b/contrib/epee/src/readline_buffer.cpp @@ -14,10 +14,8 @@ static void remove_line_handler(); static std::string last_line; static std::string last_prompt; -std::mutex line_mutex, sync_mutex, process_mutex; -std::condition_variable have_line; - -std::vector<std::string> rdln::readline_buffer::completion_commands = {"exit"}; +static std::mutex line_mutex, sync_mutex, process_mutex; +static std::condition_variable have_line; namespace { @@ -43,6 +41,12 @@ rdln::suspend_readline::~suspend_readline() m_buffer->start(); } +std::vector<std::string>& rdln::readline_buffer::completion_commands() +{ + static std::vector<std::string> commands = {"exit"}; + return commands; +} + rdln::readline_buffer::readline_buffer() : std::stringbuf(), m_cout_buf(NULL) { @@ -88,6 +92,18 @@ void rdln::readline_buffer::set_prompt(const std::string& prompt) rl_redisplay(); } +void rdln::readline_buffer::add_completion(const std::string& command) +{ + if(std::find(completion_commands().begin(), completion_commands().end(), command) != completion_commands().end()) + return; + completion_commands().push_back(command); +} + +const std::vector<std::string>& rdln::readline_buffer::get_completions() +{ + return completion_commands(); +} + int rdln::readline_buffer::process() { process_mutex.lock(); |