diff options
Diffstat (limited to 'lisp/remember.el')
-rw-r--r-- | lisp/remember.el | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/lisp/remember.el b/lisp/remember.el deleted file mode 100644 index a759419..0000000 --- a/lisp/remember.el +++ /dev/null | |||
@@ -1,56 +0,0 @@ | |||
1 | ;;; remember.el --- Remember variables and modes -*- lexical-binding: t; -*- | ||
2 | |||
3 | ;;; Code: | ||
4 | |||
5 | (defmacro remember-remember (alist) | ||
6 | (let* ((template (format "remember--%s-%%s" (gensym))) | ||
7 | (reset-fn (intern (format template "recall"))) | ||
8 | (things (cl-loop for (sym . newval) in alist | ||
9 | as rem = (intern (format template sym)) | ||
10 | |||
11 | ;; Collect original values | ||
12 | |||
13 | ))))) | ||
14 | |||
15 | |||
16 | (defmacro remember-set (&rest symbols) | ||
17 | "Setup a closure remembering symbols to apply with | ||
18 | `remember-reset'. The variables will be renamed using TEMPLATE. | ||
19 | SYMBOLS is a plist: the properties are symbols or mode names, and | ||
20 | their values what to set after `remember-setup'." | ||
21 | (let* ((template (format "remember--%s-%%s" (gensym))) | ||
22 | (reset-fn (intern (format template "reset"))) | ||
23 | (list (cl-loop for sym in symbols by #'cddr | ||
24 | collect `(,(intern (format template sym)) | ||
25 | ,sym) | ||
26 | into let-list | ||
27 | collect (let ((val (plist-get symbols sym))) | ||
28 | (cond ((eq val 'enable) | ||
29 | `(,sym +1)) | ||
30 | ((eq val 'disable) | ||
31 | `(,sym -1)) | ||
32 | (t `(setq-local ,sym ,val)))) | ||
33 | into fn-set-list | ||
34 | collect (let ((val (plist-get symbols sym)) | ||
35 | (rem (intern (format template sym)))) | ||
36 | (cond ((memq val '(enable disable)) | ||
37 | `(,sym (if ,rem +1 -1))) | ||
38 | (t `(setq-local ,sym ,rem)))) | ||
39 | into fn-reset-list | ||
40 | finally return (list let-list | ||
41 | fn-reset-list | ||
42 | fn-set-list)))) | ||
43 | `(progn | ||
44 | (defvar-local ,reset-fn nil | ||
45 | "Function to recall values from `remember-set'.") | ||
46 | (let ,(cl-first list) | ||
47 | (setf (symbol-function ',reset-fn) | ||
48 | (lambda () | ||
49 | ,@(cl-second list)))) | ||
50 | ,@(cl-third list) | ||
51 | ',reset-fn))) | ||
52 | |||
53 | ;; test | ||
54 | |||
55 | (set 'fn (remember-set display-fill-column-indicator-mode disable)) | ||
56 | (funcall fn) | ||