Next: , Up: Customization


28.1 マイナモード(minor mode)

マイナモードは、個別にオン/オフ可能な機能です。 たとえば、マイナモードである自動詰め込み(auto-fill)モードをオンにすると、 <SPC>で自動的に(単語の切れ目で)行分けします。 すべてのマイナモードは互いに独立ですし、 どのメジャーモードとも独立です。 ほとんどのマイナモードは、それがオンであることをモード行に表示します。 たとえば、モード行に‘Fill’と表示されていれば、 自動詰め込み(auto-fill)モードがオンであることを意味します。

マイナモード名のうしろに-modeを付け加えると、 そのモードをオン/オフするコマンド関数の名前になります。 したがって、自動詰め込み(auto-fill)モードをオン/オフするコマンドは M-x auto-fill-modeということになります。 これらのコマンドは通常M-xを使って起動しますが、 どれかのキーにバインドすることもできます。 引数を指定しないと、これらのコマンドはモードがオフのときはオンに、 オンのときはオフに切り替えます。 これをトグルすると呼びます。 これに対し、正の引数を指定するとつねにモードをオンにしますし、 明示的に0の引数を指定するか、または負の引数を指定すると つねにモードをオフにします。

いくつかのマイナモードのオン/オフは、カレントバッファに対してのみ適用され、 他のバッファには影響しません。 つまり、あるバッファであるモードをオンにし、 別のバッファではそのモードをオフにできるわけです。 このような、バッファごとにオン/オフできるマイナモードとしては、 略語(abbrev)モード、自動詰め込み(auto-fill)モード、 自動保存(auto-save)モード、フォントロック(font-lock)モード、 ISOアクセント(iso-sccents)モード、アウトライン(outline)マイナモード、 上書き(overwrite)モード、バイナリ上書き(binary-overwrite)モードがあります。

略語(abbrev)モードでは、 略語を打ち込むと自動的に展開されるような略語を定義できます。 たとえば、‘amd’を‘abbrev mode’と展開させます。 詳しくは、See Abbrevs

自動詰め込み(auto-fill)モードでは、いちいち改行で行分けしなくても テキストを詰め込んで入力できます。 行が長くなりすぎないようにEmacsが適宜改行を挿入します。 See Filling

自動保存(auto-save)モードはバッファの内容を定期的に保存することで、 システムクラッシュが起きたとき紛失してしまう作業の量を少なくします。 See Auto Save

エンリッチ(enriched)モードは、整形済みテキストの編集を可能にします。 See Formatted Text

フライスペル(flyspell)モードは、 綴りに誤りのある単語を自動的に強調表示します。

フォントロック(font-lock)モードは、コメント、文字列、定義中の関数名などの プログラム中の決まった単位を自動的に強調表示します。 これには、複数のフォントを表示できるウィンドウシステムが必要です。 See Faces

水平スクロール(hscroll)モードは、ポイントが画面内に留まるように、 自動的に水平スクロールを行います。 See Horizontal Scrolling

ISOアクセント(iso-accents)モードは、‘`’、‘'’、 ‘"’、 ‘^’、‘/’、‘~’とこれらに続くつぎの文字を結合して、 ISO Latin-1文字集合のアクセント付き文字を作り出します。 See Single-Byte European Support

アウトラインマイナ(outline-minor)モードは、メジャーモードである アウトライン(outline)モードと同じ機能を提供します。 しかし、マイナモードなので任意のメジャーモードと一緒に使えます。 See Outline Mode

上書き(overwrite)モードでは、入力された図形文字は既存の文字を右に押しやる かわりにその文字を置き換えます。 たとえば、ポイントが‘FOOBAR’の‘B’のまえにあるときに Gを打つと‘FOOGAR’となります。 通常のモードであれば‘FOOGBAR’となります。 上書き(overwrite)モードでコマンドC-qを打つと、 そのつぎの文字が何であっても(数字であっても)その文字を挿入します。 つまり、上書き(overwrite)モードの中で文字を挿入するには この方法を使います。

バイナリ上書き(binary-overwrite)モードは上書き(overwrite)モードの変形で、 バイナリファイル編集用です。 このモードでは、改行やタブも他の文字と同じに扱われるので、 他の文字をこれらの文字で上書きすることも、 これらの文字を他の文字で上書きすることもできます。

以下で説明するマイナモードは、すべてのバッファに一斉に適用されます。 ただし、これらは変数の値に応じてオン/オフされますから、 その変数をバッファにローカルな変数にすれば、 バッファごとに独立にオン/オフすることも可能です。 See Locals

補完示唆(icomplete)モードは、ミニバッファで入力中に補完機能が働いているとき、 どのような補完候補があるかを表示します。 See Completion Options

行番号(line-number)モードは、 ポイントのある行の行番号を絶えずモード行に表示します。 See Mode Line

ミニバッファリサイズ(resize-minibuffer)モードは、 打ち込んだテキスト量に応じて自動的にミニバッファを広げます。 See Minibuffer Edit

スクロールバー(scroll-bar)モードは、各ウィンドウにスクロールバーを付けます (see Scroll Bars)。 メニューバー(menu-bar)モードは、各フレームにメニューバーを付けます (see Menu Bars)。 どちらのモードも、Xウィンドウシステムを使っているときは デフォルトでオンになっています。

暫定マーク(transient-mark)モードでは、 バッファの内容を変更するとマークは『不活性』になるので、 そのあとでリージョンを対象とするコマンドを使うとエラーになります。 つまり、リージョンを対象とするコマンドを使うまえに、 改めてマークを設定するか、不活性になったマークを『再度活性』にします。 暫定マーク(transient-mark)モードの利点は、 (今のところXウィンドウシステムを使っているときのみ) Emacsがリージョンを強調表示することです。 See Setting Mark

ほとんどのマイナモードには、コマンド名と同じ名前の変数があり、 その変数でモードを直接制御しています。 つまり、その変数の値がnil以外ならモードはオンであり、 各マイナモードコマンドは変数の値を設定する動作をします。 たとえば、コマンドoutline-minor-modeは、 変数outline-minor-modeの値を設定する動作を行います。 つまり、この変数が、直接、上書き(overwrite)モードをオン/オフしているのです。 あるマイナモードがこのように動作するかどうかは、 C-h vを使ってその変数の説明文字列を参照してください。

これらのマイナモード変数は、Lispプログラムからモードを オン/オフするのに有用です。 また、ファイルのローカル変数リストとして指定するのも便利です。 ただし、ローカル変数リストで設定する場合には、よく考えてください。 というのは、ほとんどのマイナモードはユーザーの好みの問題であり、 同じファイルを編集する別のユーザーは好みが違うかもしれません。