GitHub

This package is deprecated.

Flycheck 39 checks OCaml out of the box: ocaml-dune builds a Dune project with dune build @check, so references to sibling modules and dependencies resolve, and ocaml handles standalone files. And even before Flycheck 39, most people had moved away from using Merlin directly - the OCaml Platform's recommended editor setup runs ocaml-lsp, which speaks to Emacs through the LSP clients rather than through Merlin's own protocol. For that Merlin-grade live feedback, run ocaml-lsp through Flycheck's built-in Eglot bridge:

(global-flycheck-eglot-mode)

To migrate, remove flycheck-ocaml from your config; the built-in checkers take over on their own. This repository will be archived and receives no further updates.

License GPL 3 MELPA MELPA Stable Build Status

Add OCaml support to Flycheck:

  • Add a ocaml-merlin syntax checker using Merlin

Installation

You can install flycheck-ocaml from MELPA or MELPA Stable:

M-x package-install [RET] flycheck-ocaml [RET]

For OCaml (assuming you're using tuareg-mode), add this to your init.el:

(with-eval-after-load 'merlin
  ;; Disable Merlin's own error checking
  (setq merlin-error-after-save nil)
  ;; Enable Flycheck checker
  (flycheck-ocaml-setup))
(add-hook 'tuareg-mode-hook #'merlin-mode)
;; or this if you're into use-package
(use-package flycheck-ocaml
  :ensure t
  :config
  (add-hook 'tuareg-mode-hook
            (lambda ()
              ;; disable Merlin's own error checking
              (setq-local merlin-error-after-save nil)
              ;; enable Flycheck checker
              (flycheck-ocaml-setup))))

For ReasonML, add this to your init.el:

(use-package flycheck-ocaml
  :ensure t
  :config
  (add-hook 'reason-mode-hook
            (lambda ()
              ;; disable Merlin's own error checking
              (setq-local merlin-error-after-save nil)
              ;; enable Flycheck checker
              (flycheck-ocaml-setup))))

Usage

Just use Flycheck as usual in Tuareg Mode buffers. Flycheck will automatically use the new ocaml-merlin syntax checker if Merlin Mode is enabled and Merlin's own error checking (merlin-error-after-save) is disabled.

If you enable Merlin's error checking with M-x merlin-toggle-view-errors Flycheck will not use the ocaml-merlin syntax checker anymore, to avoid duplicate and redundant error reporting.

Important: You'll need to have a Dune project for flycheck-ocaml to work. Once you've setup a project just run dune build and you'll be all set. See this article for more details.

Troubleshooting

You might need to restart manually the Merlin server after making changes to your Dune project's configuration.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

See COPYING for details.

Read the original on github.com ↗