使用Curses :: UI :: TextEditor突出显示语法

时间:2013-08-20 16:05:16

标签: perl curses

我正在使用Curses :: UI在Perl中开发我的第一个基于Curses的应用程序。我想知道是否可以在TextEditor中为特定单词着色(不是使用-fg的整个事物)。 这将用于语法高亮。

干杯!

布拉德

1 个答案:

答案 0 :(得分:2)

可能,但可能需要您扩展或子类化Curses::UI::TextEditor。这是因为TextEditor类似乎逐行呈现其内容。

我做了一点摆弄Curses :: UI :: TextEditor的draw_text方法来向我自己证明它可以完成:

sub draw_text(;$)
{
    # ...
    for my $id (0 .. $this->canvasheight - 1)
    {
        my $line_number = sprintf( "%04d", $id );
        $this->{-canvasscr}->attron( A_REVERSE );
        $this->{-canvasscr}->addstr( $line_number );
        $this->{-canvasscr}->attroff( A_REVERSE );
    # ...

这会在每行上放置一个反色块,当前行号。当然,它没有像我预期的那样放在线的前面,但我只有大约10分钟的时间来玩。你可以用更多的时间获得更好的结果。

因此。可能?是。简单?也许不吧。仍然存在将编辑器内容标记为突出显示的问题。