~ruther/guix-local

6543601fa05b629b387d1da0b5fc5fe81ecaf24c — Alex Kost 10 years ago e767752
emacs: Add 'guix-memoized-defalias' macro.

* emacs/guix-utils.el (guix-memoized-defalias): New macro.
  (guix-memoized-font-lock-keywords): New variable.
1 files changed, 21 insertions(+), 0 deletions(-)

M emacs/guix-utils.el
M emacs/guix-utils.el => emacs/guix-utils.el +21 -0
@@ 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