Term::Readline
次のようなカラフルなプロンプトで使用したい:readline("foo" . colored("bar", "red") . "baz")
私は見つけました Term::ANSIColor
、そしてそれは有望に見えます。ただし、後のすべての色または下線をクリアしているように見え colored("some text", "red")
ます。
readline
によって生成されたプロンプトには下線が含まれているため、これは悪いことです。時々、そうです。
colored
以前に適用されたフォーマットがわからないため、ドキュメントに記載されている Colorstacksが役立つかどうかを判断できませんでした。ドキュメンテーションには、直接詰め込んだ例しかなくprint
、せいぜい、私のような Perl 初心者にはあまり適していません。
問題は、によって生成されたプロンプトがreadline
一貫していないように見えることです。最初に下線が引かれ、色付きの部分の後に下線が消えているためです。
次のコードに示すように、下線が発生するのに関連していると思われる「装飾」を読み取ることができます。
#!/usr/bin/env perl
use Term::ReadLine;
use Term::ANSIColor;
my $term;
sub prompt {
$term = new Term::ReadLine 'colourtest'
unless $term;
print "My ornaments: " . $term->ornaments . "\n";
my $answer = $term->readline(@_);
# readline turns off autoflush, re-enable it
$| = 1;
return $answer;
}
prompt("Underlined " .
colored("followed by colour", "red") .
" then plain");
私の質問は次のとおりだと思います: 以前に適用されたフォーマットにフォールバックする ようなものTerm::ANSIColor
と一緒にうまくプレイできますか?readline
colored