Implemented contexts, optimizations

This commit is contained in:
2016-11-01 15:12:11 +01:00
parent 27af65af5e
commit de7f12b7d5
9 changed files with 441 additions and 95 deletions

View File

@ -34,7 +34,7 @@ class LineRead
{
stream_set_blocking(STDIN, false);
$this->sttyOld = trim(exec('stty -g'));
exec('stty raw -echo'); // isig');
exec('stty raw -echo opost onlret'); // isig');
}
public function __destruct()
@ -63,11 +63,9 @@ class LineRead
$buffer = $this->buffer;
$cursor = strlen($this->prompt) + 1 + $this->posCursor - $this->posScroll;
$promptStyle = $this->styleToAnsi($this->promptStyle);
$commandStyle = $this->styleToAnsi($this->commandStyle);
$endStyle = "\e[0m";
fprintf(STDOUT, "\r\e[2K{$promptStyle}%s{$commandStyle}%s\e[%dG{$endStyle}", $prompt, $buffer, $cursor);
fprintf(STDOUT, "\r\e[2K%s%s\e[%dG{$endStyle}", ($this->promptStyle)($prompt), ($this->commandStyle)($buffer), $cursor);
}
protected function styleToAnsi($style)
@ -160,12 +158,14 @@ class LineRead
$this->commandStyle = $style;
}
public function setPrompt($prompt, $style=null)
public function setPromptText($prompt)
{
$this->prompt = $prompt;
if ($style) {
$this->promptStyle = $style;
}
}
public function setPromptStyle($style)
{
$this->promptStyle = $style;
}
}