我正在尝试设置.emacs
,以便以字母makefile
开头的任何文件都将其设置为makefile模式。例如。 makefile-something
应该处于makefile模式。
这不起作用:
(setq auto-mode-alist (cons '("^makefile" . makefile-mode) auto-mode-alist))
但这样做:
(setq auto-mode-alist (cons '("makefile" . makefile-mode) auto-mode-alist))
任何人都可以解释原因吗?
答案 0 :(得分:7)
这是因为文件名前面有一个路径组件,请尝试:
"/makefile[^/]*$"
请参阅http://www.gnu.org/s/emacs/manual/html_node/elisp/Auto-Major-Mode.html(页面底部)
EDI:根据肖恩评论更正了正则表达式
答案 1 :(得分:1)
所以这只是一个有根据的猜测,但我注意到auto-mode-alist
中想要匹配文件名开头的其他正则表达式不使用^
,他们使用/
。例如:
("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode)
(来自Emacs 23.2.1)基于此,我想也许正则表达式应用于文件的完整路径名,而不是基本名称。所以试试
(setq auto-mode-alist (cons '("/makefile" . makefile-mode) auto-mode-alist))
代替。
答案 2 :(得分:0)
为方便起见,试试
(add-to-list 'auto-mode-alist ...