Отступ "если" в Ocaml под Emacs
Я кодирую Ocaml с Emacs, на данный момент установка отступа if
дает следующее:
if cond1 then e1 else
if cond2 then e2 else
if cond3 then e3 else
e4
Я хотел бы реализовать тот же формат, что и рекомендации по программированию Caml:
if cond1 then e1 else
if cond2 then e2 else
if cond3 then e3 else
e4
Кто-нибудь может сказать мне, какой параметр связан с этим? Спасибо
Edit1: вот мой .emacs
4 ответа
Кажется, что-то не так. Вы используете caml-mode из дистрибутива OCaml? Потому что я делаю отступы в соответствии с рекомендациями по программированию без установки каких-либо параметров. Вот что у меня в моем .emacs
(режим установлен в ~/.emacs.d/caml-mode
):
;; Caml mode
(setq load-path (cons "~/.emacs.d/caml-mode" load-path))
(setq auto-mode-alist (cons '("\\.ml[iylp]?" . caml-mode) auto-mode-alist))
(autoload 'caml-mode "caml" "Major mode for editing Caml code." t)
(autoload 'run-caml "inf-caml" "Run an inferior Caml process." t)
(autoload 'camldebug "camldebug" "Run the Caml debugger." t)
(if window-system (require 'caml-font))
Если вы используете режим туарегов, я не могу вам помочь. Однако обратите внимание, что вопреки распространенному мнению, caml-режим из дистрибутива прекрасно работает и все еще поддерживается авторами OCaml.
Теперь вы можете использовать ocp-indent, который будет (почти всегда) соблюдать правила программирования Caml. Единственное отличие состоит в том, что он будет делать отступ для последнего выражения, чтобы избежать путаницы при определении области видимости:
if cond1 then e1 else
if cond2 then e2 else
if cond3 then e3 else
e4;
e5
Вы можете установить переменную tuareg-if-then-else-indent
к 0, который затем будет отступать ваш пример как
if cond1 then e1 else
if cond2 then e2 else
if cond3 then e3 else
e4
Я не знаю, вызывает ли это другие нежелательные отступы, если вы еще не вложили if. Вы также можете M-x customize-group RET tuareg RET
чтобы увидеть все отступы (и другие) варианты.
Вы не удовлетворены следующим?
if c1 then e1
else if c2 then e2
else if c3 then e3
else e4