Emacsにはカッコのマッチング(parenthesis matching)機能がいくつかあります。これにより、どのカッコ(または他の区切り)がどのようにマッチするか簡単に見ることができます。
終了文字となる自己挿入文字をタイプすると、Emacsはそれがスクリーン上にあれば、マッチする開始区切りの位置を簡単に示します。スクリーン上にない場合、Emacsは開始区切りの近くにあるテキストをエコーエリアに表示します。どちらの方法でも、どのグループを終了したのか見分けることができます。開始区切りと終了区切りがマッチしない — ‘[x)’のような場合、エコーエリアに警告メッセージが表示されます。
3つの変数が、マッチするカッコの表示を制御します:
blink-matching-paren
は、この機能をオンまたはオフに切り替えます。nil
は無効にしますが、デフォルトのt
は有効にします。jump
にセットすると、マッチする開始区切りに数瞬カーソルを移動して指示します。jump-offscreen
にセットすると、開始区切りが画面上にない場合でもカーソルをジャンプさせます。
blink-matching-delay
は、マッチする開始区切りを何秒表示するかを指定します。これには整数または浮動小数点数を指定します。デフォルトは1です。
blink-matching-paren-distance
には、マッチする開始区切りを後方に何文字検索するかを指定します。この文字数内にマッチが見つからない場合、Emacsは検索を中止して、何も表示しません。デフォルトは102400です。
Show Parenモードは、より強力な自動的なマッチングの類を提供するマイナーモードです。開始区切りの前、または終了区切りの後ろにポイントを移動すると、(相手としてマッチする)区切り、およびオプションで区切り同士の間にあるテキストをハイライトします。Show Parenモードをグローバルに切り替えるにはM-x show-paren-mode、カレントバッファーだけで切り替えるにはM-x show-paren-local-modeとタイプします。
このモードはデフォルトでは編集を意図したすべてのバッファーでオンになっています。ただしデータ表示用のバッファーでは有効になっていません。これを制御するのがユーザーオプションshow-paren-predicate
です。
モードをカスタマイズするにはM-x customize-group RET paren-showingとタイプしてください。このモードでの操作を制御するカスタマイズ可能なオプションには以下が含まれます:
show-paren-highlight-openparen
は、ポイントが開きカッコの直前にあるとき(つまりいずれにせよそこはカーソルによってマークされる)、そのカッコをハイライトするかどうかを制御します。デフォルトは非nil
(ハイライトする)です。
show-paren-style
は2つのカッコだけをハイライトするか、それともカッコの間のテキストもハイライトされるかどうかを制御します。有効なオプションはparenthesis
(マッチするカッコをハイライト)、expression
(カッコで括られた式全体をハイライト)、mixed
(ウィンドウ内でカッコが表示されているときはマッチするカッコ、カッコが表示されていないときは式をハイライト)です。
show-paren-when-point-inside-paren
が非nil
の場合には、ポイントがカッコの内側にあるときもハイライトされます。デフォルトはnil
です。
show-paren-when-point-in-periphery
が非nil
なら、行頭の空白文字にポイントがあり行の最初か最後の非空白文字の位置にカッコがある、または行末にポイントがあり行の最後の非空白文字の位置にカッコがある場合にもハイライトを行います。
show-paren-context-when-offscreen
が非nil
の場合にはポイントが終了デリミタ(delimiter:
区切り文字)にあり、かつ開始デリミタが画面上にないときはエコーエリアにコンテキストの一部を表示します。このコンテキストは通常は開始デリミタを含む行ですが、開始デリミタそれ自体が行である場合にはその前の非ブランク行がコンテキストに含められます。
グローバルなマイナーモードのElectric Pairモードは、マッチするカッコ(parentheses)、大カッコ(braces)、角カッコ(brackets)、...などの 区切りを簡単に挿入する方法を提供します。開始区切りを挿入すると、マッチする終了区切りが自動的に挿入され、2つの区切りの間にポイントが置かれます。反対に終了区切りを既存の区切りの先に挿入した場合、何の挿入もされず、その位置は単にスキップされます。リージョンがアクティブ(マークとリージョンを参照)の場合、区切りの挿入はそのリージョンを操作します。リージョン内の文字はマッチする区切りのペアー内に括られ、ポイントはタイプした区切りの後に置かれます。
以下の変数は、Electric Pairモードの追加機能を制御するのに使用できます:
electric-pair-preserve-balance
—
非nil
の場合、デフォルトのペアリングロジックは、開始区切りと終了区切りの数の釣り合いになります。
electric-pair-delete-adjacent-pairs
—
非nil
の場合、隣接する区切りの間でのバックスペースにより、終了区切りも自動的に削除します。
electric-pair-open-newline-between-pairs
—
非nil
の場合、2つの隣接するペアの間での改行の挿入は、ポイントの後ろに自動的に追加の改行をオープンします。
electric-pair-skip-whitespace
—
非nil
の場合、終了区切りのスキップを決定する前に、マイナーモードが空白文字を前方にスキップするようにします。
Electric Pairモードに切り替えるには、M-x electric-pair-modeとタイプします。1つのバッファーにたいしてこのモードを切り替えるには、M-x electric-pair-local-modeを使用してください。