Tengo ~ 30.000 líneas de código OCaml mal indentado (incluidos los archivos mly y mll) y me gustaría aplicarles sangría. Intenté buscar variaciones de 'ocaml indent' en Google, lo más cercano que puedo hacer es usar Omlet.vim y aplicar sangría al código línea por línea (mediante C-f en modo insertar). ¿Hay alguna manera de hacer la sangría para todas las 30000 líneas?Cómo sangrar el código OCaml existente
Respuesta
utilizo Emacs como mi editor con este paquete instalado:
http://caml.inria.fr/pub/docs/u3-ocaml/emacs/index.html
Para sangrar el código existente que necesita para resaltarlo y luego usar la combinación de teclas C-M-\
Puede este script por archivo con bastante facilidad y creo que la sangría es bastante buena.
Cuando quiero volver a guión todo un archivo en vim, utilizo la siguiente secuencia de teclas:
ggVG=
Romper esto abajo para usted, gg mueve el cursor al comienzo del archivo. V ingresa al modo visual. G selecciona hasta el final del archivo. = sangra las líneas seleccionadas.
Esto debería ser mucho más rápido que su método de aplicar sangría línea por línea, pero aún así usará las mismas reglas (advertencia: utilizando Omlet, sangría todo un archivo puede tardar un tiempo).
Ahora, uno puede usar OCP-guión (OPAM instalar OCP-guión) e invocar así:
ocp-indent bad-indented-ocaml.ml > well-indented-file.ml
Uso ocp-indent
herramienta para esto. Aquí hay una regla de ejemplo Makefile
, que automáticamente le sangrará los archivos ml
.
.PHONY: auto-ocp-indent
auto-ocp-indent: *.ml
for mlfile in $^; do ocp-indent -i $$mlfile; done
- 1. ¿Cómo sangrar automáticamente el código fuente?
- 2. ¿Cómo sangrar automáticamente el código JavaScript en Aptana Studio?
- 3. ¿Cómo sangrar correctamente el código mixto PHP/HTML?
- 4. ¿Cómo puedo sangrar el código Ruby and Rails en Vim?
- 5. Extender un tipo existente en OCaml
- 6. Herramientas para perfilar el código OCaml
- 7. Cómo compilar ocaml al código nativo
- 8. ¿Cómo sangrar correctamente clojure/lisp?
- 9. Código de Emacs para establecer automáticamente el modo indent-tabs según el código existente
- 10. php find emoji [actualizar el código existente]
- 11. ocaml impresora bonita (formateador de código)
- 12. Uso de Emacs para sangrar (cambio 4) código
- 13. Estilo pregunta sobre pieza de código existente (C/C++)
- 14. ¿Cómo sangrar el patrón de interfaz fluido "correctamente" con eclipse?
- 15. compatibilidad de código entre OCaml y F #
- 16. Mejorando el código lambda OCaml genera para las aserciones
- 17. Cómo sangrar automáticamente un bloque en vim
- 18. ¿Cómo sangrar XML correctamente utilizando XMLSerializer?
- 19. Java: cómo sangrar XML generado por Transformer
- 20. ¿Cómo puedo sangrar la salida de salida?
- 21. Cómo sangrar líneas múltiples en vim/gvim?
- 22. ¿Cómo sangrar el contenido de la región con C#?
- 23. ¿Cómo funciona el alcance variable de Ocaml?
- 24. módulos OCaml y el rendimiento
- 25. Desplazar el código existente a Test Driven Development
- 26. ¿Cómo puedo especificar contratos de código para el código de marco existente (BCL)?
- 27. Código primeras migraciones Con tabla existente
- 28. Cómo sangrar F # código en Visual Studio 2008 en modo #Light
- 29. ejecutar nuevo código java en el proceso jvm existente
- 30. Java: genera el código CREATE TABLE de una tabla existente
Gracias, eso funcionó. – vbigiani
Puede hacer lo mismo en tuareg-mode con 'M-q'. Sin embargo, no sé cómo se adapta a miles de líneas. –
@Chris, estás en lo correcto. Utilicé tuareg cuando comencé a aprender OCaml y creo que es más popular que el paquete alojado en el sitio de inria. Simplemente prefiero el paquete que publiqué. Pero tome eso con un grano de sal ya que no soy el programador de OCaml más pulido;) – chollida