dans Emacs, j'ai format un fichier comme: 1) C-X H (ou M-X Mark-Tampon entier) 2) C-M- \ (ou M-X Enceinte-Région) P>
J'ai besoin d'aide Montrez-moi comment formater tous les fichiers sous un dir? P>
4 Réponses :
Vous pouvez essayer ceci:
(defun format-all-files (regexp)
"Format multiple files in one command."
(interactive "sFind files matching regexp (default all): ")
(when (string= "" regexp) (setq regexp ""))
(let ((dir (file-name-directory regexp))
(nodir (file-name-nondirectory regexp)))
(when dir (cd dir))
(when (string= "" nodir) (setq nodir "."))
(let ((files (directory-files "." t nodir nil t))
(errors 0))
(while (not (null files))
(let ((filename (car files)))
(if (file-readable-p filename)
(progn
(set-buffer (find-file-noselect filename))
(mark-whole-buffer)
(indent-region-or-balanced-expression)
(save-buffer)
(kill-buffer (current-buffer)))
(incf errors))
(setq files (cdr files))))
(when (> errors 0)
(message (format "%d files were unreadable." errors))))))
Je soupçonne que ce ne sera pas "charger le mode spécifique au fichier encore et encore" et fonctionnera à la place raisonnablement rapide (pas que je l'ai essayé en fait :-)
Merci, mais eu une erreur avec ceci: Laissez: Mauvais nombre d'arguments: fichiers de répertoire, 5
Créer une macro pour le faire. Ouvrez le répertoire dans DIRED ( C-X D KBD>), puis: P>
Alors maintenant, vous avez une macro qui ouvre le fichier sur la ligne actuelle, le format-le, redevient dirigé vers l'avant et met sur la ligne suivante. Exécutez-le avec F4 KBD> autant de fois que nécessaire. P>
buffer-buffer code>. Vous serez de retour dans le tampon artificiel. Li>
Je pense que cela devrait être marqué comme la réponse correcte pour sa simplicité. Au lieu de m-x bury-tampon code>, je préfère le tuer c-x k code>.
Voici une autre façon d'y aller:
Premièrement, évaluez la définition de cette fonction dans votre Suivant , ouvrez un tampon aride au niveau supérieur du répertoire sous lequel vous souhaitez modifier tous les fichiers. Donnez à la commande exprimée un préfixe numérique de sorte qu'il demandera aux commutateurs de donner à la commande Suivant, marquez tous les fichiers réguliers de la liste des répertoires récursifs: premier * / kbd> pour marquer tous les répertoires, puis * t kbd> Pour basculer la sélection. p> Enfin, exécutez la commande ci-dessus: MX tiret-fichier-fichiers-fichiers kbd>. p> être Conscient que si vous avez déjà des tampons visitant l'un des fichiers cible, ils seront tués par * gratter * code> tampon: p> ls code> et ajoutez le commutateur r code> (recueil): CU CX d R RET VOTRE-Directory RET KBD>. P> des fichiers marqués d'indent code>. Sachez également qu'aucun des changements de fichiers ne sera annulable; utiliser avec précaution! Je l'ai testé dans un cas simple et il semble fonctionner comme décrit, mais je ne fais aucune garantie. P> p>
La solution avec les macros proposées par @legoscia est définitive et plus intuitive.
Je suis en retard dans la réponse à cette question, mais c'est toujours le premier résultat sur Google.
J'ai fait une amélioration de la réponse échantillon Utilisation: Ce exécutera mx My / indent-fichiers code> alors ~ / dropbox code> alors .org < /code >. indent-région code> sur la .org code> fichiers, sauvegarder le tampon puis tuer il. p> p>