Emacs ではほとんどの関数は Emacs Lisp で書かれているため、
F1 f (describe-function) すると、定義されている *.el が一行目に
表示されます。

add-to-list is a compiled Lisp function in subr.el'. この例だと subr.el’ 上で Enter すると、定義元に飛べます。

中には高速化のために C で書かれた関数もあります。car や cdr、
write-region などです。このような関数を F1 f すると、以下のように
表示されます。

car is a built-in function in C source code'. 同じように C source code’ 上で Enter すると、C のソースコードに飛
べます。

Enter 後に “Emacs C source dir:” というプロンプトが表示されてしまっ
たら、ソースコードの展開先を指定してあげましょう。

もう削除しちゃったよという人や、パッケージでインストールしてソース
コードがない人は適当な場所に展開すると良いでしょう。

% pwd
/Users/masutaka
% wget http://ftpmirror.gnu.org/emacs/emacs-23.3a.tar.bz2
% tar xjf emacs-23.3a.tar.bz2

上記の例だと、"~/emacs-23.3/src" を指定すれば OK です。毎回指定する
のが面倒なら、以下を設定すれば OK です。

(setq find-function-C-source-directory "~/emacs-23.3/src")