]> git.eshelyaron.com Git - emacs.git/commitdiff
(define-compiler-macro): Add a property that records where a macro was
authorGlenn Morris <rgm@gnu.org>
Fri, 11 Sep 2009 03:39:28 +0000 (03:39 +0000)
committerGlenn Morris <rgm@gnu.org>
Fri, 11 Sep 2009 03:39:28 +0000 (03:39 +0000)
defined.

lisp/emacs-lisp/cl-macs.el

index f0ac3c562a1cafa70d0ef9fb6ed8eca958d7077d..1a8f1b18e6e1f96afe11cd30634e1eb2fbb76e00 100644 (file)
@@ -2547,8 +2547,22 @@ and then returning foo."
         (cons (if (memq '&whole args) (delq '&whole args)
                 (cons '--cl-whole-arg-- args)) body))
        (list 'or (list 'get (list 'quote func) '(quote byte-compile))
-             (list 'put (list 'quote func) '(quote byte-compile)
-                   '(quote cl-byte-compile-compiler-macro)))))
+             (list 'progn
+                   (list 'put (list 'quote func) '(quote byte-compile)
+                         '(quote cl-byte-compile-compiler-macro))
+                   ;; This is so that describe-function can locate
+                   ;; the macro definition.
+                   (list 'let
+                         (list (list
+                                'file
+                                (or buffer-file-name
+                                    (and (boundp 'byte-compile-current-file)
+                                         (stringp byte-compile-current-file)
+                                         byte-compile-current-file))))
+                         (list 'if 'file
+                               (list 'put (list 'quote func)
+                                     '(quote compiler-macro-file)
+                                     '(file-name-nondirectory file))))))))
 
 ;;;###autoload
 (defun compiler-macroexpand (form)