From aab5bfd074e57d06a79e39d7c7c4760e1f385a06 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Mon, 17 Oct 2022 21:41:28 -0500 Subject: Bankruptcy 9 --- lisp/elephant.el | 58 -------------------------------------------------------- 1 file changed, 58 deletions(-) delete mode 100644 lisp/elephant.el (limited to 'lisp/elephant.el') diff --git a/lisp/elephant.el b/lisp/elephant.el deleted file mode 100644 index 3cae17a..0000000 --- a/lisp/elephant.el +++ /dev/null @@ -1,58 +0,0 @@ -;;; elephant.el --- Remember variables and modes -*- lexical-binding: t; -*- - -;;; Code: - -(defmacro elephant-remember (alist) - "Setup a closure remembering symbols to apply with -`remember-reset'. The variables will be renamed using TEMPLATE. -ALIST contains cells of the form (SYMBOL . NEW-VALUE), where -SYMBOL is a variable or mode name, and its value is what to set -after `remember-set'." - (unless lexical-binding - (user-error "`elephant' requires lexical binding.")) - - (let* ((template (format "elephant--%s-%%s" (gensym))) - (reset-fn (intern (format template "reset")))) - (cl-destructuring-bind (let-list fn-set-list fn-reset-list) - (cl-loop - for (sym . val) in (if (symbolp alist) (symbol-value alist) alist) - as rem = (intern (format template sym)) - - collect (list rem sym) - into let-list - - collect (cond ((eq val 'enable) - `(,sym +1)) - ((eq val 'disable) - `(,sym -1)) - (t `(setq-local ,sym ,val))) - into fn-set-list - - collect (cond ((memq val '(enable disable)) - `(progn (,sym (if ,rem +1 -1)) - (fmakunbound ',rem))) - (t `(progn (setq-local ,sym ,rem) - (makunbound ',rem)))) - into fn-reset-list - - finally return (list let-list - fn-set-list - fn-reset-list)) - `(progn - (defvar-local ,reset-fn nil - "Function to recall values from `elephant-remember'.") - (let ,let-list - (setf (symbol-function ',reset-fn) - (lambda () - ,@fn-reset-list - (redraw-display) - (fmakunbound ',reset-fn)))) - ,@fn-set-list - ',reset-fn)))) - -(defun elephant-forget () - "Forget all symbols generated by `elephant-remember'." - ) - -(provide 'elephant) -;;; elephant.el ends here -- cgit 1.4.1-21-gabe81