Previous: , Up: abbrev(略語)   [Contents][Index]


29.8 動的abbrevのカスタマイズ

動的abbrev展開は通常、展開結果の検索で大文字小文字を無視します。したがって、展開結果と展開する単語は、大文字小文字が一致する必要はありません。

この機能は変数dabbrev-case-fold-searchにより制御されます。この値がtの場合、検索で大文字小文字は無視されます。nilの場合、単語と展開結果は大文字小文字が一致していなければなりません。値がcase-fold-search(デフォルト)の場合、変数case-fold-searchが展開結果の検索で、大文字小文字を無視するかどうかを制御します(検索中のLaxマッチングを参照してください)。

動的abbrev展開は通常、大文字小文字のパターンにしたがって展開結果を変換することにより、展開する動的abbrevの大文字小文字のパターンを維持します。

変数dabbrev-case-replaceは、動的abbrevの大文字小文字のパターンを維持するかどうかを制御します。この値がtの場合、動的abbrevの大文字小文字のパターンはほとんどのケースで維持されます。nilの場合、展開結果は常にそのままコピーされます。値がcase-replace(デフォルト)の場合、変数case-replaceが展開結果をそのままコピーするかどうかを制御します(置換コマンドとLaxマッチを参照してください)。

しかし、展開結果が複雑にミックスされた大文字小文字のパターンを含む場合、そして動的abbrevがそのパターンにある程度マッチする場合、これらの変数の値にかかわらず、展開結果は常にそのままコピーされます。したがって、たとえばバッファーがvariableWithSillyCasePatternというテキストを含む場合、v a M-/とタイプすると、大文字小文字のパターンを含めて展開結果をコピーします。

変数dabbrev-abbrev-char-regexpが非nilの場合、これは動的展開の目的のために、どの文字を単語の一部とするかを制御します。正規表現は2文字以上ではなく、ただ1文字だけにマッチしなければなりません。同じ正規表現が、どの文字が展開結果の一部となるかも決定します。値がnil(デフォルト)の場合は特別な意味をもちます。動的abbrev(たとえばポイント位置の単語)は単語構成文字から構成されますが、それらの展開結果は単語とシンボル文字のシーケンスから取得されます。これはプログラムソース内、および多くの言語による人間が読むことができるテキストにたいするシンボルの展開にたいして、一般的にこれは適切ですが、一般的ではない句読点を含むテキストバッファーにおいては、おそらくあなたが望むものではないかもしれません。そのような場合は、値\"\\\\sw\"がよい結果を生成するかもしれません。

シェルスクリプトおよびmakefileでは、変数名にプレフィクス‘$’があるときと、ないときがあります。このタイプのテキストのためのメジャーモードは、オプションのプレフィクスを扱うために、変数dabbrev-abbrev-skip-leading-regexpをセットして、動的abbrev展開をカスタマイズできます。この値には、動的abbrev展開が無視すべきオプションのプレフィクスにマッチする正規表現を指定します。デフォルトはnilで、これは文字をスキップしないことを意味します