Ho ~ 30.000 righe di codice OCaml con rientro grave (inclusi file mly e mll) e vorrei indentarle. Ho provato googling per le variazioni di 'ocaml indent' il più vicino che posso ottenere è utilizzare Omlet.vim e indentare il codice una riga alla volta (tramite C-f in modalità di inserimento). C'è un modo per fare il rientro per tutte le 30000 linee?Come rientrare codice OCaml esistente
risposta
Io uso Emacs come editor con questo pacchetto installato:
http://caml.inria.fr/pub/docs/u3-ocaml/emacs/index.html
Per far rientrare il codice esistente è necessario evidenziarlo e quindi utilizzare la combinazione di tasti C-M-\
È possibile creare script questo per file abbastanza facilmente e trovo che il rientro sia piuttosto buono.
Quando voglio ri-trattino un intero file in vim, utilizzo la seguente sequenza di tasti:
ggVG=
Rottura questo giù per voi, gg sposta il cursore all'inizio del file. V entra in modalità visuale. G seleziona fino alla fine del file. = indenta le linee selezionate.
Questo dovrebbe essere molto più veloce del metodo di applicazione del rientro riga per riga, ma utilizzerà comunque le stesse regole (attenzione: utilizzando Omlet, il rientro di un intero file potrebbe richiedere un po 'di tempo).
Ora, si può usare OCP-trattino (OPAM installare OCP-trattino) e richiamare in questo modo:
ocp-indent bad-indented-ocaml.ml > well-indented-file.ml
Usa ocp-indent
strumento per questo. Ecco una regola di esempio Makefile
, che farà rientrare automaticamente i file ml
.
.PHONY: auto-ocp-indent
auto-ocp-indent: *.ml
for mlfile in $^; do ocp-indent -i $$mlfile; done
- 1. Come rientrare le direttive #if nel codice?
- 2. Estensione di un tipo esistente in OCaml
- 3. Come rientrare Vim dopo:! bash?
- 4. Come posso ottenere emacs Per far rientrare le altre cose, come si fa rientrare definire?
- 5. Come compilare ocaml al codice nativo
- 6. Come debugare correttamente il codice OCaml?
- 7. ocaml pretty printer (formattatore del codice)
- 8. Decompilare i file di codice byte OCaml
- 9. compatibilità di codice tra OCaml e F #
- 10. Strumenti per la profilazione del codice OCaml
- 11. Android Eclipse Importa codice esistente
- 12. IDE per linguaggio OCaml
- 13. Fare tab per rientrare la riga corrente
- 14. OCaml - come caricare file.ml
- 15. Come posso personalizzato rientrare un file con vim?
- 16. Come far rientrare il contenuto della regione con C#?
- 17. Codice prime migrazioni Con tabella esistente
- 18. Porting di codice C++ esistente a R
- 19. Scrivi codice nidissimo if-then-else nidificato abbastanza in OCaml?
- 20. Come configurare Eclipse per utilizzare un repository git esistente con codice sorgente esistente?
- 21. Framework per strutturare il codice JS esistente
- 22. php find emoji [aggiornamento codice esistente]
- 23. Implementazione Ocaml
- 24. Come portare il codice C++ esistente in C++ 11
- 25. Come cancellare e ricreare un codice EF esistente Primo database
- 26. Come installare corebuild in ocaml
- 27. "come" parola chiave in OCaml
- 28. Migliorare il codice lambda OCaml genera per asserzioni
- 29. modulo usando includono in OCaml
- 30. OCaml Printf.sprintf
Grazie, ha funzionato. – vbigiani
Puoi fare la stessa cosa in modalità tuareg con 'M-q'. Non so come scala a migliaia di linee però. –
@ Chris, hai ragione. Ho usato tuareg quando ho iniziato ad imparare OCaml e penso che sia più popolare del pacchetto ospitato sul sito di inria. Mi capita solo di preferire il pacchetto che ho postato. Ma prendilo con un pizzico di sale perché non sono il programmatore OCaml più lucido in giro;) – chollida