このセクションでは構文テーブルの作成、アクセス、変更を行う関数を説明します。
この関数は新たに構文テーブルを作成する。tableが非nil
なら新たな構文テーブルの親はtable、それ以外なら標準構文テーブルが親になる。
新たな構文テーブルでは最初はすべての文字に構文クラス“inherit”(‘@’)が与えられて、それらの構文は親テーブルから継承される(構文クラスのテーブルを参照)。
この関数はtableのコピーを構築してそれをリターンする。tableが省略またはnil
なら標準構文テーブルのコピーをリターンする。それ以外の場合には、tableが構文テーブルでなければエラーをシグナルする。
この関数はsyntax-descriptorに応じてcharの構文エントリーをセットする。charは文字、または(min
. max)
という形式のコンスセルでなければならない。後者の場合には、この関数はminとmax
(両端を含む)の間のすべての文字にたいして構文エントリーをセットする。
構文はtable (デフォルトはカレントバッファーの構文テーブル)にたいしてのみ変更されて、他のすべての構文テーブルにたいしては変更されない。
引数syntax-descriptorは構文記述子、すなわち1文字目が構文クラス指定子、2文字目以降がオプションでマッチング文字と構文フラグを指定する文字列。構文記述子を参照のこと。syntax-descriptorが有効な構文記述子でなければエラーがシグナルされる。
この関数は常にnil
をリターンする。この文字にたいするテーブル内の古い構文情報は破棄される。
例:
;; 空白文字クラスのスペースをputする
(modify-syntax-entry ?\s " ")
⇒ nil
;; ‘$’を開カッコ文字にして、 ;; ‘^’を対応する閉カッコにする (modify-syntax-entry ?$ "(^") ⇒ nil
;; ‘^’を閉カッコ文字にして ;; ‘$’を対応する開カッコにする (modify-syntax-entry ?^ ")$") ⇒ nil
;; ‘/’を区切り文字で ;; コメント開始シーケンス1文字目、 ;; かつコメント終了シーケンス2文字目とする ;; これはCモードで使用される (modify-syntax-entry ?/ ". 14") ⇒ nil
この関数は指定子文字(構文クラスのテーブルを参照)の表現でcharacterの構文クラスをリターンする。これはクラスだけをリターンして、マッチング文字や構文フラグはリターンしない。
以下の例はCモードにたいして適用する(
char-syntax
がリターンする文字を確認しやすいようにstring
を使用する)。
;; スペース文字は空白文字構文クラスをもつ (string (char-syntax ?\s)) ⇒ " "
;; スラッシュ文字は区切り文字構文をもつ。
;; コメント開始やコメント終了シーケンスの一部でもある場合、
;; char-syntax
呼び出しはこれを明らかにしないことに注意。
(string (char-syntax ?/))
⇒ "."
;; 開カッコ文字は開カッコ構文をもつ。
;; これがマッチング文字‘)’をもつことは
;; char-syntax
呼び出しでは自明ではないことに注意。
(string (char-syntax ?\())
⇒ "("
この関数はカレントバッファーの構文テーブルをtableにする。これはtableをリターンする。
この関数はカレント構文テーブル(カレントバッファーのテーブル)をリターンする。
このコマンドはbuffer (デフォルトはカレントバッファー)の構文テーブルのコンテンツをhelpバッファーに表示する。
このマクロはtableをカレント構文テーブルとして使用してbodyを実行する。これは古いカレント構文テーブルのリストア後にbodyの最後のフォームの値をリターンする。
各バッファーは独自にカレント構文テーブルをもつので、マクロはこれを入念に行うべきだろう。with-syntax-table
はマクロの実行開始時には、そのときカレントのバッファーが何であれカレント構文テーブルを一時的に変更する。他のバッファーは影響を受けない。