(message "Unable to find location in file"))))
'help-echo (purecopy "mouse-2, RET: find function's definition"))
+(define-button-type 'help-function-cmacro
+ :supertype 'help-xref
+ 'help-function (lambda (fun file)
+ (setq file (locate-library file t))
+ (if (and file (file-readable-p file))
+ (progn
+ (pop-to-buffer (find-file-noselect file))
+ (goto-char (point-min))
+ (if (re-search-forward
+ (format "^[ \t]*(define-compiler-macro[ \t]+%s"
+ (regexp-quote (symbol-name fun))) nil t)
+ (forward-line 0)
+ (message "Unable to find location in file")))
+ (message "Unable to find file")))
+ 'help-echo (purecopy "mouse-2, RET: find function's compiler macro"))
+
(define-button-type 'help-variable-def
:supertype 'help-xref
'help-function (lambda (var &optional file)