如果你檢查你的interpreter-mode-alist
變量,你會發現一個條目,如("r?bash2?" . sh-mode)
或("bash" . sh-mode)
,這取決於你運行的是哪個版本的emacs。此設置優先於magic-mode-alist
和auto-mode-alist
。
我建議從interpreter-mode-alist
該條目,擺脫你加入到auto-mode-alist
新條目,並添加兩個新條目magic-mode-alist
代替:
(add-to-list 'magic-mode-alist '("r?bash2?" . sh-mode))
(add-to-list 'magic-mode-alist
'((lambda()
(string-match "\\.sql\\.sh$" (buffer-file-name))) . sql-mode))
一定要在這個順序來添加,因此第二一個在結果列表中的第一個之前(是的,還有其他方法可以做到這一點,但爲了清楚起見,我以這種方式顯示)。第二項將首先嚐試,檢查緩衝區名稱以查看它是否匹配.sql.sh
後綴,如果是,則設置sql-mode
。如果該匹配失敗,則其他條目將檢查緩衝區的開始處interpreter-mode-alist
正在尋找的相同模式,並且如果匹配則設置sh-mode
。
這可能是因爲魔模式ALIST正在優先於自動模式ALIST – PuercoPop 2015-04-02 15:03:59