У меня есть ~ 30.000 строк кода с отступом OCAMl (включая файлы mly и mll) и хотелось бы отступывать их. Я пробовал поиск в googling для «ocaml indent», ближайшим из которых я могу воспользоваться, - использовать Omlet.vim и набирать код по одной строке за раз (через C-f в режиме вставки). Есть ли способ сделать отступ для всех 30000 строк?Как отступ существующего кода OCaml
ответ
Я использую Emacs как мой редактор с этим пакетом:
http://caml.inria.fr/pub/docs/u3-ocaml/emacs/index.html
Для отступа существующего кода вам нужно, чтобы выделить его, а затем использовать комбинацию клавиш C-M-\
Вы можете скрипт это за файл довольно легко, и я считаю, что отступы довольно хороши.
Когда я хочу, чтобы повторно отступы весь файл в Vim, я использую следующую последовательность клавиш:
ггVG=
Разорвать это вниз для вас, gg перемещает курсор в начало файла. V входит в визуальный режим. G выбирает в конец файла. = отступы выделенных линий.
Это должно быть намного быстрее, чем ваш метод применения отступов по строкам, но все же будет использовать те же правила (предупреждение: использование Omlet, отступы целого файла могут занять некоторое время).
Теперь можно использовать OCP-отступа (opam установить OCP-отступы) и ссылаться на него, как это:
ocp-indent bad-indented-ocaml.ml > well-indented-file.ml
Используйте ocp-indent
инструмент для этого. Вот пример правила Makefile
, который автоматически отступят вам ml
файлов.
.PHONY: auto-ocp-indent
auto-ocp-indent: *.ml
for mlfile in $^; do ocp-indent -i $$mlfile; done
Спасибо, что сработало. – vbigiani
Вы можете сделать то же самое в tuareg-режиме с помощью 'M-q'. Не знаю, как он масштабируется до тысяч строк. –
@ Крис, ты прав. Я использовал tuareg, когда начал изучать OCaml, и я думаю, что он более популярен, чем пакет, размещенный на сайте inria. Я просто предпочитаю пакет, который я разместил. Но возьмите это с солью, поскольку я не самый отполированный программист OCaml;) – chollida