summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-09-22 18:55:45 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-09-22 18:55:45 +0000
commit5ca901644f98f88d9fcfd751d8d6ee580de0147d (patch)
treec45d3fc02bbb3f77f722e48c9e4ca6c0bf72788c /src
parent429536d0f4a7c3cbb6f9c690c3d81ab4a25de581 (diff)
Completion: add complete_buffername completer
Diffstat (limited to 'src')
-rw-r--r--src/completion.cc15
-rw-r--r--src/completion.hh3
-rw-r--r--src/main.cc3
3 files changed, 20 insertions, 1 deletions
diff --git a/src/completion.cc b/src/completion.cc
index d4e5f04a..7e570def 100644
--- a/src/completion.cc
+++ b/src/completion.cc
@@ -1,5 +1,6 @@
#include "completion.hh"
+#include "buffer_manager.hh"
#include "utils.hh"
#include <dirent.h>
@@ -33,4 +34,18 @@ CandidateList complete_filename(const std::string& prefix,
return result;
}
+CandidateList complete_buffername(const std::string& prefix,
+ size_t cursor_pos)
+{
+ std::string real_prefix = prefix.substr(0, cursor_pos);
+ CandidateList result;
+ for (auto& buffer : BufferManager::instance())
+ {
+ if (buffer.name().substr(0, real_prefix.length()) == real_prefix)
+ result.push_back(buffer.name());
+ }
+ return result;
+}
+
+
}
diff --git a/src/completion.hh b/src/completion.hh
index da110638..739c24ea 100644
--- a/src/completion.hh
+++ b/src/completion.hh
@@ -25,5 +25,8 @@ struct Completions
CandidateList complete_filename(const std::string& prefix,
size_t cursor_pos = std::string::npos);
+CandidateList complete_buffername(const std::string& prefix,
+ size_t cursor_pos = std::string::npos);
+
}
#endif // completion_hh_INCLUDED
diff --git a/src/main.cc b/src/main.cc
index 00fb8749..dc69b056 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -402,7 +402,8 @@ int main(int argc, char* argv[])
command_manager.register_command(std::vector<std::string>{ "q", "quit" }, quit);
command_manager.register_command(std::vector<std::string>{ "w", "write" }, write_buffer,
PerArgumentCommandCompleter{ complete_filename });
- command_manager.register_command(std::vector<std::string>{ "b", "buffer" }, show_buffer);
+ command_manager.register_command(std::vector<std::string>{ "b", "buffer" }, show_buffer,
+ PerArgumentCommandCompleter { complete_buffername });
try
{