1
0
Fork 0

Add snippets to ‘oni-elisp’

This commit is contained in:
Tom Willemse 2019-08-25 13:37:25 -07:00
parent 26dbc5eac3
commit 75fe1b4c4f
6 changed files with 107 additions and 6 deletions

View file

@ -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/

View file

@ -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)

View file

@ -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))

View file

@ -0,0 +1,5 @@
# -*- mode: snippet; require-final-newline: nil -*-
# name: depends-on
# key: do
# --
(depends-on "$1")$0

View file

@ -0,0 +1,5 @@
# -*- mode: snippet; require-final-newline: nil -*-
# name: face
# key: face
# --
`($1 ((t (${2::foreground} $0))))

34
test/oni-elisp-test.el Normal file
View file

@ -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