2010-06-02 17 views
11

Czy w Emacs istnieje sposób na sprawdzenie, które inne miejsca w kodzie nazywają określoną funkcję? Przy mojej obecnej konfiguracji (GNU emacs 23.1.1, C codebase), normalnie muszę przeszukiwać cały kod dla nazwy funkcji, aby zobaczyć, które inne funkcje ją wywołują. Byłoby miło, gdybym mógł sprawnie wyświetlić wszystkie nazwy funkcji, które wywołują tę specyficzną funkcję, na którą patrzę.Czy Emacs może pokazać mi, gdzie wywoływana jest określona funkcja?

+0

Jaki język? –

+0

Używam programu Emacs do programowania C kompilującego się z GCC 4.4.3 na Linuksie – ant2009

Odpowiedz

11

Można użyć semantic-symref funkcję (C-c , G) z pakietem CEDET. Może korzystać z baz danych GNU Global lub CTags, aby znaleźć dzwoniących, jeśli istnieją. Może również analizować źródła w celu wykrycia zdarzeń.

1

tutaj jest urywek z mojego starego pliku .emacs

robi: prosić o coś znaleźć z ETAG-Plik ze znacznikami (find-tag-tag) grep do niej w zależności od trybu

(defun find-caller (tagname) 
    "Find occurences of tagname in files in the current directory 
matching extension of current file." 
    (interactive (list (find-tag-tag "Find caller: "))) 
    (let ((cmd "grep -n ")) 
    (cond 
    ((member major-mode '(lisp-mode cmulisp-mode)) 
     (grep (concat cmd "-i '" tagname "' *.lisp"))) 
    ((eq major-mode 'c-mode) 
     (grep (concat cmd "'" tagname "' *.[ch]"))) 
    ((member major-mode '(latex-mode tex-mode)) 
     (grep (concat cmd "-i '" tagname "' *.tex"))) 
    ((eq major-mode 'emacs-lisp-mode) 
     (grep (concat cmd "'" tagname "' *.el"))) 
    (t (grep (concat cmd "'" tagname "' *")))))) 
+1

tylko FYI: CEDET może używać grep do znajdowania osób dzwoniących –

Powiązane problemy