バッファローカル変数

Emacs Lispをかじってみる - gom68の日記
smart-compile.elでできてしまった - gom68の日記

また、buffer-file-nameはnilを指していました。バッファ内にファイルが展開されてない場合はnilを返すとなっていましたが…

前回の時点で「csc *scrach*」となっているということは、*scratch*バッファで「buffer-file-name」を評価したのであろう。*scratch*バッファはファイル名と関連づけられていないのでbuffer-file-nameはnilになる。
buffer-file-nameはバッファローカル変数なのでバッファによってまちまちな値になる。C#コードのバッファで「M-: buffer-file-name」とタイプしてみるとソースコードのファイル名がフルパスで出てくるはず。

バッファローカル変数オブジェクト指向プログラミング言語におけるインスタンス変数(メンバ変数)みたいなものだろう。
Rubyと違って変数の見た目でバッファローカル変数かどうかわからんのがrubyist的につらい(^^; かといって任意の変数をバッファローカル変数にできるのはカスタマイズする上で大事なんだよね…ジレンマ。