aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2019-08-25 13:37:25 -0700
committerGravatar Tom Willemse2019-08-25 13:37:25 -0700
commit75fe1b4c4f7ae42ae3863c9747e1cea8eb32ff43 (patch)
tree5fff30bc208348679d703861e08bb81d8ddb7b3f
parent26dbc5eac3f866d9d50a9e1d39701dcd6745f3fd (diff)
downloademacs-config-75fe1b4c4f7ae42ae3863c9747e1cea8eb32ff43.tar.gz
emacs-config-75fe1b4c4f7ae42ae3863c9747e1cea8eb32ff43.zip
Add snippets to ‘oni-elisp’
-rw-r--r--.gitlab-ci.yml18
-rw-r--r--GNUmakefile24
-rw-r--r--oni-elisp/oni-elisp.el (renamed from oni-elisp.el)27
-rw-r--r--oni-elisp/snippets/emacs-lisp-mode/depends-on5
-rw-r--r--oni-elisp/snippets/emacs-lisp-mode/face5
-rw-r--r--test/oni-elisp-test.el34
6 files changed, 107 insertions, 6 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 692bfd4..686b987 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -26,6 +26,16 @@ package-oni-css:
paths:
- oni-css/dist/
+package-oni-elisp:
+ stage: pre-package-multifile
+ before_script:
+ - rm -rf oni-elisp/dist
+ script:
+ - cask --path oni-elisp package
+ artifacts:
+ patchs:
+ - oni-elisp/dist/
+
test-oni-alert:
stage: test
script: make test-oni-alert
@@ -48,6 +58,13 @@ test-oni-css:
needs: [package-oni-css]
script: make test-oni-css
+test-oni-elisp:
+ stage: test
+ dependencies:
+ - package-oni-elisp
+ needs: [package-oni-elisp]
+ script: make test-oni-elisp
+
test-oni-grep:
stage: test
script: make test-oni-grep
@@ -65,6 +82,7 @@ package:
dependencies:
- package-oni-conf
- package-oni-css
+ - package-oni-elisp
before_script:
- rm -rf bin/
- mkdir bin/
diff --git a/GNUmakefile b/GNUmakefile
index da43716..6df8515 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -2,7 +2,7 @@ FILES := $(wildcard *.el)
PACKAGE_TARGETS := $(addprefix package-,$(FILES))
-package: $(PACKAGE_TARGETS) package-oni-conf package-oni-css
+package: $(PACKAGE_TARGETS) package-oni-conf package-oni-css package-oni-elisp
package-%: %
emacs --batch \
@@ -22,13 +22,19 @@ package-oni-css:
--funcall package-initialize \
--eval "(package-upload-file (car (sort (file-expand-wildcards \"oni-css/dist/*.tar\") #'string>)))"
+package-oni-elisp:
+ emacs --batch \
+ --load oni-package.el \
+ --funcall package-initialize \
+ --eval "(package-upload-file (car (sort (file-expand-wildcards \"oni-elisp/dist/*tar\") #'string>)))"
+
install-%:
emacs --batch \
--load oni-package.el \
--funcall package-initialize \
--eval '(package-refresh-contents)' \
$(foreach DEP,$(DEPS),--eval "(package-install-file \"$(DEP).el\")") \
- --eval "(package-install-file \"$*.el\")" \
+ --eval "(package-install-file \"$*.el\")"
install-oni-conf:
emacs --batch \
@@ -36,7 +42,7 @@ install-oni-conf:
--funcall package-initialize \
--eval '(package-refresh-contents)' \
$(foreach DEP,$(DEPS),--eval "(package-install-file \"$(DEP).el\")") \
- --eval "(package-install-file (car (sort (file-expand-wildcards \"oni-conf/dist/*.tar\") #'string>)))" \
+ --eval "(package-install-file (car (sort (file-expand-wildcards \"oni-conf/dist/*.tar\") #'string>)))"
install-oni-css:
emacs --batch \
@@ -44,7 +50,15 @@ install-oni-css:
--funcall package-initialize \
--eval '(package-refresh-contents)' \
$(foreach DEP,$(DEPS),--eval "(package-install-file \"$(DEP).el\")") \
- --eval "(package-install-file (car (sort (file-expand-wildcards \"oni-css/dist/*.tar\") #'string>)))" \
+ --eval "(package-install-file (car (sort (file-expand-wildcards \"oni-css/dist/*.tar\") #'string>)))"
+
+install-oni-elisp:
+ emacs --batch \
+ --load oni-package.el \
+ --funcall package-initialize \
+ --eval '(package-refresh-contents)' \
+ $(foreach DEP,$(DEPS),--eval "(package-install-file \"$(DEP).el\")") \
+ --eval "(package-install-file (car (sort (file-expand-wildcards \"oni-elisp/dist/*.tar\") #'string>)))"
test-%: install-%
emacs --batch \
@@ -59,6 +73,8 @@ test-oni-bookmark: DEPS := oni-data-dir
test-oni-conf: DEPS := oni-yasnippet
test-oni-css: DEPS := oni-company oni-fci
test-oni-php: DEPS := oni-flycheck oni-company oni-fci
+test-oni-elisp: DEPS := oni-company oni-flycheck oni-paredit oni-fci \
+ oni-yasnippet
clean:
rm -fv $(FILES)
diff --git a/oni-elisp.el b/oni-elisp/oni-elisp.el
index a5fc3e3..1ae19d3 100644
--- a/oni-elisp.el
+++ b/oni-elisp/oni-elisp.el
@@ -4,8 +4,8 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 20190710075641
-;; Package-Requires: (oni-company oni-flycheck oni-paredit oni-fci rainbow-delimiters nameless erefactor)
+;; Version: 20190825132536
+;; Package-Requires: (oni-company oni-flycheck oni-paredit oni-fci oni-yasnippet rainbow-delimiters nameless erefactor)
;; 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
@@ -26,11 +26,29 @@
;;; Code:
+(require 'yasnippet)
+
(let ((byte-compile-not-obsolete-funcs '(preceding-sexp)))
(require 'erefactor))
(require 'ielm)
+(defconst oni-elisp-root
+ (file-name-directory
+ (or load-file-name
+ (buffer-file-name)))
+ "The directory where ‘oni-elisp’ was loaded from.")
+
+(defconst oni-elisp-snippets-dir
+ (expand-file-name "snippets" oni-elisp-root)
+ "The directory where ‘oni-elisp’ stores its snippets.")
+
+(defun oni-elisp-snippets-initialize ()
+ "Initialize the snippets for ‘oni-elisp’."
+ (when (boundp 'yas-snippet-dirs)
+ (add-to-list 'yas-snippet-dirs oni-elisp-snippets-dir t))
+ (yas-load-directory oni-elisp-snippets-dir))
+
(add-hook 'emacs-lisp-mode-hook 'company-mode)
(add-hook 'emacs-lisp-mode-hook 'electric-quote-local-mode)
(add-hook 'emacs-lisp-mode-hook 'erefactor-lazy-highlight-turn-on)
@@ -50,6 +68,11 @@
;;;###autoload
(add-to-list 'auto-mode-alist '("/Cask\\'" . emacs-lisp-mode))
+;;;###autoload
+(with-eval-after-load 'elisp-mode
+ (with-eval-after-load 'yasnippet
+ (oni-elisp-snippets-initialize)))
+
;;;###autoload(with-eval-after-load 'elisp-mode (require 'oni-elisp))
;;;###autoload(with-eval-after-load 'ielm (require 'oni-elisp))
diff --git a/oni-elisp/snippets/emacs-lisp-mode/depends-on b/oni-elisp/snippets/emacs-lisp-mode/depends-on
new file mode 100644
index 0000000..4f99d92
--- /dev/null
+++ b/oni-elisp/snippets/emacs-lisp-mode/depends-on
@@ -0,0 +1,5 @@
+# -*- mode: snippet; require-final-newline: nil -*-
+# name: depends-on
+# key: do
+# --
+(depends-on "$1")$0 \ No newline at end of file
diff --git a/oni-elisp/snippets/emacs-lisp-mode/face b/oni-elisp/snippets/emacs-lisp-mode/face
new file mode 100644
index 0000000..9fdbbb2
--- /dev/null
+++ b/oni-elisp/snippets/emacs-lisp-mode/face
@@ -0,0 +1,5 @@
+# -*- mode: snippet; require-final-newline: nil -*-
+# name: face
+# key: face
+# --
+ `($1 ((t (${2::foreground} $0)))) \ No newline at end of file
diff --git a/test/oni-elisp-test.el b/test/oni-elisp-test.el
new file mode 100644
index 0000000..c1984aa
--- /dev/null
+++ b/test/oni-elisp-test.el
@@ -0,0 +1,34 @@
+;;; oni-elisp-test.el --- Tests for oni-elisp -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2019 Tom Willemse
+
+;; Author: Tom Willemse <tom@ryuslash.org>
+;; Keywords: local
+
+;; 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:
+
+;;
+
+;;; Code:
+
+(ert-deftest oni-elisp-test-autoloads ()
+ "Test that ‘oni-elisp’ gets loaded automatically."
+ (should (not (featurep 'oni-elisp)))
+ (require 'elisp-mode)
+ (should (featurep 'oni-elisp)))
+
+(provide 'oni-elisp-test)
+;;; oni-elisp-test.el ends here