とっても基本的なことではあるのだが。
;; zshell (add-to-list 'auto-mode-alist '("\\.zsh\\'" . sh-mode))
あまりにも基本的にすぎるので、もう少しだけ読んでいくことにする。sh-modeのelispをななめ読みしてみると、
Public Git Hosting - emacs.git/blob - lisp/progmodes/sh-script.el
なんとなく、1667行目のここ。ここで、バッファのファイル名でsh-modeを起動しようとしているかを判定してるっぽいけど、zshがないみたい。なので、↑のように書かないと.zshファイルが読み込まれないっぽい寸法だ。
(sh-set-shell (cond ((save-excursion (goto-char (point-min)) (looking-at "#![ \t]?\\([^ \t\n]*/bin/env[ \t]\\)?\\([^ \t\n]+\\)")) (match-string 2)) ((not buffer-file-name) sh-shell-file) ;; Checks that use `buffer-file-name' follow. ((string-match "\\.m?spec\\'" buffer-file-name) "rpm") ((string-match "[.]sh\\>" buffer-file-name) "sh") ((string-match "[.]bash\\>" buffer-file-name) "bash") ((string-match "[.]ksh\\>" buffer-file-name) "ksh") ((string-match "[.]t?csh\\(rc\\)?\\>" buffer-file-name) "csh") ((equal (file-name-nondirectory buffer-file-name) ".profile") "sh") (t sh-shell-file)) nil nil)