Next: デフォルトのコーディングシステム, Previous: Lispでのコーディングシステム, Up: コーディングシステム [Contents][Index]
この関数は指定されたテキストをエンコードするために、必要ならユーザーに選択を求めてコーディングシステムを選択する。指定されるテキストは通常はカレントバッファーのfromとtoの間のテキスト。fromが文字列なら、その文字列がエンコードするテキストを指定して、toは無視される。
指定されたテキストにrawバイト(テキストの表現方法を参照)が含まれる場合には、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
なら、そのような暗黙の選択は常に許容される。非nil
なら関数であること。select-safe-coding-system
は選択するコーディングシステムのベースとなるコーディングシステムを単一の引数としてその関数を呼び出す。関数がnil
をリターンしたら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
はそのコーディングシステムを選択する前にユーザーに問い合わせる。
この変数は出力処理がテキストを安全にエンコードできないときに、テキストをエンコードするための正しいコーディングシステムの選択をユーザーに求めるために呼び出される関数。この変数のデフォルト値はselect-safe-coding-system
。write-region
のようにテキストをファイルに書き込んだり、process-send-region
のように別プロセスにテキストを送信するEmacsプリミティブは、coding-system-for-write
がnil
にバインドされていれば、通常はこの変数の値を呼び出す(単一の操作にたいするコーディングシステムの指定を参照)。
以下の2つの関数は補完つきでユーザーにコーディングシステムの選択を求めるために使用できます。補完を参照してください。
この関数は文字列promptをプロンプトにミニバッファーを使用してコーディングシステムを読み取り、そのコーディングシステムの名前をシンボルとしてリターンする。defaultはユーザーの入力が空の場合にリターンするべきコーディングシステムを指定する。これはシンボルか文字列であること。
この関数は文字列promptをプロンプトにミニバッファーを使用してコーディングシステムを読み取り、そのコーディングシステムの名前をシンボルとしてリターンする。ユーザーが空の入力を試みると再度ユーザーに問い合わせを行う。コーディングシステムを参照のこと。