Next: , Previous: , Up: バッファー   [Contents][Index]


28.4 バッファーのファイル名

バッファーファイル名(buffer file name)とは、そのバッファーにvisitされているファイルの名前です。バッファーがファイルをvisitしていなければ、バッファーファイル名はnilです。バッファー名は大抵はバッファーファイル名の非ディレクトリーパートと同じですが、バッファーファイル名とバッファー名は別物であり個別にセットすることができます。ファイルのvisitを参照してください。

Function: buffer-file-name &optional buffer

この関数はbufferがvisitしているファイルの絶対ファイル名をリターンする。bufferがファイルをvisitしていなければ、buffer-file-namenilをリターンする。bufferが与えられない場合のデフォルトはカレントバッファー。

(buffer-file-name (other-buffer))
     ⇒ "/usr/user/lewis/manual/files-ja.texi"
Variable: buffer-file-name

このバッファーローカル変数はカレントバッファーにvisitされているファイルの名前、ファイルをvisitしていなければnil。これは永続的なローカル変数でありkill-all-local-variablesの影響を受けない。

buffer-file-name
     ⇒ "/usr/user/lewis/manual/buffers-ja.texi"

他のさまざまな事項を変更せずにこの変数を変更するのは危険である。通常はset-visited-file-nameを使用するほうがよい(以下参照)。バッファー名の変更などのような、そこで行われることのいくつかは絶対必要という訳ではないが、その他の事項はEmacsが混乱するのを防ぐために必要不可欠である。

Variable: buffer-file-truename

このバッファーローカル変数はカレントバッファーにvisitされているファイルの省略された形式の実名(truename)、ファイルをvisitしていなければnilを保持する。これは永続的にローカルでありkill-all-local-variablesの影響を受けない。See 本当の名前abbreviate-file-nameを参照のこと。

Variable: buffer-file-number

このバッファーローカル変数はカレントバッファーにvisitされているファイルのinode番号とディレクトリーデバイス識別子、ファイルをvisitしていなければnilを保持する。これは永続的にローカルでありkill-all-local-variablesの影響を受けない。

値は通常は(inodenum device)のような形式のリスト。このタプル(tuple: 組)はシステム上でアクセス可能なすべてのファイルの中からファイルを一意に識別する。より詳細な情報はファイルの属性file-attributesを参照のこと。

buffer-file-nameがシンボリックリンク名なら、inodenumdeviceの両方がリンクのターゲットを再帰的に参照する。

Function: get-file-buffer filename

この関数はファイルfilenameをvisitしているバッファーをリターンする。そのようなバッファーが存在しなければnilをリターンする。引数filenameは文字列でなければならず、展開(ファイル名を展開する関数を参照)された後に、killされていないすべてのバッファーがvisitしているファイル名と比較される。バッファーのbuffer-file-namefilenameの展開形と正確にマッチしなければならないことに注意。この関数は同じファイルにたいする他の名前は認識しないだろう。

(get-file-buffer "buffers-ja.texi")
    ⇒ #<buffer buffers-ja.texi>

特殊な状況下では、複数のバッファーが同じファイル名をvisitすることがあり得る。そのような場合には、この関数はバッファーリスト内の最初に該当するバッファーをリターンする。

Function: find-buffer-visiting filename &optional predicate

これはget-file-bufferと似ているが、そのファイルを違う名前でvisitしているかもしれないすべてのバッファーをリターンする。つまりバッファーのbuffer-file-namefilenameの展開形式と正確にマッチする必要はなく、同じファイルを参照することだけが要求される。predicateが非nilなら、それはfilenameをvisitしているバッファーを1つの引数とする関数であること。そのバッファーにたいしてpredicateが非nilをリターンした場合のみ適切なリターン値と判断される。リターンすべき適切なバッファーが見つからなければ、find-buffer-visitingnilをリターンする。

Command: set-visited-file-name filename &optional no-query along-with-file

filenameが非空文字列なら、この関数はカレントバッファーにvisitされているファイルの名前をfilenameに変更する(バッファーがファイルをvisitしていなければvisitするファイルとしてfilenameを与える)。そのバッファーにたいする次回の保存では、新たに指定されたファイルに保存されるだろう。

このコマンドは、たとえそのバッファーのコンテンツがその前にvisitされていたファイルとマッチしていても、(Emacsが関知するかぎり) filenameのコンテンツとはマッチしないのでバッファーが変更されている(modified)とマークする。これはその名前がすでに使用されていなければ、新たなファイル名に対応してバッファーをリネームする。

filenamenilか空文字列なら、それは“visitされているファイルがない”ことを意味する。この場合にはset-visited-file-nameはバッファーの変更フラグを変更することなく、そのバッファーがファイルをvisitしていないとマークする。

この関数はfilenameをvisitしているバッファーがすでに存在する場合は、通常はユーザーに確認を求める。しかしno-queryが非nilならこの質問を行わない。filenameをvisitしているバッファーがすでに存在し、かつユーザーが承認するかno-queryが非nilなら、この関数は中に数字が入った‘<…>’をfilenameに追加して新たなバッファーの名前を一意にする。

along-with-fileが非nilなら、それは前にvisitされていたファイルがfilenameにリネームされたと想定することを意味する。この場合、コマンドはバッファーの修正フラグを変更せず、そのバッファーの記録されている最終ファイル変更時刻をvisited-file-modtimeが報告する時刻(バッファーの変更時刻を参照)で変更することもしない。along-with-filenilなら、この関数はvisited-file-modtimeが0をリターンした後に、記録済みの最終ファイル変更時刻をクリアーする。

関数set-visited-file-nameがinteractiveに呼び出されたときはミニバッファー内でfilenameの入力を求める。

Variable: list-buffers-directory

このバッファーローカル変数はvisitしているファイル名をもたないバッファーにたいして、バッファーリスト中のvisitしているファイル名を表示する場所に表示する文字列を指定する。Diredバッファーはこの変数を使用する。