aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/src/readline_buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/epee/src/readline_buffer.cpp')
-rw-r--r--contrib/epee/src/readline_buffer.cpp24
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();