Подтвердить что ты не робот

Автоматическое форматирование исходного файла в emacs

Как применить набор правил форматирования к существующему исходному файлу в emacs?

В частности, у меня есть файл сборки (*.s), но мне нужна общая команда для всех типов файлов.

Я пытаюсь использовать стиль M-x c-set-style с gnu, но я получаю сообщение об ошибке:

Буфер *.s не является буфером режима CC (c-set-style)

4b9b3361

Ответ 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