]> git.saurik.com Git - cycript.git/blobdiff - Console.cpp
Remove now-obsolete prefix size clip.
[cycript.git] / Console.cpp
index 2d6b566e05aa57565bee6e85dbeef4a0179351d3..3fe2310617fe7ff404a151708c6039add3f7911a 100644 (file)
@@ -290,18 +290,19 @@ static char **Complete(const char *word, int start, int end) {
             _assert(false);
     }
 
-    std::string begin(prefix.str() + word);
+    std::string begin(prefix.str());
 
-    driver.program_ = $ CYProgram($ CYExpress($C2(ParseExpression(pool,
-    "   function(object, prefix) {\n"
+    driver.program_ = $ CYProgram($ CYExpress($C3(ParseExpression(pool,
+    "   function(object, prefix, word) {\n"
     "       var names = [];\n"
-    "       var pattern = '^' + prefix;\n"
+    "       var pattern = '^' + prefix + word;\n"
+    "       var length = prefix.length;\n"
     "       for (name in object)\n"
     "           if (name.match(pattern) != null)\n"
-    "               names.push(name);\n"
+    "               names.push(name.substr(length));\n"
     "       return names;\n"
     "   }\n"
-    ), expression, $S(begin.c_str()))));
+    ), expression, $S(begin.c_str()), $S(word))));
 
     driver.program_->Replace(context);
 
@@ -357,12 +358,6 @@ static char **Complete(const char *word, int start, int end) {
     if (count == 0)
         return NULL;
 
-    if (!common.empty()) {
-        size_t size(prefix.str().size());
-        _assert(common.size() >= size);
-        common = common.substr(size);
-    }
-
     size_t colon(common.find(':'));
     if (colon != std::string::npos)
         common = common.substr(0, colon + 1);
@@ -382,7 +377,7 @@ static char **Complete(const char *word, int start, int end) {
 
 // need char *, not const char *
 static char name_[] = "cycript";
-static char break_[] = " \t\n\"\\'`@$><=;|&{(" ".:";
+static char break_[] = " \t\n\"\\'`@$><=;|&{(" ")}" ".:[]";
 
 static void Console(apr_pool_t *pool, CYOptions &options) {
     passwd *passwd;