Comment appliquer un ensemble de règles de formatage à un fichier source existant dans emacs?
Plus précisément, j'ai un fichier Assembly (*.s
), mais j'aimerais une commande générique pour tous les types de fichiers.
J'essaie d'utiliser M-x c-set-style
avec le style gnu
, mais j'obtiens une erreur:
Buffer * .s n'est pas un tampon de mode CC (style de c-set)
Ouvrez le fichier puis indentez-le en indentant toute la région:
M-x find-file /path/to/file RET
C-x h (M-x mark-whole-buffer)
C-M-\ (M-x indent-region)
Il semblerait que vous essayiez d'appliquer l'indentation C à un tampon qui n'est pas en mode C. Pour le mettre en mode C
M-x c-mode
Ou c++-mode
, ou le mode que vous voulez. Mais, étant donné que c'est du code assembleur, vous voulez probablement le mode assembleur (ce que Emacs fera par défaut pour les fichiers .s). Dans ce cas, la commande d'indentation ci-dessus (C-M-\
est également appelée M-x indent-region
) devrait fonctionner pour vous.
Remarque: la séquence de commandes en haut peut être fusionnée en une seule commande comme celle-ci:
(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)))
Et si vous voulez savoir comment associer des modes principaux à des fichiers basés sur des extensions, consultez la documentation pour auto-mode-alist . Pour être honnête, il ne s'agit pas nécessairement d'une extension, mais uniquement d'expressions régulières correspondant au nom de fichier.
Essayez M-x asm-mode
. Cela passera en mode assembleur. Vous ne savez pas comment cela se passera avec un assembleur intégré au milieu d'un fichier C.
si vous voulez mettre en retrait le tampon actuel
(defun iwb ()
"indent whole buffer"
(interactive)
(delete-trailing-whitespace)
(indent-region (point-min) (point-max) nil)
(untabify (point-min) (point-max)))
emacs utilisera l’extension de nom de fichier pour identifier le mode; vous devez ajouter un style de mode assembler la langue dans votre fichier custom.el.
si vous souhaitez mettre en retrait à partir de la ligne de commande, utilisez:
emacs --batch <filenames.v> -f verilog-batch-indent
Le mode majeur utilisé pour vos fichiers .s ne sera pas le mode cc, c-set-style n’a donc aucun sens. Cependant, vous pouvez toujours entrer manuellement en mode cc (mode M-x cc), puis créer le style de c-set souhaité. Toutefois, comme les styles C sont définis pour le code source C et non pour l’assembleur, c’est presque certainement ce que vous voulez faire pas.