GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Lisp-and-Coding-Systems.html ・ emacs-doc.conao3.com

34.10.3 Lispにおけるコーディング体系

コーディングシステムを扱うためのLispの機能は以下の通りです。

関数: coding-system-list &optional base-only

この関数は、すべてのコーディングシステム名(シンボル)の一覧を返します。base-only が nil 以外の場合、値には基本コーディングシステムのみが含まれます。それ以外の場合は、エイリアスおよびバリアントのコーディングシステムも含まれます。

関数: coding-system-p object

この関数は、object がコーディングシステム名または nil である場合に t を返します。

関数: check-coding-system coding-system

この関数は coding-system の妥当性をチェックします。妥当な場合は coding-system を返します。coding-system が nil である場合、関数は nil を返します。それ以外の値については、error-symbol が coding-system-error となるエラーを通知します(シグナル を参照)。

関数: coding-system-eol-type coding-system

この関数は、coding-system で使用される行末(別名 eol)変換の型を返します。coding-system で特定の行末変換が指定されている場合、戻り値は unix、dos、mac をそれぞれ表す整数 0、1、または 2 となります。coding-system で行末変換が明示的に指定されていない場合、戻り値は以下のような、考えられる行末変換型のいずれかをそれぞれ持つコーディングシステムのベクトルとなります:

(coding-system-eol-type 'latin-1)
     ⇒ [latin-1-unix latin-1-dos latin-1-mac]

この関数がベクトルを返す場合、Emacsはテキストのエンコードまたはデコード処理の一環として、どのEOL変換を使用するかを決定します。デコード時には、テキストの行末形式が自動的に検出され、それに合わせてEOL変換が設定されます(例:DOS形式のCRLFであればdosのEOL変換が適用されます)。エンコード時には、適切なデフォルトのコーディングシステム(例:buffer-file-coding-systemに対するデフォルト値buffer-file-coding-system)、または基盤となるプラットフォームに適したデフォルトのEOL変換が採用されます。

関数: coding-system-change-eol-conversion coding-system eol-type

この関数は、eol-type で指定される行末変換を除き、coding-system と同様のコーディングシステムを返します。eol-type は unix、dos、mac、または nil である必要があります。nil の場合、返されるコーディングシステムがデータから行末変換を決定します。

eol-type は 0、1、または 2 の場合もあり、それぞれ unix、dos、mac を表します。

関数: coding-system-change-text-conversion eol-coding text-coding

この関数は、eol-coding の行末変換と text-coding のテキスト変換を用いるコーディングシステムを返します。text-coding が nil である場合は、undecided または eol-coding に応じたそのバリアントのいずれかを返します。

関数: find-coding-systems-region from to

この関数は、from から to までのテキストのエンコードに使用可能なコーディングシステムの一覧を返します。一覧に含まれるすべてのコーディングシステムは、その部分のテキストに含まれるあらゆるマルチバイト文字を安全にエンコードできます。

テキストにマルチバイト文字が含まれていない場合、関数はリスト (undecided) を返します。

関数: find-coding-systems-string string

この関数は、string のテキストをエンコードするために使用可能なコーディングシステムの一覧を返します。一覧に含まれるすべてのコーディングシステムは、string 内のあらゆるマルチバイト文字を安全にエンコードできます。テキストにマルチバイト文字が含まれていない場合は、一覧 (undecided) が返されます。

関数: find-coding-systems-for-charsets charsets

この関数は、リスト charsets に含まれるすべての文字セットをエンコードするために使用可能な符号化方式の一覧を返します。

関数: check-coding-systems-region start end coding-system-list

この関数は、リスト coding-system-list に含まれる符号化方式が、start と end の間の領域にあるすべての文字を符号化できるかどうかを判定します。リスト内のすべての符号化方式が指定されたテキストを符号化できる場合、この関数は nil を返します。一部の符号化方式が一部の文字を符号化できない場合、戻り値はアリストであり、各要素は (coding-system1 pos1 pos2 …) の形式をとります。これは、coding-system1 がバッファ位置 pos1、pos2、... にある文字を符号化できないことを意味します。

start は文字列である場合があり、その場合は end は無視され、返される値はバッファ位置ではなく文字列のインデックスを参照します。

関数: detect-coding-region start end &optional highest

この関数は、startからendまでのテキストをデコードするための妥当な符号化方式を選択します。このテキストはバイト列、すなわちユニバイトテキスト、またはASCIIと8ビット文字のみからなるマルチバイトテキストである必要があります(明示的な符号化とデコードを参照)。

通常、この関数はスキャンされたテキストのデコードを処理可能なコーディングシステムの一覧を返します。これらは優先度の高い順に列挙されます。ただし、highest が nil 以外である場合、戻り値は優先度が最も高い単一のコーディングシステムのみとなります。

当該領域に、ESC のような ISO-2022 制御文字を除く ASCII 文字のみが含まれている場合、テキストから判断可能であれば、値は undecided または (undecided)、あるいは行末変換を指定するバリアントとなります。

リージョンにヌルバイトが含まれている場合、たとえそのリージョンに何らかの符号化方式でエンコードされたテキストが含まれていても、値は no-conversion となります。

関数: detect-coding-string string &optional highest

この関数は detect-coding-region と同様ですが、バッファ内のバイトではなく string の内容に対して動作します。

変数: inhibit-null-byte-detection

この変数が nil 以外の値を持つ場合、領域や文字列のエンコーディングを検出する際にヌルバイトが無視されます。これにより、Indexノードを持つInfoファイルなど、ヌルバイトを含むテキストのエンコーディングを正しく検出できるようになります。

変数: inhibit-iso-escape-detection

この変数に nil 以外の値が設定されている場合、領域や文字列のエンコーディングを検出する際に ISO-2022 エスケープシーケンスが無視されます。その結果、いかなるテキストも ISO-2022 エンコーディングで符号化されていると検出されず、すべてのエスケープシーケンスがバッファ内で可視となります。警告: Emacs ディストリビューションに含まれる多くのファイルが ISO-2022 エンコーディングを使用しているため、この変数の使用には細心の注意を払ってください。

関数: coding-system-charset-list coding-system

この関数は、coding-system がサポートする文字セット(文字セットを参照)の一覧を返します。一覧にしきれないほど多くの文字セットをサポートする一部の符号化方式では、特別な値が返されます:

  • coding-system がすべての Emacs 文字に対応している場合、値は (emacs) となります。
  • coding-system がすべての Unicode 文字に対応している場合、値は (unicode) となります。
  • coding-system がすべての ISO-2022 文字セットに対応している場合、値は iso-2022 となります。
  • coding-system が Emacs バージョン 21(内部 Unicode サポートの実装前)で使用されていた内部コーディングシステムのすべての文字をサポートしている場合、その値は emacs-mule となります。

サブプロセスへの入出力に使用されるコーディングシステムの確認方法や設定方法については、プロセス情報、特に関数 process-coding-system および set-process-coding-system の説明を参照してください。