Mise en forme automatique d’un fichier source dans emacs

Comment appliquer un ensemble de règles de mise en forme à un fichier source existant dans emacs?

Plus précisément, j’ai un fichier d’assemblage ( *.s ), mais j’aimerais une commande générique pour tous les types de fichiers.

J’essaie d’utiliser Mx c-set-style avec le style gnu , mais je reçois une erreur:

Le tampon * .s n’est pas un tampon en mode CC (style c-set)

Ouvrez le fichier puis indentez-le en indentant toute la région:

 Mx find-file /path/to/file RET Cx h (Mx mark-whole-buffer) CM-\ (Mx indent-region) 

Maintenant, il semble que vous essayiez d’appliquer une indentation C à un tampon qui n’est pas en mode C. Pour le mettre en mode C

 Mx c-mode 

Ou c++-mode , ou quel que soit le mode que vous voulez. Mais, comme il s’agit d’un code assembleur, vous souhaiterez probablement utiliser le mode assembleur (que Emacs utilisera par défaut pour les fichiers .s). Dans ce cas, la commande d’indentation ci-dessus ( CM-\ est également appelée Mx indent-region ) devrait fonctionner pour vous.

Remarque: la séquence de commandes en haut peut être convertie 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 apprendre à associer des modes majeurs à des fichiers basés sur des extensions, consultez la documentation de auto-mode-alist . Pour être juste, ce n’est pas nécessairement une extension, juste des expressions régulières correspondant au nom de fichier.

Essayez Mx asm-mode . Cela passera en mode assembleur. Vous ne savez pas comment cela se passera avec l’assembleur intégré au milieu d’un fichier C.

si vous voulez un tampon de mise en retrait

 (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 devriez append un style de mode de langue d’assemblage dans votre fichier custom.el

Le mode principal qu’il utilise pour vos fichiers .s ne sera pas cc-mode, donc c-set-style n’a aucun sens. Cependant, vous pouvez toujours entrer manuellement en mode cc (mode Mx cc) et ensuite faire le style c-set souhaité. Cependant, comme les styles C sont indexés pour le code source C et non pour l’assembleur, ce n’est certainement pas ce que vous voulez faire.

si vous souhaitez indenter à partir de la ligne de commande, utilisez:

 emacs --batch  -f verilog-batch-indent