aboutsummaryrefslogtreecommitdiffstats
path: root/oni-bats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2020-10-19 09:14:29 -0700
committerGravatar Tom Willemse2020-10-19 09:18:26 -0700
commitd6e2f4e653b1b428930413c60291e1cf4a9fe228 (patch)
tree3f9880ca438b98dc640f8973e5777d0ebca38647 /oni-bats
parent6048293876be38c8dd08c5a76e168f06d57ceaf7 (diff)
downloademacs-config-d6e2f4e653b1b428930413c60291e1cf4a9fe228.tar.gz
emacs-config-d6e2f4e653b1b428930413c60291e1cf4a9fe228.zip
Add snippet for oni-bats
Diffstat (limited to 'oni-bats')
-rw-r--r--oni-bats/Cask8
-rw-r--r--oni-bats/oni-bats.el71
-rw-r--r--oni-bats/snippets/bats-mode/test7
3 files changed, 86 insertions, 0 deletions
diff --git a/oni-bats/Cask b/oni-bats/Cask
new file mode 100644
index 0000000..1a6e405
--- /dev/null
+++ b/oni-bats/Cask
@@ -0,0 +1,8 @@
+(source gnu)
+(source melpa)
+
+(package-file "./oni-bats.el")
+
+(files
+ "*.el"
+ ("snippets" "./snippets/*"))
diff --git a/oni-bats/oni-bats.el b/oni-bats/oni-bats.el
new file mode 100644
index 0000000..587fec8
--- /dev/null
+++ b/oni-bats/oni-bats.el
@@ -0,0 +1,71 @@
+;;; oni-bats.el --- Configuration for bats-mode -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2019 Tom Willemse
+
+;; Author: Tom Willemse <tom@ryuslash.org>
+;; Keywords: local
+;; Version: 2020.1019.091729
+;; Package-Requires: (bats-mode oni-sh)
+
+;; 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 <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Configuration for ‘bats-mode’.
+
+;; This configuration pulls in ‘oni-sh’ because ‘bats-mode’ is derived from
+;; ‘sh-mode’.
+
+;;; Code:
+
+(require 'autoinsert)
+(require 'oni-sh)
+(require 'yasnippet)
+
+(defconst oni-bats-root
+ (file-name-directory
+ (or load-file-name
+ (buffer-file-name)))
+ "The directory where ‘oni-bats’ was loaded from.")
+
+(defconst oni-bats-snippets-dir
+ (expand-file-name "snippets" oni-bats-root)
+ "The directory where ‘oni-bats’ stores its snippets.")
+
+(defun oni-bats-disable-shfmt-on-save-mode ()
+ "Disable ‘shfmt-on-save-mode’."
+ (shfmt-on-save-mode -1))
+
+;;;###autoload
+(defun oni-bats-snippets-initialize ()
+ "Initialize the snippets for ‘oni-bats’."
+ (when (boundp 'yas-snippet-dirs)
+ (add-to-list 'yas-snippet-dirs oni-bats-snippets-dir t))
+ (yas-load-directory oni-bats-snippets-dir))
+
+(add-hook 'bats-mode-hook #'oni-bats-disable-shfmt-on-save-mode)
+
+;;;###autoload
+(with-eval-after-load 'autoinsert
+ (add-to-list 'auto-insert-alist '(bats-mode nil "#!/usr/bin/env bats\n\n")))
+
+;;;###autoload
+(with-eval-after-load 'bats-mode
+ (with-eval-after-load 'yasnippet
+ (oni-bats-snippets-initialize)))
+
+;;;###autoload(with-eval-after-load 'bats-mode (require 'oni-bats))
+
+(provide 'oni-bats)
+;;; oni-bats.el ends here
diff --git a/oni-bats/snippets/bats-mode/test b/oni-bats/snippets/bats-mode/test
new file mode 100644
index 0000000..8a2f028
--- /dev/null
+++ b/oni-bats/snippets/bats-mode/test
@@ -0,0 +1,7 @@
+# -*- mode: snippet -*-
+# name: test
+# key: test
+# --
+@test "$1" {
+ $0
+} \ No newline at end of file