【问题标题】:Syntax highlighting for non-alphanumeric characters in emacsemacs 中非字母数字字符的语法高亮显示
【发布时间】:2015-11-01 01:38:33
【问题描述】:

我希望在编辑任何语言时在 emacs 中突出显示某些非字母数字字符(= + / 等)。

使用a different question on this site 的答案,我找到了在编辑 Fortran 时突出显示“%”的解决方案:

(font-lock-add-keywords 'f90-mode
        '(("%" . font-lock-keyword-face)))

但这只是一种语言中的一个符号。我可以通过污染我的 .emacs 文件来实现我想要的:

(font-lock-add-keywords 'c++-mode
        '(("=" . font-lock-keyword-face)))

(font-lock-add-keywords 'java-mode
        '(("=" . font-lock-keyword-face)))

(font-lock-add-keywords 'python-mode
        '(("=" . font-lock-keyword-face)))

等等,但这会引入一个错误,即任何文件的最后几行根本没有任何语法突出显示。

如何在所有语言模式下为一组特定的非字母数字字符启用语法突出显示?

【问题讨论】:

    标签: emacs elisp syntax-highlighting highlight


    【解决方案1】:

    使用库highlight-chars.el(代码为here)。

    您可以使用任何面孔突出显示任何一组字符。您可以使用任意数量的以下任何类型的条目来定义集合:

    • 字符串
    • 连续字符的范围(Emacs 字符是整数)
    • 字符类(例如[:nonascii:][:space:]
    • 字符集(例如iso-8859-1lao

    您还可以从此类突出显示中排除任何字符集。

    因此,例如,您可以突出显示字符集中 greek-iso8859-7 中的所有字符,但字符 GREEK SMALL LETTER LAMBDA 除外。或者突出显示类[:space:](空格)中的所有字符,tab 除外。或者 ?\u2190?\u21ff 范围内的所有 Unicode 字符(数学箭头),?\u21b6?\u21b7?\u21ba?\u21bb(弯曲箭头)除外...

    【讨论】:

    • 谢谢,这非常接近我想要的。在使用M-x hc-highlight-chars 并输入我想要突出显示的字符后,突出显示仅显示在当前缓冲区中,并在退出 emacs 后完全删除。有什么方法可以使高光持久化并在所有缓冲区中显示?
    • 查看文件中以"开头的注释"的部分但是如果你想全局默认使用某种特定类型的高亮,那么只需将对应的hc-highlight-*函数添加到钩子@987654341 @.".
    • IOW,是的,您可以将其设为全局,并自动重新突出显示。在某种程度上,这是“永久”突出显示。 (Emacs 中唯一的另一种永久突出显示是通过 Enriched 模式。有关更多信息,请参阅this。)
    • 我将(add-hook 'font-lock-mode-hook 'hc-highlight-chars) 添加到我的 .emacs 文件中,现在我所有的语法高亮都消失了。当我删除该行并重新启动 emacs 时,语法高亮仍然不起作用。
    • 如果您删除了您添加的行,并且您在下一个 Emacs 会话中看到事情不起作用,那么听起来您更改了其他内容,除了添加(然后删除)该行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2021-04-07
    • 2022-01-12
    • 2017-04-20
    相关资源
    最近更新 更多