Next: , Previous: Customization Groups, Up: Easy Customization


28.2.2.2 オプションの変更

カスタマイズバッファでユーザーオプションがどのように見えるか、 例をあげましょう。

     Kill Ring Max: [Hide] 30
        [State]: this option is unchanged from its standard setting.
     Maximum length of kill ring before oldest elements are thrown away.

[Hide]’に続くテキスト、つまり、‘30’がオプションの現在の値を 示しています。 ‘[Hide]’ではなく‘[Show]’と表示されていれば、 値は隠されています。 カスタマイズバッファでは、複数行にわたるような値は最初は隠されていて、 ‘[Show]’を起動すると表示されます。

オプション名に続く行はオプションのカスタマイズ状態を示しています。 上の例では、まだ変更していないと表示されています。 行頭の‘[State]’のところがアクティブフィールドで、 ここをMouse-1か<RET>で起動するとさまざまな操作を 示すメニューが表示されます。 これらの操作は変数をカスタマイズするうえでとても重要です。

[State]’のつぎの行には、 そのオプションの説明文字列の先頭部分が表示されます。 1行に収まらない場合には、行末に‘[More]’と表示されます。 これを起動すると説明文字列全体が表示されます。

Kill Ring Max’に新しい値を設定するには、 ポイントを値の位置へ持っていって直接文字列を変更します。 たとえば、M-dで現在の値を削除してから、 設定する数値を打ち込めばよいのです。

文字列を変更し始めると、‘[State]’行の表示が変わって、 値が編集されていることを示すようになります。

     [State]: you have edited the value as text, but not set the option.

文字列を変更しただけでは、まだオプション変数の値は設定されません。 値を設定するには、‘[State]’のところを起動して、 ‘Set for Current Session’を選択します。

値を設定すると、オプションの状態表示も対応して変わります。

     [State]: you have set this option, but not saved it for future sessions.

正しくない値を設定してしまう心配はありません。 というのは、オプションの設定時には、値の正しさを検査して、 正しくない値は設定できないようになっています。

ディレクトリ名、ファイル名、コマンド名である値やフィールドを編集するとき、 および、その他何であれ補完が定義されているものを編集するときは、 M-<TAB>widget-complete)を打てば補完できます。

いくつかのオプションでは、正しい値としては決まった少数のものだけを使えます。 そのようなオプションは、テキストとしては編集できません。 かわりに‘[Value Menu]’というアクティブフィールドが値のまえに現れます。 『オンかオフ』だけの真偽値を持つオプションでは、 アクティブフィールドは‘[Toggle]’と表示されていて、 そこを起動するたびに値を反転できます。 ‘[Value Menu]’も‘[Toggle]’もバッファを変更するだけです。 値が実際に設定されるのは‘Set for Current Session’を起動したときです。

いくつかのオプションは、込み入った構造の値を持ちます。 たとえば、load-pathは値としてディレクトリのリストを持ちます。 これをカスタマイズバッファに表示すると、つぎのようになります。

     Load Path:
     [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/site-lisp
     [INS] [DEL] [Current dir?]: /usr/local/share/emacs/site-lisp
     [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/leim
     [INS] [DEL] [Current dir?]: /usr/local/share/emacs/20.3/lisp
     [INS] [DEL] [Current dir?]: /build/emacs/e20/lisp
     [INS] [DEL] [Current dir?]: /build/emacs/e20/lisp/gnus
     [INS]
        [State]: this item has been changed outside the customization buffer.
     List of directories to search for files to load....

リスト中の各ディレクトリがそれぞれ別の行に表示され、 各行にはいくつかの編集可能/アクティブフィールドがあります。

どのディレクトリ名も直接編集できます。 リストからディレクトリを削除するには、 その行の‘[DEL]’を起動します。 リストに新しいディレクトリを追加するには、 挿入したい箇所の‘[INS]’を起動します。

[Current dir?]’を起動すると、パスに特定のディレクトリを含めるのか、 または、nilを含めるのかを切り替えられます。 (探索パスにおけるnilは、 『カレントディレクトリを探せ』という意味。)

2つの特別なコマンド、<TAB>とS-<TAB>は、 カスタマイズバッファ内での移動に役立ちます。 <TAB>(widget-forward)はつぎの アクティブ/編集可能フィールドへ移動します。 S-<TAB>widget-backward)は、 1つまえのアクティブ/編集可能フィールドへ移動します。

編集可能フィールドで<RET>を打つと、 <TAB>と同様につぎのフィールドへ進みます。 なぜそうなっているかというと、編集可能フィールドを 編集し終えると最後に<RET>を打つ人が多いからです。 編集可能フィールドに改行文字を入るには、 C-oC-q C-jと打ちます。

オプションを設定すると、その値は現在のEmacsセッションだけに有効です。 その値を保存すると、将来のセッションでも有効になります。 保存を行うと、個人の~/.emacsファイルにコードが追加されて、 つぎにEmacsを起動したときにオプション変数の値を設定するようになります。 オプションを保存するには、‘[State]’を起動して ‘Save for Future Sessions’を選びます。

オプションを標準値に戻したければ、‘[State]’を起動して ‘Reset to Standard Settings’を選びます。 実際にはつぎの3種類のリセット操作があります。

Reset
なんらかの修正を行ったが、まだオプションを設定していなければ、 この操作により、カスタマイズバッファ上のテキストを オプションの現在値と一致させられる。
Reset to Saved
この操作では、オプションの値を最後に保存した値に戻し、 カスタマイズバッファ上のテキストもその値に合わせる。
Reset to Standard Settings
この操作では、オプションを標準値に設定し、 カスタマイズバッファ上のテキストもその値に合わせる。 さらに、以前にそのオプションについて保存した値もすべてもとに戻されるので、 将来のEmacsセッションでもすべて標準値が使われるようになる。

グループの‘[State]’はそのグループに属するもののどれかが 編集された/設定された/保存されたことを示します。 ‘Set for Current Session’、‘Save for Future Sessions’、 および各種の‘Reset’をグループ全体に対して適用できます。 これらの操作はグループおよびそのサブグループに属するすべての オプションに対して適用されます。

カスタマイズバッファの先頭付近には、 いくつかのアクティブフィールドを含んだつぎのような行があります。

      [Set for Current Session] [Save for Future Sessions]
      [Reset] [Reset to Saved] [Reset to Standard]   [Bury Buffer]

[Bury Buffer]’を起動すると、カスタマイズバッファを消します。 他のフィールドは、そのバッファに含まれている項目それぞれについてそれぞれ、 設定、保存、リセットを(それらの操作が適用可能なら)実行します。