Next: , Previous: , Up: Coding Systems   [Contents][Index]


32.10.4 ユーザー選択のコーディングシステム

Function: select-safe-coding-system from to &optional default-coding-system accept-default-p file

この関数は指定されたテキストをエンコードするために、必要ならユーザーに選択を求めてコーディングシステムを選択する。指定されるテキストは通常はカレントバッファーのfromtoの間のテキスト。fromが文字列なら、その文字列がエンコードするテキストを指定して、toは無視される。

指定されたテキストにrawバイト(Text Representationsを参照)が含まれる場合には、select-safe-coding-systemはそのエンコーディングにraw-textを提案する。

default-coding-systemが非nilなら、それは試行すべき最初のコーディングシステムである。それがテキストを処理できるなら、select-safe-coding-systemはそのコーディングシステムをリターンする。これはコーディングシステムのリストの可能性もある。その場合にはこの関数はそれらを1つずつ試みる。それらをすべて試した後に、(undecided以外なら)カレントバッファーのbuffer-file-coding-systemの値、次にbuffer-file-coding-systemのデフォルト値、最後にユーザーがもっとも好むコーディングシステム(コマンドprefer-coding-systemでセットできる最優先されるコーディングシステム)を試みる(Recognizing Coding Systems in The GNU Emacs Manualを参照)。

これらのうちいずれかのコーディングシステムが指定されたテキストすべてを安全にエンコード可能なら、select-safe-coding-systemはそれを選択およびリターンする。それ以外ならコーディングシステムのリストからすべてのテキストをエンコードできるコーディングシステムの選択をユーザーに求めてユーザーの選択をリターンする。

default-coding-systemは最初の要素がtで、他の要素がコーディングシステムであるようなリストかもしれない。その場合には、もしリスト内にテキストを処理できるコーディングシステムがなければ、select-safe-coding-systemは上述した3つの代替えいずれを試みることなく即座にユーザーに問い合わせる。

オプション引数accept-default-pが非nilなら、それはユーザーとの対話なしで選択されたコーディングシステムが許容できるかどうかを判断する関数であること。select-safe-coding-systemは、選択されたコーディングシステムのベースコーディングシステムを唯一の引数として、この関数を呼び出す。accept-default-pnilうちリターンしたら、select-safe-coding-systemは黙って選択されたコーディングシステムを拒絶して、可能な候補リストからコーディングシステムの選択をユーザーに求める。

変数select-safe-coding-system-accept-defaultf-pが非nilなら、それは1つの引数をとる関数であること。これはaccept-default-p引数に与えられた値をオーバーライドすることによりaccept-default-pのかわりに使用される。

最後のステップとして選択されたコーディングシステムをリターンする前に、select-safe-coding-systemはもしリージョンのコンテンツがファイルから読み込まれたものだったとしたなら選択されたであろうコーディングシステムと、そのコーディングシステムが一致するかどうかをチェックする(異なるならその後の再visitと編集でファイル内のデータ汚染が起こり得る)。select-safe-coding-systemは通常はこの目的のためのファイルとしてbuffer-file-nameを使用するが、fileが非nilならかわりにそのファイルを使用する(これはwrite-regionや類似の関数に関連し得る)。明らかな不一致が検出された場合にはselect-safe-coding-systemはそのコーディングシステムを選択する前にユーザーに問い合わせる。

以下の2つの関数は補完つきでユーザーにコーディングシステムの選択を求めるために使用できます。Completionを参照してください。

Function: read-coding-system prompt &optional default

この関数は文字列promptをプロンプトにミニバッファーを使用してコーディングシステムを読み取り、そのコーディングシステムの名前をシンボルとしてリターンする。defaultはユーザーの入力が空の場合にリターンするべきコーディングシステムを指定する。これはシンボルか文字列であること。

Function: read-non-nil-coding-system prompt

この関数は文字列promptをプロンプトにミニバッファーを使用してコーディングシステムを読み取り、そのコーディングシステムの名前をシンボルとしてリターンする。ユーザーが空の入力を試みると再度ユーザーに問い合わせを行う。Coding Systemsを参照のこと。