トピックに関するこの質問を見つけましたが、[emacs で]拡張子に基づいてマイナー モード (またはそのリスト) を設定する方法はありますか? たとえば、メジャー モードを次のように操作できることは簡単にわかります。
(add-to-list 'auto-mode-alist '("\\.notes\\'" . text-mode))
そして私が理想的にできるようにしたいのは
(add-to-list 'auto-minor-mode-alist '("\\.notes\\'" . auto-fill-mode))
リンクされた質問の受け入れ回答は、特にフックについて言及していますtemp-buffer-setup-hook
。これを使用するには、次のように関数をフックに追加する必要があります
(add-hook 'temp-buffer-setup-hook #'my-func-to-set-minor-mode)
私の質問は 2 つあります。
- メジャーモードと同様に、これを行う簡単な方法はありますか?
- そうでない場合、フックの関数をどのように記述しますか?
- 正規表現に対してファイル パスをチェックする必要があります。
- 一致する場合は、目的のモードを有効にします (例:
auto-fill-mode
)。
脆弱でバグのある解決策の試み:
;; Enables the given minor mode for the current buffer it it matches regex
;; my-pair is a cons cell (regular-expression . minor-mode)
(defun enable-minor-mode (my-pair)
(if buffer-file-name ; If we are visiting a file,
;; and the filename matches our regular expression,
(if (string-match (car my-pair) buffer-file-name)
(funcall (cdr my-pair))))) ; enable the minor mode
; used as
(add-hook 'temp-buffer-setup-hook
(lambda ()
(enable-minor-mode '("\\.notes\\'" . auto-fill-mode))))