diff --git a/layers/+lang/mercury-layer/README.org b/layers/+lang/mercury-layer/README.org new file mode 100644 index 000000000..a78c3c98b --- /dev/null +++ b/layers/+lang/mercury-layer/README.org @@ -0,0 +1,29 @@ +#+TITLE: mercury layer + +[[file:img/mercury.png]] + +* Table of Contents :TOC_4_gh:noexport: +- [[#description][Description]] + - [[#features][Features:]] +- [[#install][Install]] +- [[#key-bindings][Key bindings]] + +* Description +This layer adds support for the Mercury language. + +** Features: + - Indentation. + - Syntax highlighting. + - Compiling and running. + +* Install +To use this configuration layer, add it to your =~/.spacemacs=. You will need to +add =mercury= to the existing =dotspacemacs-configuration-layers= list in this +file. + +* Key bindings + +| Key Binding | Description | +|-------------+--------------------------------------| +| ~SPC c c~ | Compile current buffer file. | +| ~SPC c r~ | Compile and run current buffer file. | diff --git a/layers/+lang/mercury-layer/img/mercury.png b/layers/+lang/mercury-layer/img/mercury.png new file mode 100644 index 000000000..0a1c8d204 Binary files /dev/null and b/layers/+lang/mercury-layer/img/mercury.png differ diff --git a/layers/+lang/mercury-layer/packages.el b/layers/+lang/mercury-layer/packages.el new file mode 100644 index 000000000..0643071e1 --- /dev/null +++ b/layers/+lang/mercury-layer/packages.el @@ -0,0 +1,54 @@ +;;; packages.el --- mercury layer packages file for Spacemacs. +;; +;; Copyright (c) 2012-2018 Sylvain Benner & Contributors +;; +;; Author: Ludvig Böklin +;; URL: https://github.com/syl20bnr/spacemacs +;; +;; This file is not part of GNU Emacs. +;; +;;; License: GPLv3 + +(setq mercury-packages + '((metal-mercury-mode :location (recipe + :fetcher github + :repo "ahungry/metal-mercury-mode" + :commit "99e2d8fb7177cae3bfa2dec2910fc28216d5f5a8")) + (mercury-mode :excluded t) + flycheck + (flycheck-mercury :requires flycheck) + smartparens)) + +(defun mercury/post-init-flycheck () + (add-hook 'metal-mercury-mode-hook 'flycheck-mode)) + +(defun mercury/init-flycheck-mercury () + "Initialize flycheck-mercury" + (use-package flycheck-mercury + :defer t + :init (require 'flycheck-mercury))) + +(defun mercury/init-metal-mercury-mode () + "Initialize metal-mercury-mode" + (use-package metal-mercury-mode + :defer t + :init + :mode ("\\.m\\'" . metal-mercury-mode) + :config + (progn + (dolist (x '( + ;; ("m=" . "format") + ("mc" . "mercury/compile") + ;; ("mh" . "help") + )) + (spacemacs/declare-prefix-for-mode 'metal-mercury-mode (car x) (cdr x))) + + (spacemacs/set-leader-keys-for-major-mode 'metal-mercury-mode + ;; make + "cb" 'metal-mercury-mode-compile + "cr" 'metal-mercury-mode-runner)))) + +(defun mercury/post-init-smartparens () + (if dotspacemacs-smartparens-strict-mode + (add-hook 'metal-mercury-mode-hook #'smartparens-strict-mode) + (add-hook 'metal-mercury-mode-hook #'smartparens-mode)))