次: , 前: Visiting Files, 上: Visiting Files


24.1.1 ファイルを訪問する関数

本節では、ファイルを訪問するために通常使う関数について述べます。 歴史的な理由で、これらの関数は`visit-'でなく`find-'という 名前で始まります。 バッファで訪問したファイルの名前を参照するための関数や変数、ならびに、 訪問したファイルの名前で既存バッファを探すための関数や変数については、 See Buffer File Name

Lispプログラムにおいて、ファイルの内容を変更せずにその内容を調べたいときには、 もっとも速い方法は一時的なバッファでinsert-file-contentsを 使うことです。 ファイルを訪問する必要はありませんし、それには余計に時間がかかります。 See Reading from Files

— コマンド: find-file filename

このコマンドはファイルfilenameを訪問したバッファを選択する。 そのようなバッファが既存ならば当該バッファを使う。 さもなければ、新たなバッファを作成してファイルを読み込む。 当該バッファを返す。

関数find-fileの本体は非常に簡単で、つぎのとおりである。

          (switch-to-buffer (find-file-noselect filename))
     

Displaying Buffersswitch-to-bufferを参照。)

find-fileが対話的に呼び出されると、 ミニバッファでfilenameを問い合わせる。

— 機能: find-file-noselect filename &optional nowarn rawfile

この関数は、ファイルを訪問するすべての関数の基である。 ファイルfilenameを訪問した/するバッファを探し/作成し、 当該バッファを返す。 そのようなバッファが既存ならば当該バッファを使う。 さもなければ、新たなバッファを作成してファイルを読み込む。 必要に応じて、バッファをカレントバッファにしたり ウィンドウに表示できるが、この関数はそこまでは行わない。

find-file-noselectが既存バッファを使うときには、 ファイルの内容が当該バッファに最後に訪問してから、あるいは、 当該バッファを最後に保存してから変更されたかどうかまず確認する。 ファイルが変更されていれば、この関数は変更されたファイルを 再度読み込むかどうかユーザーに問い合わせる。 ユーザーが`yes'と答えると、バッファ内の変更は破棄される。

省略可能な引数nowarnnilであると、 この関数はさまざまな場面で警告/助言メッセージを表示する。 たとえば、バッファを作成する必要があり、かつ、 指定したファイルfilenameがない場合には、 エコー領域にメッセージ`New file'を表示し、バッファは空にしておく。

関数find-file-noselectは、 ファイルを読み込み終えると通常after-find-fileを呼び出す (see Subroutines of Visiting)。 その関数は、バッファのメジャーモードを設定し、ローカル変数を解析し、 訪問したファイルより新しい自動保存ファイルが存在するとユーザーに警告を発し、 find-file-hooksの関数を実行して処理を終える。

省略可能な引数rawfilenil以外であると、 after-find-fileを呼び出さず、 失敗してもfind-file-not-found-hooksを実行しない。 さらに、rawfileの値がnil以外であると、 コーディングシステムの変換(see Coding Systems)や 書式変換(see Format Conversion)も行わない。

関数find-file-noselectは、 ファイルfilenameを訪問したバッファを返す。

          (find-file-noselect "/etc/fstab")
               => #<buffer fstab>
     
— コマンド: find-file-other-window filename

このコマンドは、選択しているウィンドウ以外のウィンドウにおいて、 ファイルfilenameを訪問したバッファを選択する。 別の既存ウィンドウを使うか、ウィンドウを分割する。 Displaying Buffersを参照。

このコマンドが対話的に呼び出されると、 filenameを問い合わせる。

— コマンド: find-file-read-only filename

このコマンドは、find-fileのようにファイルfilenameを訪問した バッファを選択するが、当該バッファは読み出し専用となる。 See Read Only Buffers

このコマンドが対話的に呼び出されると、 filenameを問い合わせる。

— コマンド: view-file filename

このコマンドは、閲覧(view)モードでfilenameを訪問し、 閲覧(view)モードを抜けるとそれ以前のバッファに戻る。 閲覧(view)モードは、ファイルを素早く眺めるためのコマンドを与えるが テキストの変更は許さないマイナモードである。 閲覧(view)モードに入ると、ノーマルフックview-mode-hookを実行する。 see Hooks

view-fileが対話的に呼び出されると、 filenameを問い合わせる。

— 変数: find-file-hooks

この変数の値は、ファイルを訪問後に呼び出される関数のリストである。 ファイルにローカル変数指定(があれば)は、 フックを実行するまえに処理される。 フック関数が実行されときには、 ファイルを訪問したバッファはカレントバッファになっている。

この変数はノーマルフックのように動作するが、 改名すべきではないと考えている。 see Hooks

— 変数: find-file-not-found-hooks

この変数の値は、find-filefind-file-noselectに 存在しないファイルを与えたときに呼び出される関数のリストである。 find-file-noselectは、ファイルが存在しないことがわかると ただちにこれらの関数を呼び出す。 nil以外の値が返されるまで、リストに現れる順に呼び出す。 buffer-file-nameは設定済みである。

関数の値を使い、しかも、一部の関数だけを呼び出すので、 これはノーマルフックではない。