如何在Emacs正则表达式中为auto-mode-alist匹配.ASM和.S?
我尝试编写如下的正则表达式,但它不起作用,即.asm和.s文件不被识别为属于nasm模式。
(require 'nasm-mode)
(add-to-list 'auto-mode-alist '("\\.\(ASM\)\|S\\'" . nasm-mode))
但是,仅匹配.asm的简化版本可以正常工作:
(require 'nasm-mode)
(add-to-list 'auto-mode-alist '("\\.ASM\\'" . nasm-mode))
另外,为什么我使用大写字符? (我遵循了nasm-mode.el中的描述。)
答案 0 :(得分:1)
直接回答问题(总是使用double \
,因为字符串解释“使用”第一个和正则表达式代码第二个):
(add-to-list 'auto-mode-alist '("\\.\\(ASM\\|S\\)\\'" . nasm-mode))
替代方式我会用
(add-to-list 'auto-mode-alist '("\\.ASM\\'" . nasm-mode))
(add-to-list 'auto-mode-alist '("\\.S\\'" . nasm-mode))
答案 1 :(得分:1)
(add-to-list 'auto-mode-alist `(,(concat (regexp-opt '(".ASM" ".S")) "\\'") . nasm-mode))
regexp-opt
获取字符串列表(不是正则表达式),并构建一个匹配任何字符串的正则表达式。这里有点矫枉过正,但它很适合匹配较长的字符串列表。