]> git.saurik.com Git - cycript.git/blobdiff - Console.cpp
Use object_getClass for tab completion, not ->isa.
[cycript.git] / Console.cpp
index 6ecc251a7cc53c152c369426c624c5a77c488e09..b7a4533c571c995b4ac128aa76b0884a3317d46a 100644 (file)
@@ -264,7 +264,7 @@ static char **Complete(const char *word, int start, int end) {
 
         case CYDriver::AutoMessage: {
             CYDriver::Context &thing(driver.contexts_.back());
 
         case CYDriver::AutoMessage: {
             CYDriver::Context &thing(driver.contexts_.back());
-            expression = $M($M($ CYIndirect(thing.context_), $S("isa")), $S("messages"));
+            expression = $M($C1($V("object_getClass"), thing.context_), $S("messages"));
             for (CYDriver::Context::Words::const_iterator part(thing.words_.begin()); part != thing.words_.end(); ++part)
                 prefix << (*part)->word_ << ':';
         } break;
             for (CYDriver::Context::Words::const_iterator part(thing.words_.begin()); part != thing.words_.end(); ++part)
                 prefix << (*part)->word_ << ':';
         } break;
@@ -313,7 +313,7 @@ static char **Complete(const char *word, int start, int end) {
     std::string common;
     bool rest(false);
 
     std::string common;
     bool rest(false);
 
-    for (CYElement *element(array->elements_); element != NULL; element = element->next_) {
+    CYForEach (element, array->elements_) {
         CYString *string(dynamic_cast<CYString *>(element->value_));
         _assert(string != NULL);
 
         CYString *string(dynamic_cast<CYString *>(element->value_));
         _assert(string != NULL);
 
@@ -482,7 +482,7 @@ static void Console(CYOptions &options) {
             if (parser.parse() != 0 || !driver.errors_.empty()) {
                 for (CYDriver::Errors::const_iterator error(driver.errors_.begin()); error != driver.errors_.end(); ++error) {
                     cy::position begin(error->location_.begin);
             if (parser.parse() != 0 || !driver.errors_.empty()) {
                 for (CYDriver::Errors::const_iterator error(driver.errors_.begin()); error != driver.errors_.end(); ++error) {
                     cy::position begin(error->location_.begin);
-                    if (begin.line != lines.size() || begin.column - 1 != lines.back().size() || error->warning_) {
+                    if (begin.line != lines.size() || begin.column < lines.back().size() || error->warning_) {
                         cy::position end(error->location_.end);
 
                         if (begin.line != lines.size()) {
                         cy::position end(error->location_.end);
 
                         if (begin.line != lines.size()) {
@@ -491,7 +491,7 @@ static void Console(CYOptions &options) {
                         }
 
                         std::cerr << "....";
                         }
 
                         std::cerr << "....";
-                        for (size_t i(0); i != begin.column - 1; ++i)
+                        for (size_t i(0); i != begin.column; ++i)
                             std::cerr << '.';
                         if (begin.line != end.line || begin.column == end.column)
                             std::cerr << '^';
                             std::cerr << '.';
                         if (begin.line != end.line || begin.column == end.column)
                             std::cerr << '^';
@@ -573,7 +573,7 @@ int Main(int argc, char const * const argv[], char const * const envp[]) {
     bool compile(false);
     CYOptions options;
 
     bool compile(false);
     CYOptions options;
 
-    append_history$ = reinterpret_cast<int (*)(int, const char *)>(dlsym(RTLD_DEFAULT, "append_history"));
+    append_history$ = (int (*)(int, const char *)) (dlsym(RTLD_DEFAULT, "append_history"));
 
 #ifdef CY_ATTACH
     pid_t pid(_not(pid_t));
 
 #ifdef CY_ATTACH
     pid_t pid(_not(pid_t));