summary refs log tree commit diff stats
path: root/lisp/+tempo.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/+tempo.el')
-rw-r--r--lisp/+tempo.el45
1 files changed, 0 insertions, 45 deletions
diff --git a/lisp/+tempo.el b/lisp/+tempo.el deleted file mode 100644 index 2c81e54..0000000 --- a/lisp/+tempo.el +++ /dev/null
@@ -1,45 +0,0 @@
1;;; +tempo.el --- easier tempo definition -*- lexical-binding: t -*-
2
3(require 'tempo)
4(declare-function derived-mode-abbrev-table-name "tempo")
5
6;; TODO: I need to figure out where this function goes.
7(defun delete2 (list &rest elems)
8 "Delete each element of ELEMS, and the next item, from LIST."
9 (let ((r nil))
10 (while (consp list)
11 (if (member (car list) elems)
12 (setf list (cdr list))
13 (setf r (cons (car list) r)))
14 (setf list (cdr list)))
15 (reverse r)))
16
17(defmacro define-tempo (tag doc &rest elements)
18 "Define a template and add its tag to MODE's abbrev-table.
19TAG, DOC, and ELEMENTS are passed to `tempo-define-template', which see.
20ABBREV, if given, is the abbrev string to use for template expansion
21under MODE's abbrev-table. If ABBREV isn't given, TAG will be used."
22 (declare (indent 1))
23 (let* ((template (gensym))
24 (tag (cond ((stringp tag) tag)
25 ((symbolp tag) (symbol-name tag))
26 (t (user-error "TAG must be a string or symbol: %S" tag))))
27 (mode (or (plist-get elements :mode) nil))
28 (abbrev (or (plist-get elements :abbrev) tag))
29 (taglist (or (plist-get elements :taglist) nil))
30 (table (let ((tname (and mode (derived-mode-abbrev-table-name mode))))
31 (while (and tname (not (memq tname abbrev-table-name-list)))
32 (setq tname (and (get mode 'derived-mode-parent)
33 (derived-mode-abbrev-table-name
34 (get mode 'derived-mode-parent)))))
35 (or tname 'global-abbrev-table)))
36 (elements (delete2 elements :mode :abbrev :taglist)))
37 `(let ((,template (tempo-define-template ,tag
38 ',elements
39 ,(or abbrev tag)
40 ,doc
41 ,taglist)))
42 (define-abbrev ,table ,tag "" ,template :system t)
43 (put ,template 'no-self-insert t))))
44
45(provide '+tempo)