2009-12-17 2 views
12

У меня есть ~ 30.000 строк кода с отступом OCAMl (включая файлы mly и mll) и хотелось бы отступывать их. Я пробовал поиск в googling для «ocaml indent», ближайшим из которых я могу воспользоваться, - использовать Omlet.vim и набирать код по одной строке за раз (через C-f в режиме вставки). Есть ли способ сделать отступ для всех 30000 строк?Как отступ существующего кода OCaml

ответ

8

Я использую Emacs как мой редактор с этим пакетом:

http://caml.inria.fr/pub/docs/u3-ocaml/emacs/index.html

Для отступа существующего кода вам нужно, чтобы выделить его, а затем использовать комбинацию клавиш C-M-\

Вы можете скрипт это за файл довольно легко, и я считаю, что отступы довольно хороши.

+0

Спасибо, что сработало. – vbigiani

+1

Вы можете сделать то же самое в tuareg-режиме с помощью 'M-q'. Не знаю, как он масштабируется до тысяч строк. –

+0

@ Крис, ты прав. Я использовал tuareg, когда начал изучать OCaml, и я думаю, что он более популярен, чем пакет, размещенный на сайте inria. Я просто предпочитаю пакет, который я разместил. Но возьмите это с солью, поскольку я не самый отполированный программист OCaml;) – chollida

3

Когда я хочу, чтобы повторно отступы весь файл в Vim, я использую следующую последовательность клавиш:

ггVG=

Разорвать это вниз для вас, gg перемещает курсор в начало файла. V входит в визуальный режим. G выбирает в конец файла. = отступы выделенных линий.

Это должно быть намного быстрее, чем ваш метод применения отступов по строкам, но все же будет использовать те же правила (предупреждение: использование Omlet, отступы целого файла могут занять некоторое время).

1

Теперь можно использовать OCP-отступа (opam установить OCP-отступы) и ссылаться на него, как это:

ocp-indent bad-indented-ocaml.ml > well-indented-file.ml 
0

Используйте ocp-indent инструмент для этого. Вот пример правила Makefile, который автоматически отступят вам ml файлов.

.PHONY: auto-ocp-indent 
auto-ocp-indent: *.ml 
    for mlfile in $^; do ocp-indent -i $$mlfile; done