diff options
Diffstat (limited to 'lisp/+tempo.el')
-rw-r--r-- | lisp/+tempo.el | 45 |
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. | ||
19 | TAG, DOC, and ELEMENTS are passed to `tempo-define-template', which see. | ||
20 | ABBREV, if given, is the abbrev string to use for template expansion | ||
21 | under 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) | ||