Взгляд на исходный код показывает, что caml-mode
не содержит отступов. Первопричина в caml-compute-final-indent
in caml.el
:
(defun caml-compute-final-indent()
(save-excursion
(back-to-indentation)
(cond
((and (bolp) (looking-at comment-start-skip)) (current-column))
((caml-in-comment-p)
(let ((closing (looking-at "\\*)"))
(comment-mark (looking-at "\\*")))
(caml-backward-comment)
(looking-at comment-start-skip)
(+ (current-column)
(cond
(closing 1)
(comment-mark 1)
(t (- (match-end 0) (match-beginning 0)))))))
(t (let* ((leading (looking-at caml-leading-kwops-regexp))
(assoc-val (if leading (assoc (caml-match-string 0)
caml-leading-kwops-alist)))
(extra (if leading (symbol-value (nth 1 assoc-val)) 0))
(prio (if leading (nth 2 assoc-val)
caml-max-indent-priority))
(basic (caml-compute-basic-indent prio)))
(max 0 (if extra (+ extra basic) (current-column))))))))
Этой функция вычисляет отступ смещения линии в точке. Первая ветвь в выражении cond
обрабатывает начало комментария и просто возвращает исходное смещение отступа без изменений.
Чтобы исправить это, вам придется повторно реализовать или посоветовать caml-compute-final-indent
. Вероятно, я не уверен и не тестировал его - достаточно скопировать всю реализацию на ваш init.el
и просто полностью удалить первую ветвь cond
. В этом случае отступ будет обрабатываться последней ветвью, которая вычисляет смещение отступа для выражений. Это может или, скорее всего, не сработает.
Из того, что я видел в исходном коде, я бы посоветовал против caml-mode
. Код устарел и не соответствует многим соглашениям, обязательным для современных режимов Emacs, и не использует функции, предоставляемые современными версиями Emacs, чтобы иметь дело с отступом. Это not really actively maintained, последние изменения - незначительные ошибки или исправления форматирования. Все крупные взносы состоялись не менее пяти лет назад.
Действительно использовать tuareg-mode
, в лучшем случае от MELPA, который обеспечивает последний моментальный снимок от tuareg-mode
SVN. Развитие tuareg-mode
несколько сонное, но там are at least some major changes with the last two years.