Emacsの既存のソースファイルに一連のフォーマットルールを適用するにはどうすればよいですか?
具体的には、アセンブリ(*.s
)ファイルがありますが、すべての種類のファイルの汎用コマンドが必要です。
gnu
スタイルでM-x c-set-style
を使用しようとしていますが、エラーが発生しています:
バッファー* .sはCCモードバッファーではありません(c-set-style)
ファイルを開き、リージョン全体をインデントしてインデントします。
M-x find-file /path/to/file RET
C-x h (M-x mark-whole-buffer)
C-M-\ (M-x indent-region)
これで、CモードではないバッファーにCインデントを適用しようとしているように見えます。 Cモードにするには
M-x c-mode
またはc++-mode
、または任意のモード。しかし、それはアセンブラーコードなので、おそらくアセンブラーモードが必要です(Emacsはデフォルトで.sファイルに対してこれを行います)。その場合、上記のインデントコマンド(C-M-\
はM-x indent-region
とも呼ばれます)が機能します。
注:上部のコマンドシーケンスは、次のように1つのコマンドにまとめることができます。
(defun indent-file (file)
"Prompt for a file and indent it according to its major mode"
(interactive "fWhich file do you want to indent: ")
(find-file file)
;; uncomment the next line to force the buffer into a c-mode
;; (c-mode)
(indent-region (point-min) (point-max)))
また、拡張子に基づいてメジャーモードとファイルを関連付ける方法を学習する場合は、 auto-mode-alistのドキュメント を確認してください。公平を期すために、それは必ずしも拡張子ベースではなく、ファイル名と一致する正規表現だけです。
M-x asm-mode
。これにより、アセンブラーモードに切り替わります。 Cファイルの中央に組み込まれたアセンブラでどのように動作するかはわかりません。
現在のバッファーをインデントする場合
(defun iwb ()
"indent whole buffer"
(interactive)
(delete-trailing-whitespace)
(indent-region (point-min) (point-max) nil)
(untabify (point-min) (point-max)))
emacsはファイル名拡張子を使用してモードを識別します。custom.elファイルにアセンブル言語モードスタイルを追加する必要があります
コマンドラインからインデントしたい場合:
emacs --batch <filenames.v> -f verilog-batch-indent
.sファイルに使用しているメジャーモードはccモードではないため、c-set-styleは意味がありません。ただし、いつでも手動でcc-mode(M-x cc-mode)に入り、その後、希望するc-set-styleを実行できます。ただし、CスタイルはアセンブラではなくCソースコードに対応しているため、これはほぼ確実にnotしたいことです。