特定のファイル グループ (ASCII で読み取り可能) を操作していますが、奇妙な拡張子名が付いています。これらすべてのコメント文字は#
行にコメントするたびに、ファイルの開閉サイクルごとにコメント文字を設定する必要があります。.emacs
使用するコメント文字を知るためにファイルを設定する方法はありますか?
すべてのファイルは共通のディレクトリ ツリー内にありますか?
その場合、.dir-locals.el
そのツリーの最上位に次のような名前のファイルを配置するだけです。
((fundamental-mode . ((comment-start . "#"))))
詳細については、次を参照してください。
C-hig (emacs) Directory Variables
RET
(このアプローチには、Emacs を使用してそれらのファイルにアクセスする他のすべての人もファイルから恩恵を受けるというボーナスがあり.dir-locals.el
ます。)
そうでなければ、そのコメント文字を使用して単純な派生モードを作成し、それらすべてのファイル拡張子をそれに割り当てる傾向があります。これらのファイルをさまざまな場所で扱っている場合は、おそらく次の方法が適しています。
(define-derived-mode my-mode fundamental-mode "MyMode"
"Comments start with `#'."
(set (make-local-variable 'comment-start) "#"))
(add-to-list 'auto-mode-alist '("\\.\(foo\|bar\)\\'" . my-mode))
.foo
これにより、.bar
拡張子が と のファイルがmy-mode
コメント#
文字で始まります。
次の行を init.el のどこかに追加します。
(setq-default comment-start "# ")
これにより、「 # 」が基本モードのデフォルトのコメント文字列になりますが、これはとにかく妥当なデフォルトです。
このコード スニペットを使用して、変数を調整して、正規表現 (一致するファイル名 (拡張子)) とコメント文字列のペアを含めることができます。また、 を設定したい場合はcomment-end
、ペアを 3 つ組にして、それに応じて関数を調整します。
(defvar comment-based-on-extension-alist '((".el$" . "gg") (".txt$" . " >") (".odd$" . "$"))
"alist of regexps and comment characters")
(defun setup-comment-based-on-extension ()
(let ((alist comment-based-on-extension-alist))
(while alist
(when (string-match-p (caar alist) (buffer-file-name))
(setq comment-start (cdar alist))
(setq alist nil))
(setq alist (cdr alist)))))
(add-hook 'find-file-hook 'setup-comment-based-on-extension)
あなたができることは(setq comment-start "#")
、それらのバッファの 1 つで毎回評価することです。これにより、リージョンで実行(comment-region)
したときに、 と同様に機能することが保証されます(comment-dwim)
。
たとえば、キーバインドを関数としてバインドすることもできます。
編集:実験の後、Emacsで一度評価した後、基本モードではそのままになると思います。一度評価するだけでよいので、これは非常に便利です。