J'ai ~ 30.000 lignes de code OCaml mal indenté (y compris les fichiers mly et mll) et je voudrais les mettre en retrait. J'ai essayé googling pour les variations de 'retrait ocaml' le plus proche que je peux obtenir est d'utiliser Omlet.vim et indenter le code une ligne à la fois (via C-f en mode insertion). Y at-il un moyen de faire l'indentation pour toutes les 30000 lignes?Comment mettre en retrait le code OCaml existant
Répondre
J'utilise Emacs comme éditeur avec ce package installé:
http://caml.inria.fr/pub/docs/u3-ocaml/emacs/index.html
Pour mettre en retrait le code existant, vous devez le mettre en surbrillance puis utilisez la combinaison de touches C-M-\
Vous pouvez écrire le script ce par fichier assez facilement et je trouve que l'indentation est plutôt bonne.
Quand je veux réindenter un fichier entier dans vim, j'utilise la séquence suivante:
ggVG=
Briser ce bas pour vous, gg déplace le curseur au début du fichier. V entre en mode visuel. G sélectionne à la fin du fichier. = indente les lignes sélectionnées. Cela devrait être beaucoup plus rapide que votre méthode d'application ligne par ligne, mais utilisera les mêmes règles (avertissement: en utilisant Omlet, indenter un fichier entier peut prendre un certain temps).
Maintenant, on peut utiliser-indent ocp (OPAM install-tiret ocp) et l'invoquer comme ceci:
ocp-indent bad-indented-ocaml.ml > well-indented-file.ml
Utilisez ocp-indent
outil pour cela. Voici un exemple de règle Makefile
, qui vous mettra automatiquement en retrait ml
fichiers.
.PHONY: auto-ocp-indent
auto-ocp-indent: *.ml
for mlfile in $^; do ocp-indent -i $$mlfile; done
Merci, cela a fonctionné. – vbigiani
Vous pouvez faire la même chose en mode tuareg avec 'M-q'. Je ne sais pas comment cela évolue en milliers de lignes. –
@Chris, vous avez raison. J'ai utilisé le touareg quand j'ai commencé à apprendre OCaml et je pense qu'il est plus populaire que le paquet hébergé sur le site inria. Je viens de préférer le paquet que j'ai posté. Mais prenez cela avec un grain de sel car je ne suis pas le programmeur OCaml le plus poli autour;) – chollida