aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/src/readline_buffer.cpp
diff options
context:
space:
mode:
authorJethro Grassie <jtg@xtrabass.com>2017-08-16 09:34:32 -0400
committerJethro Grassie <jtg@xtrabass.com>2017-08-16 09:34:32 -0400
commit1249a2a550c7a297823f6fa81eb3094b01863eab (patch)
tree29b8487120736d2fc1b331219f89f60a3ed569d6 /contrib/epee/src/readline_buffer.cpp
parentAdd sync lock on stop (diff)
downloadmonero-1249a2a550c7a297823f6fa81eb3094b01863eab.tar.xz
Construct on first use for completion_commands
Diffstat (limited to '')
-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();