Wie wende ich einen Satz von Formatierungsregeln auf eine vorhandene Quelldatei in Emacs an?
Ich habe zwar eine Assembly (*.s
) -Datei, möchte aber einen generischen Befehl für alle Arten von Dateien.
Ich versuche, M-x c-set-style
mit gnu
style zu verwenden, erhalte aber eine Fehlermeldung:
Puffer * .s ist kein CC-Modus-Puffer (c-set-style)
Öffnen Sie die Datei und rücken Sie sie ein, indem Sie die gesamte Region einrücken:
M-x find-file /path/to/file RET
C-x h (M-x mark-whole-buffer)
C-M-\ (M-x indent-region)
Nun sieht es so aus, als ob Sie versuchen, C-Eindruck auf einen Puffer anzuwenden, der nicht im C-Modus ist. Um in den C-Modus zu gelangen
M-x c-mode
Oder c++-mode
oder welcher Modus Sie auch möchten. Da es sich jedoch um Assembler-Code handelt, möchten Sie wahrscheinlich den Assembler-Modus (den Emacs standardmäßig für .s-Dateien verwendet). In diesem Fall sollte der Einrückungsbefehl (C-M-\
ist auch als M-x indent-region
bezeichnet) für Sie funktionieren.
Hinweis: Die Befehlssequenz oben kann wie folgt in einen einzigen Befehl gerollt werden:
(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)))
Wenn Sie lernen möchten, wie Major-Modi Dateien mit Erweiterungen zugeordnet werden, lesen Sie die Dokumentation für Auto-Mode-Alist . Um fair zu sein, ist es nicht unbedingt eine Erweiterung, sondern reguläre Ausdrücke, die mit dem Dateinamen abgeglichen werden.
Versuchen Sie M-x asm-mode
. Das wechselt in den Assembler-Modus. Sie sind sich nicht sicher, wie der Assembler in einer C-Datei eingebettet wird.
wenn Sie den aktuellen Puffer einrücken möchten
(defun iwb ()
"indent whole buffer"
(interactive)
(delete-trailing-whitespace)
(indent-region (point-min) (point-max) nil)
(untabify (point-min) (point-max)))
emacs verwendet die Dateinamenerweiterung, um den Modus zu identifizieren. Sie sollten einen Assembler-Sprachmodus in Ihre custom.el-Datei einfügen
wenn Sie von der Befehlszeile aus einrücken möchten, verwenden Sie:
emacs --batch <filenames.v> -f verilog-batch-indent
Der Hauptmodus, der für Ihre .s-Dateien verwendet wird, ist nicht cc-mode, daher macht c-set-style keinen Sinn. Sie können jedoch jederzeit den cc-Modus (M-x cc-Modus) manuell aufrufen und dann den gewünschten c-set-Stil ausführen. Da die C-Stile jedoch für C-Quellcode und nicht für Assembler festgelegt sind, ist dies mit nicht das, was Sie tun möchten.