web-dev-qa-db-fra.com

Auto-formater un fichier source dans emacs

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)

46
Yuval Adam

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.

107
Trey Jackson

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.

7
pgs

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)))
3
user1990

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.

1
cppguy

si vous souhaitez mettre en retrait à partir de la ligne de commande, utilisez:

emacs --batch  <filenames.v>  -f verilog-batch-indent
0
Srihari K.P

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.

0
stsquad