GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Buffer-File-Name.html ・ emacs-doc.conao3.com

28.4 バッファファイル名

バッファファイル名とは、そのバッファで参照されているファイルの名前のことです。バッファがファイルを参照していない場合、そのバッファファイル名はnilとなります。多くの場合、バッファ名はバッファファイル名のディレクトリ以外の部分と同じになりますが、バッファファイル名とバッファ名は別物であり、それぞれ独立して設定できます。ファイルの参照を参照してください。

関数: buffer-file-name &optional buffer

この関数は、buffer が参照しているファイルの完全展開された絶対ファイル名を返します。buffer がいかなるファイルも参照していない場合、buffer-file-name は nil を返します。buffer が指定されていない場合は、現在のバッファがデフォルトとなります。

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

このバッファローカル変数には、現在のバッファで参照中のファイルの絶対名、あるいはファイルを参照していない場合は nil が格納されます。これは永続的なローカル変数であり、kill-all-local-variables の影響を受けません。その値は、buffer-file-name 関数が返す値と同一です。

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

さまざまな処置を講じずにこの変数の値を変更するのは危険です。通常は set-visited-file-name を使用するのが望ましく(後述)、そこで行われるバッファ名の変更などの処理の中には、厳密には必須ではないものもありますが、Emacs の動作を混乱させないためには不可欠なものもあります。

変数: buffer-file-truename

このバッファローカル変数には、現在のバッファで参照されているファイルの省略形の truename が格納されます。ファイルが参照されていない場合は nil となります。これは永続的なローカル変数であり、kill-all-local-variables の影響を受けません。Truenames および abbreviate-file-name を参照してください。

変数: buffer-file-number

このバッファローカル変数には、現在のバッファで参照されているファイルのinode番号とデバイス識別子、あるいはファイルが参照されていないか存在しない場合はnilが格納されます。これは永続的なローカル変数であり、kill-all-local-variablesの影響を受けません。

この値は通常、(inodenum device) 形式のリストとなります。このタプルは、システム上でアクセス可能なすべてのファイルの中から、そのファイルを一意に識別します。詳細については、ファイル属性 の関数 file-attributes を参照してください。

buffer-file-name がシンボリックリンクの名前である場合、inodenum と device はともにそのリンクの再帰的ターゲットを参照します。

関数: get-file-buffer filename

この関数は、訪問済みファイル filename を参照するバッファを返します。そのようなバッファが存在しない場合は、nil を返します。文字列である必要がある引数 filename は展開され(ファイル名を展開する関数 を参照)、その後、すべてのライブバッファの訪問済みファイル名と比較されます。なお、バッファの buffer-file-name は filename の展開結果と完全に一致している必要があります。この関数は、同一ファイルに対する他の名前を認識しません。

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

特殊な状況下では、同一のファイル名を参照するバッファが複数存在することがあります。このような場合、本関数はバッファリスト内の最初の該当バッファを返します。

関数: find-buffer-visiting filename &optional predicate

これは get-file-buffer と同様ですが、場合によっては異なる名前で ファイルを参照する任意のバッファを返すことができます。つまり、バッファの buffer-file-name は filename の展開結果と完全に一致する必要はなく、単に同じファイルを参照していればよいということです。predicate が nil でない場合、それは filename を参照するバッファという1つの引数を取る関数である必要があります。このバッファが適切な戻り値とみなされるのは、predicate が nil 以外を返す場合に限られます。適切なバッファが見つからない場合、find-buffer-visiting は nil を返します。

コマンド: set-visited-file-name filename &optional no-query along-with-file

filename が空でない文字列の場合、この関数は現在のバッファで訪問済みのファイルの名前を filename に変更します。(バッファに訪問済みのファイルがなかった場合は、新たに作成されます。)バッファが次に保存される際は、新たに指定されたファイルが対象となります。

このコマンドは、(Emacsが把握している限り)filenameの内容と一致しないため(たとえ以前に訪問したファイルと一致していたとしても)、バッファを変更済みとしてマークします。また、新しいファイル名が既に使用されていない限り、新しいファイル名に合わせてバッファ名を変更します。

filename が nil または空文字列である場合、それは「参照済みファイルなし」を意味します。この場合、set-visited-file-name はバッファの変更済みフラグを変更することなく、そのバッファに参照済みファイルがないことを示します。

通常、この関数は、すでにfilenameを参照しているバッファが存在する場合に、ユーザーに確認を求めます。no-queryがnilでない場合は、この確認は行われません。すでにfilenameを参照しているバッファが存在し、ユーザーが確認した場合、あるいはno-queryがnilでない場合、この関数はfilenameの‘<…>’の中に数値を付加することで、新しいバッファ名を一意にします。

along-with-file が nil でない場合、直前にアクセスしたファイルが filename にリネームされたとみなされます。この場合、コマンドはバッファの変更フラグや、visited-file-modtime で報告されるバッファの最終ファイル変更時刻を変更しません(バッファ変更時刻 を参照)。along-with-file が nil である場合、この関数は記録されている最終ファイル変更時刻をクリアし、その後 visited-file-modtime は 0 を返します。

関数 set-visited-file-name を対話的に呼び出すと、ミニバッファに filename の入力が求められます。

変数: list-buffers-directory

このバッファローカル変数は、訪問済みファイル名が表示されないバッファにおいて、そのファイル名が配置されるはずのバッファ一覧に表示する文字列を指定します。Diredのバッファではこの変数が使用されます。