Saya ingin melihat definisi fungsi yang ada di Emacs. Apakah ini mungkin?
Saya sudah mencoba C-h d function-name RET
, tetapi hanya mengembalikan string dokumentasi untuk fungsi, bukan fungsi sebenarnya.
Saya sedang memikirkan sesuatu yang mirip dengan type
perintah bash , yang akan mengembalikan seluruh definisi fungsi.
(Cerita memalukan yang memalukan: Saya tidak sengaja menulis tentang fungsi yang bekerja di .emacs
file saya dengan versi yang tidak berfungsi. Fungsi aslinya masih ada di memori! Dan itu berhasil! Tetapi saya tidak bisa seumur hidup mengingat bagaimana saya melakukannya.)
.emacs
membuka di buffer, coba undur seperti orang gila.Jawaban:
Jika Anda mengetik
C-h f function-name RET
, Anda akan mendapatkan dokumentasi fungsi, dengan tautan ke sumber fungsi jika tersedia.Saya tidak berpikir ada fungsi Lisp mudah yang dapat Anda panggil untuk mengambil lokasi sumber fungsi; pencarian cukup terkait dengan sisa sistem bantuan.
find-lisp-object-file-name
adalah fungsi utama yang mencoba mencari tahu di mana sumber fungsi tersebut.Kecuali jika
function-name
primitif (didefinisikan dalam sumber C Emacs), Anda dapat melihat kodenya dengan(symbol-function 'function-name)
, atau lebih umum (fungsi-nama fungsi tidak langsung). Namun, jika fungsi itu byte-dikompilasi, semua Anda akan melihat bytecode-nya.sumber
(symbol-function 'function-name)
persis apa yang saya cari! Juga, sepertinya jika Anda benar-benar membutuhkan sumber ke fungsi C Anda bisa mendapatkannya menggunakan informasi dari jawaban Oleg.M-x find-function
mengembalikan definisi fungsi di dekat titik.Dari dokumentasi:
Jika Anda ingin menyertakan juga fungsi yang diimplementasikan dalam C, Anda harus menambahkan yang berikut ke file .emacs Anda:
sumber