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?
Odpowiedz
Do tego używam xcscope
. Jest to biblioteka, która sprawia, że Emacs współdziała z zewnętrznym narzędziem cscope
.
Po skonfigurowaniu można użyć cscope-find-functions-calling-this-function
, aby uzyskać listę miejsc docelowych kodu źródłowego, które wywołują określoną funkcję.
http://www-inst.eecs.berkeley.edu/~cs186/fa05/debugging/xcscope.el http://www.emacswiki.org/emacs/CScopeAndEmacs
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ń.
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 "' *"))))))
tylko FYI: CEDET może używać grep do znajdowania osób dzwoniących –
- 1. pycharm znajdź gdzie funkcja Pythona jest nazywana
- 2. Zależność C99 dla operatorów - gdzie jest określona?
- 3. statyczna funkcja: klasa przechowywania nie może być określona tutaj
- 4. Dlaczego funkcja onKey() jest wywoływana dwa razy?
- 5. Funkcja JavaScript określona dla pętli
- 6. Funkcja Progu libcURL nie jest wywoływana
- 7. Funkcja onContextItemSelected nie jest wywoływana w DialogFragment
- 8. Funkcja wywołania zwrotnego Asio nie jest wywoływana
- 9. Funkcja onStop jest wywoływana przed onStart
- 10. C# - Czy funkcja jest wywoływana dla każdej iteracji pętli foreach?
- 11. Jak sprawdzić, czy funkcja jest wywoływana za pomocą połączenia/zastosowanie
- 12. Dlaczego funkcja onBackPressed() nie jest wywoływana?
- 13. Jak dowiedzieć się w Eclipse, czy określona metoda jest wywoływana z innej metody bezpośrednio lub pośrednio?
- 14. Gdzie jest funkcja assert_raises nosa?
- 15. Dlaczego nie jest wywoływana funkcja textFieldShouldReturn?
- 16. Dlaczego funkcja run() jest wywoływana tylko raz?
- 17. Funkcja sukcesu AJAX nie jest wywoływana
- 18. Funkcja UIKeyboardTaskQueue może być wywoływana tylko z głównego wątku
- 19. czy kompilator może mi powiedzieć, która funkcja jest przeładowana lub wybrana?
- 20. Czy ktoś może mi powiedzieć, jaki to jest język?
- 21. Czy ktoś może mi powiedzieć, dlaczego UIImage.ciimage jest null
- 22. Jak jest używana metoda getView() i gdzie jest wywoływana?
- 23. Czy ktoś może mi wytłumaczyć ten kod?
- 24. Czy ktoś może mi wyjaśnić MVC?
- 25. Czy ktoś może mi wyjaśnić metody anonimowe?
- 26. Czy IDisposable.Dispose() jest wywoływana automatycznie?
- 27. jQuery funkcja jest wywoływana dwukrotnie za każde kliknięcie
- 28. Dlaczego funkcja __getattribute__ nie jest wywoływana w niejawnym wywołaniu __getitem __?
- 29. Określona obsada jest nieprawidłowa?
- 30. accessoryButtonTappedForRowWithIndexPath: nie jest wywoływana.
Jaki język? –
Używam programu Emacs do programowania C kompilującego się z GCC 4.4.3 na Linuksie – ant2009