public function bindBackspace(Readline $self)
 {
     $cursor = '';
     if ($self->getLineCurrent() > 0) {
         if ($self->getLineLength() == ($current = $self->getLineCurrent())) {
             $self->setLine(mb_substr($self->getLine(), 0, -1));
         } else {
             $line = $self->getLine();
             $current = $self->getLineCurrent();
             $tail = mb_substr($line, $current);
             $movecursor = $self->getLineLength() - $current;
             $cursor = "[{$movecursor}D";
             $self->setLine(mb_substr($line, 0, $current - 1) . $tail);
             $self->setLineCurrent($current - 1);
         }
     }
     $prefix = $self->getPrefix();
     $self->clearTerminalLine();
     $self->setBuffer("\r" . $prefix . $self->getLine() . $cursor);
     return $self::READ_CONTINUE;
 }
Exemple #2
0
 /**
  * Down arrow binding.
  * Go forward in the history.
  *
  * @access  public
  * @param   \Hoa\Console\Readline  $self    Self.
  * @return  int
  */
 public function _bindArrowDown(Readline $self)
 {
     if (0 === (static::STATE_CONTINUE & static::STATE_NO_ECHO)) {
         \Hoa\Console\Cursor::clear('↔');
         echo $self->getPrefix();
     }
     $self->setBuffer($buffer = $self->nextHistory());
     $self->setLine($buffer);
     return static::STATE_CONTINUE;
 }