Отступ «если» в Ocaml под Emacs - PullRequest
1 голос
/ 19 июля 2011

Я кодирую 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 ]

2 голосов
/ 19 февраля 2013

Теперь вы можете использовать ocp-indent , который (почти всегда) будет соответствовать правилам программирования Caml. Единственное отличие состоит в том, что он будет делать отступ для последнего выражения, чтобы избежать путаницы при определении области действия:

if cond1 then e1 else
if cond2 then e2 else
if cond3 then e3 else
  e4;
e5
1 голос
/ 20 июля 2011

Кажется, что-то не так.Вы используете 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.

1 голос
/ 22 июля 2011

Вы можете установить переменную 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 просмотреть все параметры отступа (и другие).

0 голосов
/ 19 июля 2011

Вас не устраивает следующее?

if c1 then e1
else if c2 then e2
else if c3 then e3
else e4
...