From 6543601fa05b629b387d1da0b5fc5fe81ecaf24c Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Sun, 16 Aug 2015 06:46:52 +0300 Subject: emacs: Add 'guix-memoized-defalias' macro. * emacs/guix-utils.el (guix-memoized-defalias): New macro. (guix-memoized-font-lock-keywords): New variable. --- emacs/guix-utils.el | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el index fb1ca60654..0b8a760af8 100644 --- a/emacs/guix-utils.el +++ b/emacs/guix-utils.el @@ -262,6 +262,27 @@ See `defun' for the meaning of arguments." (mapconcat #'symbol-name arglist " ") docstring))) +(defmacro guix-memoized-defalias (symbol definition &optional docstring) + "Set SYMBOL's function definition to memoized version of DEFINITION." + (declare (doc-string 3) (indent 1)) + `(defalias ',symbol + (guix-memoize #',definition) + ,(or docstring + (format "Memoized version of `%S'." definition)))) + +(defvar guix-memoized-font-lock-keywords + (eval-when-compile + `((,(rx "(" + (group "guix-memoized-" (or "defun" "defalias")) + symbol-end + (zero-or-more blank) + (zero-or-one + (group (one-or-more (or (syntax word) (syntax symbol)))))) + (1 font-lock-keyword-face) + (2 font-lock-function-name-face nil t))))) + +(font-lock-add-keywords 'emacs-lisp-mode guix-memoized-font-lock-keywords) + (provide 'guix-utils) ;;; guix-utils.el ends here -- cgit v1.2.3