diff options
author | Alex Kost <alezost@gmail.com> | 2015-08-16 06:46:52 +0300 |
---|---|---|
committer | Alex Kost <alezost@gmail.com> | 2015-08-30 18:26:01 +0300 |
commit | 6543601fa05b629b387d1da0b5fc5fe81ecaf24c (patch) | |
tree | 9dc42e1bb6cbe2849aa075c997c0e83d7159b10e | |
parent | e767752c79975d30341f71d7f9de88edeb192d59 (diff) | |
download | gnu-guix-6543601fa05b629b387d1da0b5fc5fe81ecaf24c.tar gnu-guix-6543601fa05b629b387d1da0b5fc5fe81ecaf24c.tar.gz |
emacs: Add 'guix-memoized-defalias' macro.
* emacs/guix-utils.el (guix-memoized-defalias): New macro.
(guix-memoized-font-lock-keywords): New variable.
-rw-r--r-- | emacs/guix-utils.el | 21 |
1 files changed, 21 insertions, 0 deletions
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 |