「ここ」で書いた通り新しい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で上手く動かなくなったものがちょっとあったので修正しました。