Автоформатирование исходного файла в emacs - PullRequest
46 голосов
/ 14 июня 2009

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

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

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

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

Ответы [ 6 ]

109 голосов
/ 14 июня 2009

Откройте файл, а затем сделайте отступ, указав отступ для всего региона:

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 . Чтобы быть справедливым, это не обязательно основано на расширении, просто регулярные выражения сопоставляются с именем файла.

7 голосов
/ 14 июня 2009

Попробуйте M-x asm-mode. Это переключится в режим ассемблера. Не уверен, как все пойдет с ассемблером, встроенным в середину файла C.

3 голосов
/ 13 марта 2015

если вы хотите сделать отступ в текущем буфере

(defun iwb ()
  "indent whole buffer"
  (interactive)
  (delete-trailing-whitespace)
  (indent-region (point-min) (point-max) nil)
  (untabify (point-min) (point-max)))
1 голос
/ 14 июня 2009

emacs будет использовать расширение имени файла для определения режима, вы должны добавить немного стиля режима языка ассемблера в ваш файл custom.el

0 голосов
/ 03 марта 2016

, если вы хотите сделать отступ из командной строки, используйте:

emacs --batch  <filenames.v>  -f verilog-batch-indent
0 голосов
/ 15 июня 2009

Основной режим, который он использует для ваших файлов .s, не будет cc-mode, поэтому c-set-style не имеет смысла. Однако вы всегда можете вручную войти в cc-mode (M-x cc-mode), а затем выполнить желаемый стиль c-set. Тем не менее, поскольку стили C являются ключом для исходного кода C, а не для ассемблера, это почти наверняка не , что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...