Автоматическое форматирование исходного файла в emacs
Как применить набор правил форматирования к существующему исходному файлу в emacs?
В частности, у меня есть файл сборки (*.s
), но мне нужна общая команда для всех типов файлов.
Я пытаюсь использовать стиль M-x c-set-style
с gnu
, но я получаю сообщение об ошибке:
Буфер *.s не является буфером режима CC (c-set-style)
Ответы
Ответ 1
Откройте файл, а затем отступьте его, отстудив всю область:
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
) должна работать для вас.
Примечание: последовательность команд сверху может быть свернута в одну команду следующим образом:
(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. Справедливости ради, это не обязательно расширение на основе, просто регулярные выражения, сопоставляемые с именем файла.
Ответ 2
Попробуйте M-x asm-mode
. Это переключится в ассемблерный режим. Не знаете, как это будет происходить с ассемблером, встроенным в середину файла C.
Ответ 3
если вы хотите, чтобы буфер текущего отступа
(defun iwb ()
"indent whole buffer"
(interactive)
(delete-trailing-whitespace)
(indent-region (point-min) (point-max) nil)
(untabify (point-min) (point-max)))
Ответ 4
emacs будет использовать расширение имени файла для идентификации режима, вы должны добавить некоторый стиль стиля компоновки в свой файл custom.el
Ответ 5
Основной режим, который он использует для ваших .s файлов, не будет cc-mode, поэтому c-set-style не имеет смысла. Однако вы всегда можете вручную ввести cc-mode (M-x cc-mode), а затем выполнить требуемый стиль c-set. Однако, поскольку стили C используются для исходного кода C, а не для ассемблера, это почти не то, что вы хотите сделать.
Ответ 6
если вы хотите отступать от командной строки, используйте:
emacs --batch <filenames.v> -f verilog-batch-indent