Next: Default Coding Systems, Previous: Lisp and Coding Systems, Up: Coding Systems [Contents][Index]
この関数は指定されたテキストをエンコードするために、必要ならユーザーに選択を求めてコーディングシステムを選択する。指定されるテキストは通常はカレントバッファーのfromとtoの間のテキスト。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-pが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
はそのコーディングシステムを選択する前にユーザーに問い合わせる。
以下の2つの関数は補完つきでユーザーにコーディングシステムの選択を求めるために使用できます。Completionを参照してください。
この関数は文字列promptをプロンプトにミニバッファーを使用してコーディングシステムを読み取り、そのコーディングシステムの名前をシンボルとしてリターンする。defaultはユーザーの入力が空の場合にリターンするべきコーディングシステムを指定する。これはシンボルか文字列であること。
この関数は文字列promptをプロンプトにミニバッファーを使用してコーディングシステムを読み取り、そのコーディングシステムの名前をシンボルとしてリターンする。ユーザーが空の入力を試みると再度ユーザーに問い合わせを行う。Coding Systemsを参照のこと。