Make find-function work with defhydra

* hydra.el (find-function-search-for-symbol): New defadvice.

Fixes #153
master
Oleh Krehel 11 years ago
parent 852ae2668a
commit 27b7f40cb2
  1. 19
      hydra.el

@ -250,6 +250,25 @@ Exitable only through a blue head.")
(1 font-lock-keyword-face)
(2 font-lock-type-face)))))
;;* Find Function
(eval-after-load 'find-func
'(defadvice find-function-search-for-symbol
(around hydra-around-find-function-search-for-symbol-advice
(symbol type library) activate)
"Navigate to hydras with `find-function-search-for-symbol'."
ad-do-it
;; The orignial function returns (cons (current-buffer) (point))
;; if it found the point.
(unless (cdr ad-return-value)
(with-current-buffer (find-file-noselect library)
(let ((sn (symbol-name symbol)))
(when (and (null type)
(string-match "\\`\\(hydra-[a-z-A-Z0-9]+\\)/\\(.*\\)\\'" sn)
(re-search-forward (concat "(defhydra " (match-string 1 sn))
nil t))
(goto-char (match-beginning 0)))
(cons (current-buffer) (point)))))))
;;* Universal Argument
(defvar hydra-base-map
(let ((map (make-sparse-keymap)))

Loading…
Cancel
Save