diff --git a/console.php b/console.php index d94c093..fc7886e 100644 --- a/console.php +++ b/console.php @@ -297,6 +297,7 @@ class console // Manage autocompletion // {{{ { + $this->debug ("Autocompletion starting"); // Take the last part of the string without space or double quotes $pos = strrpos ($string, " "); if ($pos === false) @@ -315,9 +316,11 @@ class console { // Last char is not a space, end is the last word and start is the // begin to before last word - $start = mb_substr ($string, 0, $pos); + $start = mb_substr ($string, 0, $pos + 1); $end = mb_substr ($string, $pos + 1); + } + $this->debug ("Autocompletion : start='$start', end='$end'"); $completeArr = call_user_func ($this->completionFunction, self::tokenize ($start)); $isAssoc = is_array ($completeArr) && @@ -334,6 +337,7 @@ class console if (count ($completeArr) === 1) { // One entry : add a space to put on the next + $this->debug ("Autocompletion : One entry : add ending space"); if ($start !== "") $start .= " "; if ($isAssoc) @@ -344,6 +348,7 @@ class console elseif (count ($completeArr)) { // Multiple entries : display them to allow the user to choose + $this->debug ("Autocompletion : Multiple entries : display choices"); echo "\n"; // In associative array, the key is the possible answer to // autocompletion, and the value is the helper message @@ -382,14 +387,17 @@ class console } else { + $this->debug ("Autocompletion : Zero entry : do not change"); $string = $start.$end; } +/* if (is_array ($completeArr) && count ($completeArr)) { $cursorPos = mb_strlen ($prompt.$string) + 1; $this->rewriteLine ($prompt.$string); $this->moveCursor ($cursorPos); - } + }*/ + $this->debug ("Autocompletion : end '$prompt.$string'"); } // }}} elseif (ord ($char) === 3)