Next: Subroutines of Visiting, Up: Visiting Files [Contents][Index]
このセクションでは、ファイルのvisitに通常使用される関数を説明します。歴史的な理由により、これらの関数は‘visit-’ではなく、‘find-’で始まる名前をもちます。バッファーをvisitしているファイルの名前へのアクセスや、visitされたファイル名から既存のバッファーを見つける関数および変数については、Buffer File Nameを参照してください。
Lispプログラム内では、ファイル内容を見たいものの変更したくない場合はテンポラリーバッファー(temporary buffer:
一時的なバッファー)でinsert-file-contents
を使用例するのが、もっとも高速な方法です。時間を要するファイルのvisitは必要ありません。Reading from Filesを参照してください。
このコマンドは、ファイルfilenameをvisitしているバッファーを選択する。visitしている既存のバッファーがあればそのバッファーを使用し、なければバッファーを新たに作成して、そのバッファーにファイルを読み込む。これはそのバッファーをリターンする。
技術的な詳細を別とすると、find-file
関数のbodyは基本的には以下と等価である:
(switch-to-buffer (find-file-noselect filename nil nil wildcards))
(Switching Buffersのswitch-to-buffer
を参照されたい。)
wildcardsが非nil
(これはinteractiveに呼び出された場合は常にtrueである)の場合、find-file
はfilename内のワイルドカード文字を展開して、マッチするすべてのファイルをvisitする。
find-file
がinteractiveに呼び出された際は、ミニバッファー内でfilenameの入力を求める。
このコマンドは、find-file
が行うようにfilenameをvisitするが、フォーマット変換(Format Conversionを参照)、文字コード変換(Coding Systemsを参照)、EOL変換(End of line
conversionを参照)を何も行わない。ファイルをvisitしているバッファーはunibyteになり、ファイル名とは無関係にバッファーのメジャーモードはFundamentalモードになる。ファイル内で指定されたファイルローカル変数(File Local Variablesを参照)は無視され、自動的な解凍とrequire-final-newline
によるファイル終端への改行追加(require-final-newlineを参照)も無効になる。
Emacsがすでにリテラリー(literally:
文字通り、そのまま)でない方法で同じファイルをvisitしているバッファーをもつ場合、Emacsはその同じファイルをリテラリーにvisitせず、単に既存のバッファーに切り替わることに注意されたい。あるファイルのコンテンツにたいして、確実にリテラリーにアクセスしたい場合は、テンポラリーバッファーを作成し、insert-file-contents-literally
を使用してファイルのコンテンツを読み込むべきである(Reading from Filesを参照)。
この関数は、ファイルをvisitするすべての関数の要である。これは、ファイルfilenameをvisitしているバッファーをリターンする。望むならそのバッファーをカレントにしたり、あるウィンドウ内に表示することができるだろうが、この関数はそれを行わない。
関数は、既存のバッファーがあればそれをリターンし、なければ新たにバッファーを作成し、それにファイルを読み込む。find-file-noselect
が既存のバッファーを使用する際は、まずファイルがそのバッファーに最後にvisit、または保存したときから変更されていないことを検証する。ファイルが変更されている場合、この関数は変更されたファイルを再読み込みするかどうかをユーザーに尋ねる。ユーザーが‘yes’と応えた場合、以前に行われたそのバッファー内での編集は失われる。
ファイルの読み込みは、EOL変換、フォーマット変換(Format Conversionを参照)を含む、ファイルコンテンツのデコードを要する(Coding Systemsを参照)。wildcardsが非nil
の場合、find-file-noselect
はfilename内のワイルドカード文字を展開して、マッチするすべてのファイルをvisitする。
この関数は、オプション引数nowarnがnil
の場合は、さまざまな特殊ケースにおいて、警告メッセージ(warning
message)、および注意メッセージ(advisory
message)を表示する。たとえば、関数がバッファーの作成を必要とし、かつfilenameという名前のファイルが存在しない場合は、エコーエリア内にメッセージ‘(New
file)’を表示して、そのバッファーを空のままに留める。
find-file-noselect
関数は通常、ファイルを読み込んだ後にafter-find-file
を呼び出す(Subroutines of Visitingを参照)。この関数はバッファーのメジャーモードのセット、ローカル変数のパース、正にvisitしたファイルより新しいauto-saveファイルが存在する場合のユーザーへの警告を行い、find-file-hook
内の関数を実行することにより終了する。
オプション引数rawfileが非nil
の場合、after-find-file
は呼び出されず、失敗時にfind-file-not-found-functions
は呼び出されない。さらに、非nil
値のrawfileは、コーディングシステム変換およびフォーマット変換を抑制する。
find-file-noselect
関数は、通常はファイルfilenameをvisitしているバッファーをリターンする。しかし、ワイルドカードが実際に使用、展開された場合は、それらのファイルをvisitしているバッファーのリストをリターンする。
(find-file-noselect "/etc/fstab") ⇒ #<buffer fstab>
このコマンドは、ファイルfilenameをvisitしているバッファーを選択するが、選択されたウィンドウではない他のウィンドウでこれを行う。これは、別の既存ウィンドウを使用したり、ウィンドウを分割するかもしれない。Switching Bufferslを参照のこと。
このコマンドがinteractiveに呼び出された際は、filenameの入力を求める。
このコマンドは、find-file
のようにファイルfilenameをvisitしているバッファーを選択するが、そのバッファーを読み取り専用(read-only)とマークする。関連する関数および変数については、Read Only Buffersを参照のこと。
このコマンドがinteractiveに呼び出された際は、filenameの入力を求める。
この変数が非nil
の場合、各種find-file
コマンドはワイルドカード文字をチェックして、それらにマッチするすべてのファイルをvisitする(interactiveに呼び出されたとき、またはwildcards引数が非nil
のとき)。このオプションがnil
の場合、find-file
コマンドはそれらのwildcards引数を無視して、ワイルドカード文字を特別に扱うことは決してない。
この変数の値は、ファイルがvisitされた後に呼び出される、関数のリストである。ファイルのローカル変数指定は、(もしあれば)このフックが実行される前に処理されるだろう。フック関数実行時は、そのファイルをvisitしているバッファーがカレントになる。
この変数はノーマルフックである。Hooksを参照のこと。
この変数の値は、find-file
またはfind-file-noselect
が存在しないファイル名を受け取った際に呼び出される、関数のリストである。存在しないファイルを検知すると、find-file-noselect
は直ちにこれらの関数を呼び出す。これらのうち、いずれかが非nil
をリターンするまで、リストの順に関数を呼び出す。buffer-file-name
はすでにセットアップ済みである。
関数の値が使用され、多くの場合いくつかの関数だけが呼び出されるので、これはノーマルフックではない。
このバッファーローカル変数が非nil
値にセットされた場合、save-buffer
はあたかもそのバッファーがリテラリー、つまり何の変換も行わずにファイルをvisitしていたかのように振る舞う。コマンドfind-file-literally
は、この変数のローカル値をセットするが、その他の等価な関数およびコマンドも、たとえばファイル終端への改行の自動追加を避けるために、同様にこれを行うことができる。この変数は恒久的にローカルなので、メジャーモードの変更により影響を受けない。