【问题标题】:Emacs Adding Preprocessor to Major ModeEmacs 将预处理器添加到主要模式
【发布时间】:2011-12-13 16:56:33
【问题描述】:

我正在尝试修改 fortran 主要模式以使用同事编写的预处理器。预处理器指令都以“.”为前缀

例如:

.set

.macro

功能类似于C的#define

到目前为止,我有:

(font-lock-add-keywords 'fortran-mode
 '(("\\<\\(set\\|macro\\|endmacro\\)\\>" . font-lock-preprocessor-face)))

很遗憾,这并没有突出显示“。”这是可取的。此外,模式应该只在它出现在行首时才匹配。 我试过了:

(font-lock-add-keywords 'fortran-mode
 '(("\\<\\(^\.set\\|^\.macro\\|^\.endmacro\\)\\>" . font-lock-preprocessor-face)))

但这没有用。

任何有关如何进行此正则表达式匹配的帮助将不胜感激。

【问题讨论】:

    标签: regex emacs syntax preprocessor major-mode


    【解决方案1】:

    试试这个:"^\\s-*\\.\\(set\\|macro\\|endmacro\\)\\&gt;"

    【讨论】:

    • 谢谢,这就像一个魅力。我实际上只想更改语法突出显示如果'。'在第一列。为此,我刚刚删除了“\\s-*”。 (这是一个非常基本的预处理器)。
    • @mgilson - 是的,不确定你是否想允许前导空格,认为这不会有任何伤害。
    【解决方案2】:

    您应该使用\\. 而不是^\.。双斜杠转义了反斜杠的特殊含义,创建了字符串\.,而后者中的^没有特殊含义。

    【讨论】:

    • 啊,现在我明白了,\\&lt; 匹配一个单词的开头,\\. 匹配一个句点,它们永远不能同时匹配(除非你对语法表条目做了一些奇怪的事情为.)。
    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多