如何让emacs识别单引号在字体锁定模式下不是字符串开始/结束标记

时间:2012-05-05 20:25:46

标签: emacs elisp

我有一个预处理器(xhp),允许我在php代码中编写不带引号的文本,例如:

<foo>
    my enemies' base
</foo>

可能会出现在.php文件中,但只要emacs看到该单引号,它就会将该文件的其余部分视为字符串。

  • 我无法弄清楚在'(c-mode)中设置'font-lock-syntactic-keywords'的位置,但它有一个与之关联的语法表,似乎导致了这个
  • (c-in-literal)也返回'字符串,所以我可能需要在代码中解决这个问题而不是在字体锁定级别,如果有人对此有任何提示,将不胜感激

我最满意的最简单的解决方案就是假设字符串只是一行。

1 个答案:

答案 0 :(得分:2)

我不知道你正在使用什么主模式,但一般来说,诀窍是用(modify-syntax-entry ?\' "." <syntaxtable>)之类的东西来改变'字符的语法。当然,如果'角色有时可以划分字符串而有时不划分字符串,那么它会更棘手,你需要提出一个font-lock-syntactic-keywords(或syntax-propertize-function)规则来判断哪个用于任何给定点。

E.g。假设PHP从不将'视为字符串分隔符,以下内容可能会解决您的问题:

(add-hook 'php-mode-hook
          (lambda () (modify-syntax-table ?\' ".")))