From 27ae68341c024b96857e071435b491a476802a36 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Wed, 8 Apr 2020 00:07:45 -0700 Subject: [PATCH] Add basic fish shell script configuration --- .gitlab-ci.yml | 7 ++++++ oni-fish.el | 43 ++++++++++++++++++++++++++++++++++ test/integration/oni-fish.bats | 11 +++++++++ 3 files changed, 61 insertions(+) create mode 100644 oni-fish.el create mode 100644 test/integration/oni-fish.bats diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3d22a74..02cd3e7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -283,6 +283,13 @@ integration-test-oni-docker: - package script: make integration-test-oni-docker TEST_ARCHIVE=$(realpath bin/) +integration-test-oni-fish: + stage: integration-test + image: registry.gitlab.com/ryuslash/emacs-config + dependencies: + - package + script: make integration-test-oni-fish TEST_ARCHIVE=$(realpath bin/) + integration-test-oni-haskell: stage: integration-test image: registry.gitlab.com/ryuslash/emacs-config diff --git a/oni-fish.el b/oni-fish.el new file mode 100644 index 0000000..c211198 --- /dev/null +++ b/oni-fish.el @@ -0,0 +1,43 @@ +;;; oni-fish.el --- Configuration for fish scripts -*- lexical-binding: t; -*- + +;; Copyright (C) 2020 Tom Willemse + +;; Author: Tom Willemse +;; Keywords: local +;; Version: 2020.0408.000443 +;; Package-Requires: (fish-mode reformatter) + +;; 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 . + +;;; Commentary: + +;; Configuration for writing Fish shell scripts. +;; +;; Defines a formatter using the ‘fish_indent’ executable. + +;;; Code: + +(require 'reformatter) + +(reformatter-define oni-fish-fish-indent + :program "fish_indent" + :lighter "" + :group 'oni-fish) + +(add-hook 'fish-mode-hook 'oni-fish-fish-indent-on-save-mode) + +;;;###autoload(with-eval-after-load 'fish-mode (require 'oni-fish)) + +(provide 'oni-fish) +;;; oni-fish.el ends here diff --git a/test/integration/oni-fish.bats b/test/integration/oni-fish.bats new file mode 100644 index 0000000..4d7be1d --- /dev/null +++ b/test/integration/oni-fish.bats @@ -0,0 +1,11 @@ +#!/usr/bin/env bats + +@test "Opening a .fish file loads oni-fish" { + run emacs -batch -l package -f package-initialize \ + -visit test.fish \ + -eval "(prin1 (featurep 'oni-fish))" + + echo "$output" + + [[ "$output" == *"t" ]] +}