Skip to content

chenglou/ocaml-language-server

 
 

Repository files navigation

ocaml-language-server

A language server for OCaml and related languages

Synopsis

This is an implementation of the language server protocol for OCaml and related languages like BuckleScript and Reason.

Usage

Emacs

See lsp-mode. Follow the installation instructions there then add the following snippet(s) to your ~/.emacs.d/init.el. You will need the tuareg package installed and probably other packages like flycheck and company-mode for most of the language server features to work.

(lsp-define-stdio-client 'tuareg-mode "ocaml" 'stdio
	#'(lambda () default-directory)
	"OCaml Language Server"
	'("ocaml-language-server" "--stdio"))
(add-hook 'tuareg-mode-hook #'lsp-mode)
(lsp-define-stdio-client 'reason-mode "reason" 'stdio
	#'(lambda () default-directory)
	"OCaml Language Server"
	'("ocaml-language-server" "--stdio"))
(add-hook 'reason-mode-hook #'lsp-mode)

VS Code

See vscode-reasonml. The OCaml Language Server comes bundled with this VS Code extension and no additional configuration steps are necessary.

Other Editors

For other editors, see the following list of language client packages. Note that the OCaml language server has not been tested extensively with other editors yet. If you try to use one of these packages and encounter a problem, please open an issue about it.

Server Capabilities

  • OCaml support
  • Reason support
  • incremental document synchronization
  • code action provider
  • code lens provider
  • completion provider
  • definition provider
  • document formatting provider (Reason)
  • document highlight provider
  • document range formatting provider (Reason)
  • document symbol provider
  • hover provider
  • references provider
  • workspace symbol provider

Installing the Server

Requirements

  • OCaml 4.02.3 or greater
  • Reason 1.4.0 (optional)
  • merlin 2.5.0 or greater

The server can be installed with npm:

npm install -g ocaml-language-server

Launching the Server Manually

The server can be launched in the following ways:

ocaml-language-server --node-ipc
ocaml-language-server --socket={number}
ocaml-language-server --stdio

For node-based clients like vscode-reasonml --node-ipc is the most efficient approach. Clients written in other languages should use --stdio or --socket.

Building the Server

Execute the following steps:

yarn install
yarn run compile

About

A language server for OCaml and related languages

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 97.0%
  • JavaScript 3.0%