redditのlunaryornからの助けを借りて、私があなたが「奇妙な」行動を観察している理由を理解できたと思います。
問題は、式を引用していることです
'("foo" . (λ () (message "bar")))
これはフォームに相当します
(cons "foo" '(λ () (message "bar")))
emacsが拡張子 "foo"のファイルを開くと、次のようになります。
(funcall '(λ () (message "bar")))
余分な引用に注意してください、前に(λ、これは明らかに有効な関数ではなく、エラーが発生しますが、Invalid function: ...
なぜ機能するのか("foo" . (lambda () (message "bar")))、これはlunaryornの観察によって説明されています
「ラムダリスト」、つまり車がラムダであるリストも有効な関数です
'(lambda () (message "bar"))有効な関数なので、これは次のコードで確認できます
(functionp (lambda () "hello")) => t
(functionp (λ () "hello")) => t
(functionp '(lambda () "hello")) => t
(functionp '(λ () "hello")) => nil
したがって、解決策は、式を単に引用しないで、代わりに次を使用することです
(add-to-list 'auto-mode-alist (cons "foo" (λ () (bar))))
defalias、しかし、あなたがチェックアウトする場合がありますprettify-symbols-mode他のもののうち、あなたが表示できるようになる、lambdaとλ実際に基本となるテキストを変更せず。