Previous: Dynamic Abbrevs, Up: Abbrevs


22.7 動的略語のカスタマイズ方法

通常、動的略語展開では大文字小文字を区別しないで候補を探します。 つまり、展開候補と略語の大文字小文字が一致する必要はありません。

この機能は変数dabbrev-case-fold-searchで制御できます。 値がtのときは、候補を探すときに大文字小文字を区別しません。 値がnilのときは、候補と略語の大文字小文字が一致する必要があります。 変数dabbrev-case-fold-searchの値は、 デフォルトでは真であるcase-fold-searchです。 したがって、変数case-fold-searchが 展開候補を探すときの大文字小文字の区別を制御します。

通常、動的略語展開は打ち込んだ略語の大文字小文字のパターンを保存します。 つまり、略語の大文字小文字のパターンに合うように 展開形の大文字小文字を変換します。

変数dabbrev-case-replaceは、略語の大文字小文字のパターンを 保存するかどうかを制御します。 値がtのときは、たいていの場合、パターンを保存します。 nilのときは、つねに展開形をそのままコピーします。 dabbrev-case-replaceの値は、 デフォルトでは真であるcase-replaceです。 したがって、変数case-replaceが 展開形をそのままコピーするかどうかを制御します。

しかしながら、展開形の大文字小文字のパターンが複雑であるとき、 略語の始めから終りまでがそのパターンに一致する場合、 これらの変数に関わらず展開形をそのままコピーします。 たとえば、バッファにvariableWithSillyCasePatternとあって v a M-/と打鍵すると、 大文字小文字のパターンを含め展開形をそのままコピーします。

変数dabbrev-abbrev-char-regexpnil以外の場合、 動的展開においてどんな文字を単語構成文字とみなすかを制御します。 これに指定する正規表現は1文字のみに一致するものである必要があり、 2文字以上に一致してはいけません。 同じ正規表現は、どの文字が展開形を構成するかも指定します。 値としてnilを指定すると特別な意味があり、 略語は単語の構成文字だけから成り、 展開形は単語と記号文字から成るという意味になります。

シェルスクリプトやmakefileなどでは、 変数名には接頭辞‘$’があったりなかったりします。 これらのテキスト用のメジャーモードでは、 変数dabbrev-abbrev-skip-leading-regexpを設定して 余分な接頭辞を扱えるように動的展開をカスタマイズできます。 この変数には、動的略語展開で無視すべき余分な接頭辞に一致する 正規表現を指定します。