Apakah emacs memiliki fungsi atau pustaka yang dapat memungkinkan pengguna untuk pergi ke deklarasi fungsi bahkan jika itu didefinisikan dalam file lain?
Jika demikian, bahasa apa yang ada dukungan untuk?
Inspirasi untuk pertanyaan ini, berasal dari artikel di bawah ini yang berbicara tentang beberapa alasan mengapa emacs tidak akan pernah dapat bersaing dengan IDE.
http://henrikwarne.com/2012/06/17/programmer-productivity-emacs-versus-intellij-idea/
irony-clang
tujuan ini. Apakah Anda membaca komentar di artikel?Jawaban:
Anda dapat melompat ke definisi / referensi seluruh proyek sebesar pohon sumber kernel Linux (lebih dari 36k) dalam sekejap. Lihat panduan C / C ++ saya untuk detailnya. Untuk C / C ++, saya sarankan menggunakan GNU Global yang mendukung C, C ++, Yacc, Java, PHP4 dan assembly.
Kuncinya adalah, jika Anda ingin memiliki fitur IDE suatu bahasa, Anda harus menginstal plugin bahasa itu. Berikut adalah beberapa paket untuk bahasa dinamis yang saya ketahui:
js2-mode
dilakukan, lihat deskripsi ; tetapi pada dasarnya,js2-mode
adalah parser Javascript lengkap yang menghasilkan AST untuk melakukan fitur IDE yang tepat. Jika Anda menginstalskewer-mode
daripada yang Anda milikijs2-mode
secara default, karenaskewer-mode
tergantung padanya.Anda juga dapat menggunakan
ctags
untuk mendukung banyak bahasa seperti skrip shell atau Tcl ...sumber
j2-mode
saya edit dalam jawaban saya.anaconda
mungkin solusi yang lebih spesifik untuk melompat definisi di Python.Saya mengalami masalah yang sama dengan emacs, jadi saya membuat Dumb Jump . Saya mencoba banyak solusi yang disebutkan dalam jawaban yang diterima, tetapi saya selalu mengalami satu atau lebih masalah berikut:
Saya sangat menginginkan solusi yang "baru saja bekerja" dan tidak memerlukan penyesuaian atau pengaturan. Yaitu, saya ingin mengkloning repo acak di Github dan menavigasi di sekitarnya seperti proyek saya yang lain.
Saat ini Dumb Jump memiliki dukungan dasar untuk:
Ini tersedia melalui masalah MELPA dan GitHub dan PR lebih dari diterima.
sumber
Solusi utama untuk ini dalam emacs adalah menggunakan file TAGS, yang dibuat oleh program seperti etags atau gtags. Saya sendiri menggunakan (dan merekomendasikan) ctag riang, dan etag-select.el untuk membantu Anda mempersempit tujuan ketika simbol pencarian terletak di beberapa tujuan. Bahasa yang didukung cukup banyak, lihat manual masing-masing alat. Bahkan ada dukungan untuk menambahkan bahasa Anda sendiri, di mana Anda dapat memberikan ekspresi reguler yang menginstruksikan ctag bagaimana mengisolasi tag yang Anda minati.
sumber
ctags -e -R *
dari direktori root akan mengaturnya untuk Anda.