narrowing は、(Emacs の)エディティングコマンドがアドレス可能なテキストの限界 を、バッファ中の文字のある範囲に限ることです。これはまた clipping 制限(域)の設 定としても知られています。 clipping 制限(域)はその制限(域)の始めと終りとを示す 2 つのバッファポジションで示されます。このポジションは、 (ほとんどのエディティ ングコマンドにおいて) バッファの始めと終りの値のかわりに用いられますが、バッ ファの(本当の)始めと終りとを用い(ながら)、 clipping 制限(域)の外のテキストを変 更しようとするとエラーを出す(訳注:signal)コマンドも存在しています。 Undo はこ のようなものの 1例です。セクション 24.8 [Undo]、ページ 233 参照。
clipping 制限(域) が用いられている場合、この領域の外のテキストは表示されませ ん。バッファ motion 関数は、ポイントの値をカレントな clipping 制限(域) の外の 値に設定することはできません。バッファポジションを返す関数は clipping 制限(域) の影響を受けません。返されるポジションは(常に)本当のバッファの先頭に対するもの です。
バッファセービングコマンドは narrowing の影響を受けません。カレントな clipping 制限(域) によらずバッファ全体をセーブします。
Command: narrow-to-region start end
この関数は、カレントな clipping 制限を、 start で始まり end で終るようにし ます。どちらも文字位置(訳注:character position)でなくてはいけません。
インタラクティブに呼ばれた場合、 start と end はカレントのリージョン (region-beginning と region-end) に設定されます。
Command: narrow-to-page move-count
この関数は、clipping 制限がカレントなページをちょうど含むようにします。オ プショナルな最初のアーギュメント move-count が non-nil の場合、そのページ 数だけ前もしくは後ろに移動してから、narrow を行ないます。
インタラクティブに呼ばれた場合、 move-count は(処理された)プレフィックス アーギュメントになります。
Command: widen
この関数は、カレントバッファから clipping 制限を(全て)徐きます。
Special Form: save-restriction forms*
この特殊フォームは、カレントな clipping 制限をセーブし、 forms を評価した 後 clipping 制限をリストアします。異常 exit (throw もしくはエラー) の場合 も clipping 制限はリストアします。ポイントとマークはリストアされません。リ ストアするためには save-excursion を用いて下さい。これは(一時的に) clipping 制限を変更する場合、clipping 制限を自動的にリストアするための(標 準的な)方法です。
この関数は、その本体において(widen を行ない)セーブされた制限領域の外を変更 した場合、混乱を起すもとになりえます。 save-restriction と save-excursion の両方を行いる場合、save-excursion が先に来なくてはいけない点に注意して下 さい。(なぜ??)
---------- Buffer: foo ---------- This is the contents of foo This is the contents of foo This is the contents of foo ---------- Buffer: foo ----------
(save-excursion (save-restriction (narrow-to-region 1 80)
(goto-char (point-min)) (replace-string "foo" "var")))
---------- Buffer: foo ---------- This is the contents of bar This is the contents of bar This is the contents of foo ---------- Buffer: foo ----------
最後に評価したフォームの返す値か、( forms が与えられない場合) nil を返しま す。