gpt4 book ai didi

perl - ISO Emacs [C]Perl 模式为散列引用着色,如散列

转载 作者:行者123 更新时间:2023-12-03 19:47:26 25 4
gpt4 key购买 nike

我仍然使用 Perl,一些新代码,并维护旧代码。我使用 emacs 和 cperl 模式。我喜欢语法着色。

起初(很多年前)我不喜欢 cperl-mode 对数组和散列的特殊着色,但它已经对我产生了影响。有时我更喜欢使用散列而不是散列引用,只是为了获得特殊的颜色。这听起来可能还不错——但如果我承认偶尔使用全局 %hash 或 $hash{key} 而不是对象成员 $hashref->{key},只是为了获得颜色,那么,这很糟糕。 IE。语法着色让我想要遵循不良的编程习惯。

所以,我的问题是:有没有人有 emacs/elisp 配置代码来获取 cperl-mode 或 perl-mode 来着色像 $hashref->{key} 与 $hash{key} 相同或相似的哈希引用?

让我用粗体表示可能着色的地方:

  • cperl-mode 现在做: $hash {key}
  • 我想要什么: $hash-> {key}

  • 我已经在 emacs 中对着色(面)进行了广泛的定制 - 例如着色以区分调试代码与非调试代码,测试与非测试等 - 但我还没有设法在 cperl 模式下使用这种语法着色。 (后续:我最终让 font-lock-add-keywords 正常工作,如下面我对自己问题的回答所示。)

    在下面的示例中,您可以看到 $hashref->{key} 没有着色,而 $hash{key} 是着色的。

    example of cperl-mode syntax coloring

    类似的数组引用,也许其他引用。

    我意识到着色引用只适用于像 $hashref->{key} 这样的解引用,而不适用于像 $hashref1 = $hashref2 这样的其他东西。我认为我可以忍受。

    最佳答案

    您可以设置 cperl-highlight-variables-indiscriminatelyt (通过自定义它)不仅在声明时而且始终获得标量变量的颜色。
    enter image description here

    @ref 使用相同的颜色和 $ref令人困惑,因为它们是不同的变量类型(和不同的变量);同样,对 $ref 使用标量颜色也令人困惑。但是 $ref->[0] 的数组颜色因为它们是同一个变量。

    另外,Perl 就是 Perl,你会在这里使用所有三种颜色吗?

    if (ref $ref eq 'ARRAY') {
    return $ref->[0]
    } elsif (ref $ref eq 'HASH') {
    return $ref->{key}
    }

    关于perl - ISO Emacs [C]Perl 模式为散列引用着色,如散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50609296/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com