在emacs中自动格式化源文件
如何将一组格式化规则应用于emacs中的现有源文件?
具体来说,我有一个程序集( *.s
)文件,但我想为所有types的文件的通用命令。
我想用gnu
风格的Mx c-set-style
风格,但我得到一个错误:
缓冲区* .s不是CC模式缓冲区(c-set-style)
打开文件,然后通过缩进整个区域来缩进:
Mx find-file /path/to/file RET Cx h (Mx mark-whole-buffer) CM-\ (Mx indent-region)
现在,看起来你正试图将C缩进应用到一个不处于C模式的缓冲区。 为了进入C模式
Mx c-mode
或者c++-mode
,或者你想要的任何模式。 但是,由于是汇编代码,因此您可能需要汇编模式(Emacs默认为.s文件执行)。 在这种情况下,上面的缩进命令( CM-\
也被称为Mx indent-region
)应该适合您。
注意:顶部的命令序列可以像这样一个命令:
(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)))
而且,如果您想了解如何将主要模式与基于扩展名的文件相关联,请查看自动模式alist的文档 。 公平地说,它不一定是基于扩展名,只是正则expression式匹配文件名。
尝试Mx asm-mode
。 这将切换到汇编模式。 不知道如何将汇编器embedded到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文件中添加一些汇编语言模式样式
它用于.s文件的主要模式不是cc模式,因此c-set-style是没有意义的。 但是,您始终可以手动inputcc模式(Mx cc模式),然后执行所需的c-set-style。 然而,由于C风格是C源代码的键,而不是汇编器,这几乎肯定不是你想要做的。
如果你想从命令行缩进使用:
emacs --batch <filenames.v> -f verilog-batch-indent