Previous: Syntax Table Internals, Up: Syntax Tables


34.9 カテゴリ

カテゴリ(category)は、文字を構文的に分類する別の方法です。 必要に応じて複数のカテゴリを定義できて、 そうすると各文字に1つか複数のカテゴリを独立に設定できます。 構文クラスと異なり、カテゴリは互いに排他的ではありません。 1つの文字が複数のカテゴリに属することは普通にあります。

各バッファにはカテゴリテーブル(category table)があり、 どのカテゴリが定義済みでどの文字がどのカテゴリに属するかを記録しています。 各カテゴリテーブルはそれ独自のカテゴリ群を定義しますが、 それらは標準のカテゴリテーブルをコピーして普通は初期化されます。 そのため、すべてのモードで標準のカテゴリを使えます。

各カテゴリには名前があり、それは‘ から‘~’までの 範囲のASCII印字文字です。 define-categoryでカテゴリを定義するときにその名前を指定します。

カテゴリテーブルは実際には文字テーブル(see Char-Tables)です。 カテゴリテーブルの添字cの要素は、 カテゴリ集合(category set)です。 これはブールベクトルであり、文字cが属するカテゴリ群を表します。 このカテゴリ集合において、添字catの要素がtであると、 catは集合の要素であることを意味し、 当該文字cはカテゴリcatに属することを意味します。

— Function: define-category char docstring &optional table

この関数は、名前をchar、説明文字列をdocstringとして 新たなカテゴリを定義する。

新たなカテゴリは、カテゴリテーブルtableに対して定義される。 tableのデフォルトは、カレントバッファのカテゴリテーブルである。

— Function: category-docstring category &optional table

この関数は、カテゴリテーブルtableのカテゴリcategoryの 説明文字列を返す。

          (category-docstring ?a)
                "ASCII"
          (category-docstring ?l)
                "Latin"
— Function: get-unused-category table

この関数は、カテゴリテーブルtableで現在定義されていない 新たなカテゴリ名(文字)を返す。 tableにおいて可能なすべてのカテゴリが使用済みであるとnilを返す。

— Function: category-table

この関数は、カレントバッファのカテゴリテーブルを返す。

— Function: category-table-p object

この関数は、objectがカテゴリテーブルであるとtを返し、 さもなければnilを返す。

— Function: standard-category-table

この関数は、標準のカテゴリテーブルを返す。

— Function: copy-category-table &optional table

この関数は、カテゴリテーブルtableのコピーを作成しそれを返す。 tableを指定しない(あるいはnil)と、 現在のカテゴリテーブルのコピーを返す。 tableがカテゴリテーブルでないとエラーを通知する。

— Function: set-category-table table

この関数は、カレントバッファのカテゴリテーブルをtableとする。 tableを返す。

— Function: make-category-set categories

この関数は、新たなカテゴリ集合、つまり、 文字列categoriesに指定したカテゴリで 内容を初期化したブールベクトルを返す。 categoriesの要素はカテゴリ名であること。 新たなカテゴリ集合では、categoriesの各カテゴリに対してはtを それ以外のカテゴリに対してはnilを設定する。

          (make-category-set "al")
                #&128"\0\0\0\0\0\0\0\0\0\0\0\0\2\20\0\0"
— Function: char-category-set char

この関数は、文字charに対するカテゴリ集合を返す。 これは、文字charが属するカテゴリ群を記録したブールベクトルである。 関数char-category-setは、カテゴリテーブルに 存在する同じブールベクトルを返すため、新たな領域を割り付けない。

          (char-category-set ?a)
                #&128"\0\0\0\0\0\0\0\0\0\0\0\0\2\20\0\0"
— Function: category-set-mnemonics category-set

この関数は、カテゴリ集合category-setを この集合に属するすべてのカテゴリの名前からなる文字列に変換する。

          (category-set-mnemonics (char-category-set ?a))
                "al"
— Function: modify-category-entry character category &optional table reset

この関数は、カテゴリテーブルtable(デフォルトはカレントバッファの カテゴリテーブル)内の文字characterのカテゴリ集合を変更する。

普通、カテゴリ集合にcategoryを追加して変更する。 しかし、resetnil以外であるとcategoryを削除する。