2015-04-25 2 views
0

Я использую комментарий в стиле ocamldoc, но vim меня раздражает, потому что он откладывает комментарий, когда он не должен.Bad Indentation of OCaml Комментарии в vim

Например, с помощью следующего кода:

(** 
* {[ 

Если открыть новую строку, когда будучи второй строке кода выше, ВИМ будет отступа кода, так это будет выглядеть:

(** 
* {[ 
    * 

Поэтому мне нужно удалить 4 пробела каждый раз.

Я пробовал использовать ocp-indent, но результат тот же.

Что я могу сделать, чтобы не иметь четырех дополнительных пространств, когда я открываю новую строку в комментарии ocamldoc?

Спасибо.

ответ

1

Я обнаружил, что могу получить желаемое поведение, отредактировав файл indent ocaml.

Я обновил линии 208:

if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$' 

к: (. Я удалил \[ шаблон из этого регулярного выражения)

if lline =~ '\(:\|=\|->\|<-\|(\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$' 

Это изменение имеет эффект не отступа после [ вне комментария также, но я не возражаю против этого побочного эффекта.

Я позволю этому вопросу открыть несколько дней, чтобы узнать, есть ли лучшее решение.

1

Ведущие звезды в комментариях вообще не идиоматичны в OCaml (и плохо обрабатываются ocamldoc), просто бросайте звезды.

Поведение, которое вы наблюдали, вероятно, ожидается. Большинство двигателей отступов пытаются отступать от кода в комментариях, а {[ - это начало кода, который объясняет отступ.

+0

Ну, я не уверен, что это отступы всегда ожидаются, так как это происходит, если я набираю '(' вместо '{[' и '(', похоже, не имеет никакого значения в 'ocamldoc'. Кстати, 'ocamldoc' имеет опцию' -stars' для поддержки этого форматирования. – antoyo

Смежные вопросы