1

トゥアレグ モードでインデントを修正して、匿名の関数や構造体に大量のインデントが挿入されないようにする方法を見つけようとしています。私は過去にそれを使用しましたが、これはしていませんでしたが、今はそうです。この問題が解決するように設定する方法を知りたいです。

例えば。このコードは、tuareg モードによって次のようにインデントされます。

let m = List.map (fun (va,vb) ->
                  (va,vb)
                 ) m
in

次のようにインデントしたいと思います。

let m = List.map (fun (va,vb) ->
  (va,vb)
) m
in

同様に、tuareg はこのコードを次のようにインデントします。

module SMap = Map.Make(struct
                        type t = string
                        let compare = compare
                      end)

次のようにインデントすることをお勧めします。

module SMap = Map.Make(struct
  type t = string
  let compare = compare
end)

2013 年 11 月 12 日にリリースされた tuareg モード 2.0.7 を使用しています。

更新: 2.0.6 にロールバックすると、この問題が解決することを確認できます。ただし、これを修正するための構成オプションをまだ探しています。

4

2 に答える 2

0

別の解決策は、ocp-indentを使用することです。opamを使用してインストールする

opam install ocp-indent

次に、.emacs ファイルのどこかで、次の elisp コードを使用して、ocp-indent をロードおよび構成します。

;; Add opam emacs directory to the load-path
(setq opam-share (substring (shell-command-to-string "opam config var share 2> /dev/null") 0 -1))
(add-to-list 'load-path (concat opam-share "/emacs/site-lisp"))

;; Setup environment variables using OPAM
(dolist (var (car (read-from-string (shell-command-to-string "opam config env --sexp"))))
  (setenv (car var) (cadr var)))

;; One of the `opam config env` variables is PATH. Update `exec-path` to that.
(setq exec-path (split-string (getenv "PATH") path-separator))

(require 'ocp-indent)

(add-hook 'tuareg-mode-hook (lambda ()
  ;;  Your other tuareg specific settings here.
  (setq indent-line-function 'ocp-indent-line)))
于 2014-12-04T20:05:00.197 に答える