summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-09-16 09:17:55 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-09-16 09:17:55 +0000
commitaeea1c610c5a6e5a8062166919cc5affece8f55d (patch)
tree17976abd8c003d76d1645de312819ecd918b019f /src
parent635e76eb4ca63a30b7bf79c530d3f6dbba83f676 (diff)
complete_filename: accept cursor_position as additional parameter
Diffstat (limited to 'src')
-rw-r--r--src/completion.cc12
-rw-r--r--src/completion.hh3
2 files changed, 9 insertions, 6 deletions
diff --git a/src/completion.cc b/src/completion.cc
index a1eed12a..d4e5f04a 100644
--- a/src/completion.cc
+++ b/src/completion.cc
@@ -7,16 +7,18 @@
namespace Kakoune
{
-CandidateList complete_filename(const std::string& prefix)
+CandidateList complete_filename(const std::string& prefix,
+ size_t cursor_pos)
{
- size_t dir_end = prefix.find_last_of('/');
+ std::string real_prefix = prefix.substr(0, cursor_pos);
+ size_t dir_end = real_prefix.find_last_of('/');
std::string dirname = "./";
- std::string fileprefix = prefix;
+ std::string fileprefix = real_prefix;
if (dir_end != std::string::npos)
{
- dirname = prefix.substr(0, dir_end + 1);
- fileprefix = prefix.substr(dir_end + 1, std::string::npos);
+ dirname = real_prefix.substr(0, dir_end + 1);
+ fileprefix = real_prefix.substr(dir_end + 1, std::string::npos);
}
auto dir = auto_raii(opendir(dirname.c_str()), closedir);
diff --git a/src/completion.hh b/src/completion.hh
index 2607879f..da110638 100644
--- a/src/completion.hh
+++ b/src/completion.hh
@@ -22,7 +22,8 @@ struct Completions
: start(start), end(end) {}
};
-CandidateList complete_filename(const std::string& prefix);
+CandidateList complete_filename(const std::string& prefix,
+ size_t cursor_pos = std::string::npos);
}
#endif // completion_hh_INCLUDED