spacemacs/layers/+lang/ocaml/funcs.el
Bernhard Schommer 2c193614f7 Ocaml layer init without opam.
Currently the ocaml layer requires opam in order to work. However
opam is only really required for an easy installation of the
required ocaml binaries. The only place where opam is used
instead is to add the merlin files of the merlin installed
via opam instead of the merlin files from melp.

This commit introduces a fallback if opam is not installed but
ocamlmerlin is installed, since the melpa package of merlin
is already installed through packages.
2017-05-24 12:28:58 +02:00

36 lines
1.2 KiB
EmacsLisp

;;; funcs.el --- ocaml Layer functions File for Spacemacs
;;
;; Copyright (c) 2012-2017 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(defun spacemacs//init-ocaml-opam ()
(if (executable-find "opam")
(let* ((output (shell-command-to-string
"opam config var share 2> /dev/null"))
(share (when (< 0 (length output))
(substring output 0 -1))))
(when share
(setq opam-share share
opam-load-path (concat share "/emacs/site-lisp")))
(add-to-list 'load-path opam-load-path))
(unless (executable-find "ocamlmerlin")
(spacemacs-buffer/warning
(concat "Cannot find \"opam\" or \"merlin\" executable. "
"The ocaml layer won't work properly.")))))
(defun spacemacs/merlin-locate ()
(interactive)
(let ((merlin-locate-in-new-window 'never))
(merlin-locate)))
(defun spacemacs/merlin-locate-other-window ()
(interactive)
(let ((merlin-locate-in-new-window 'always))
(merlin-locate)))