guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

08/23: emacs: Add 'guix-memoized-defalias' macro.


From: Alex Kost
Subject: 08/23: emacs: Add 'guix-memoized-defalias' macro.
Date: Sun, 30 Aug 2015 15:28:12 +0000

alezost pushed a commit to branch master
in repository guix.

commit 6543601fa05b629b387d1da0b5fc5fe81ecaf24c
Author: Alex Kost <address@hidden>
Date:   Sun Aug 16 06:46:52 2015 +0300

    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 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el
index fb1ca60..0b8a760 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]