gnupack 12.02の初期設定

「ここ」で書いた通り新しいgnupackをインストールをして使っています。おおむね問題なく使えているのですが、二つ問題があって、それだけ対処する必要がありました。

gnupackにはEmacsの初期設定を行なうinit.elファイルが最初から付属していて、そこで初期設定を変更しています。二つの問題ともEmacs自体に起因するものではなく、そのgnupackでおこなっている初期設定に関連することです。

[w32-alt-is-metaの設定]

Emacsは「Ctrlキー(Controlキー)」と「Metaキー」を多用します。「Ctrlキー」は普通のキーボードに存在しますが、「Metaキー」は普通ありません。そのため普通は「Altキー」を「Metaキー」の代わりに使います。実際、Windows用のEmacsの通常の初期設定では「Altキー」が「Metaキー」になっています。しかし、gnupackではinit.elで

;; Altキーを使用せずにMetaキーを使用
(setq w32-alt-is-meta nil)

という設定がおこなわれています。これは「Altキー」を「Metaキー」として利用することをやめるという設定で、こうなっていると例えば「Altキー」と「xキー」を同時押しすると、「M-x」ではなく、文字通り「A-x」というように認識されます。

「Metaキー」がないキーボードを使っている私にはこれではものすごく困るので、私はここを

;; Altキーを使用せずにMetaキーを使用
;; (setq w32-alt-is-meta nil)

というようにコメントアウトしています。こうすると「Altキー+xキー」は「A-x」ではなく、「M-x」と認識されます。

[case-fold-searchの設定]

Emacsには文字列を検索するための様々な関数があります。その検索の際に、「大文字小文字」を区別して検索するかどうかは "case-fold-search" という変数の値によって変わってきます。

"case-fold-search" がnilなら「大文字小文字」を区別して検索し、non-nilなら「大文字小文字」を区別しません。元々の初期値はnon-nilですが、gnupackのinit.elでは

;; 大文字・小文字を区別しないでサーチ
(setq-default case-fold-search nil)

というようにnilが設定されて、区別して検索に変更されています。そもそもここの説明文では「大文字・小文字を区別しないでサーチ」と書いてありますが、実際には逆に「区別する」に設定されています。

この設定自体がおかしいわけではないですが、この設定の変更でこれまで動いていたlispで上手く動かなくなったものがちょっとあったので修正しました。