我有一个预处理器(xhp),允许我在php代码中编写不带引号的文本,例如:
<foo>
my enemies' base
</foo>
Run Code Online (Sandbox Code Playgroud)
可能会出现在.php文件中,但只要emacs看到该单引号,它就会将整个文件的其余部分视为字符串.
我最满意的最简单的解决方案就是假设字符串只是一行.
我不知道你正在使用什么主要模式,但一般来说,技巧是用(modify-syntax-entry ?\' "." <syntaxtable>). 当然,如果 ' 字符有时可以分隔字符串,有时则不能,那么这就更棘手了,您需要提出一个font-lock-syntactic-keywords(或syntax-propertize-function) 规则来告诉在任何给定点使用哪个字符。
例如,假设 PHP 从不将 ' 视为字符串分隔符,类似以下内容可能会解决您的问题:
(add-hook 'php-mode-hook
(lambda () (modify-syntax-table ?\' ".")))
Run Code Online (Sandbox Code Playgroud)