iPhoneアプリ、買ってますか? つい"ポチッとな"してしまう仕掛けの数々に、Appleの計算高さが見え隠れしてしまうのですが。それはさておき、不定期に発生する「期間限定セール品」、そのお知らせを効率よく知る方法はないものでしょうか? 先日、コナミの「フロッガー」を67%OFFで購入したのですが、私はたまたま情報を入手できたからいいものの、セール情報自体知らない人も多いはず。売り手 / 買い手ともに、もったいない話だと思うんですよねえ。
さて、今回も『第331回 Cocoa対応で大きく変わった「Emacs 23.1」(1)』に続き「Emacs 23.1」(Cocoa Emacs) について。筆者の「~/.emacs.el」から、Cocoa Emacsに必要 / あれば便利な設定を抜粋する形でお届けしたい。
海上忍氏が利用中の「.emacs.el」(抜粋)はこちらからダウンロードできます(記事末にも掲載)。
Metaキーの仕様変更
メインのAPIセットがCocoaに変更されたとはいえ、Cocoa Emacsも立派 (?) なEmacsであることに変わりはない。スタートアップファイル「~/.emacs.el
」を用意するなど、事前準備もこれまで同様だ。言い換えれば、これまで利用してきた (Carbon Emacsでの) 設定の大半は、Cocoa Emacsに流用可能だ。
前回と若干重複するが、主要な変更点を列挙しておこう。まずは特殊キーについて。Carbon Emacsのときは、CommandキーがMetaキーとして動作したが、Cocoa Emacsでは本来のキーアサインが適用され、OptionキーがMetaキーとして動作する。たとえば、M-x shell
を実行するときには、Command-x shell
ではなく、Option-x shell
としなければならない。ちなみに、Carbon Emacsでの挙動に慣れている場合には、以下の記述を~/.emacs.el
に書き加えよう。
;; Command-Key and Option-Key
(setq ns-command-modifier (quote meta))
(setq ns-alternate-modifier (quote super))
行番号の表示
vi (vim) にはあるがEmacsに標準装備されていない機能の1つに、行番号の表示がある。viの場合、「:set number
」 (または:set nu
) で表示、「:set no number
」(または:set nonu
) で表示をオン / オフできるが、これまでEmacsでは「setnu.el」などのスクリプトを自前で用意しなければならなかった。それがEmacs 23.1では「M-x global-linum
」の実行でオン / オフできるのだから、ありがたい話だ。
ありがたいついでに、筆者は以下の行を~/.emacs.el
に記述している。お察しのとおり、「M-n
」 (Command - n
) で行番号の表示をオン / オフできるようにしたものだ。なお、キーのカスタマイズを行う場合、あらかじめ「C-h k
」でそのキーバインドが空いているかどうか確認しよう。
(global-set-key "\M-n" 'linum-mode)
フォントを設定する
Cocoa Emacsの設定のキモは、おそらく「フォント」だろう。従来 (Carbon Emacs) とは設定方法が異なるうえ、等幅フォントに関しては初期設定のままでは使えない (英字2文字で漢字1文字にならない) ため、なにかしらの調整が必要だ。
等幅フォントの設定方法は、Emacs上で動作するメールクライアント「Mew」の開発で知られる山本和彦氏のブログを参照させていただいた (「Cocoa Emacsでのフォント設定」)。そこには、carbonfont.elをCocoa Emacsに対応させることがベストとしつつも、とりあえず現状をしのげる解が示されている。
筆者の場合、ウェイトの小さい (線が細い) フォントが好みなため、オープンソースのTrueTypeフォント集「M+ OUTLINE FONTSS」に含まれる「M+ 1mn」で試してみた。前掲したひな形のうち変更したのは、日本語フォントを定義する「'("Hiragino Maru Gothic Pro" . "iso10646-1"))
」の部分 (Xftフォント名を使用) と、日本語フォントの表示倍率を決定する「("^-apple-M+_1mn.*" . 1.2)
」 (XFLDフォント名を使用) の2カ所のみだ。
;; Font
(setq my-font "-*-*-medium-r-normal--14-*-*-*-*-*-fontset-hiramaru")
(setq mac-allow-anti-aliasing t)
(if (= emacs-major-version 22)
(require 'carbon-font))
(set-default-font my-font)
(add-to-list 'default-frame-alist `(font . ,my-font))
(when (= emacs-major-version 23)
(set-fontset-font
(frame-parameter nil 'font)
'japanese-jisx0208
'("M+ 1mn" . "iso10646-1"))
(setq face-font-rescale-alist
'(("^-apple-M+_1mn.*" . 1.2)
(".*osaka-bold.*" . 1.2)
(".*osaka-medium.*" . 1.2)
(".*courier-bold-.*-mac-roman" . 1.0)
(".*monaco cy-bold-.*-mac-cyrillic" . 0.9)
(".*monaco-bold-.*-mac-roman" . 0.9)
("-cdac$" . 1.3))))
他のフォントを使用する場合には、まずTerminalで「fc-list
」コマンドを利用しよう。これで、フォントのXftフォント名を調べることができる。
XFLDフォント名を調べる場合は、Emacs上で以下の行を入力し、行末でC-x C-eとタイプしよう。ズラリ並んだリストから名称を頼りに目的のフォントを探し出し (前述のM+ 1mnならば「"-apple-M+_1mn-medium-normal-normal-*-*-*-*-*-p-0-iso10646-1"
」)、「-apple-M+_1mn
」の部分をフォントの表示倍率の部分に使えばいい。
(insert (prin1-to-string (x-list-fonts "*")))
なお、筆者が動作を確認したフォントは、前述した「M+ 1mn」のほか、Microsoft Office 2008に付属の「メイリオ」と、フリーのTrueTypeフォント「IPAゴシック」、Adobe製品に付属していた「小塚ゴシック Pro」の4種類。読みやすさで愛用している「Tokyo-Font for Internet」は、旧Mac OS以来のフォント形式 (FFIL / フォントスーツケース) ゆえなのか、表示することができなかった。英字フォントとのバランス調整を含め、当面の課題として意識するつもりだ。
筆者が利用中のemacs.el(抜粋)
;; -*- Coding: iso-2022-jp -*-
(set-language-environment 'Japanese)
(set-default-coding-systems 'sjis-dos)
(set-buffer-file-coding-system 'sjis-dos)
(set-clipboard-coding-system 'sjis-mac)
(set-file-name-coding-system 'utf-8)
(if window-system
(set-keyboard-coding-system 'sjis)
(show-paren-mode 1)
(progn
(set-keyboard-coding-system 'sjis-dos)
(set-terminal-coding-system 'sjis-dos)))
;; translate clipboard
(set-selection-coding-system 'sjis-mac)
;; Command-Key and Option-Key
(setq ns-command-modifier (quote meta))
(setq ns-alternate-modifier (quote super))
;; Display Line Number
(global-set-key "\M-n" 'linum-mode)
;; Font
(setq my-font "-*-*-medium-r-normal--14-*-*-*-*-*-fontset-hiramaru")
(setq mac-allow-anti-aliasing t)
(if (= emacs-major-version 22)
(require 'carbon-font))
(set-default-font my-font)
(add-to-list 'default-frame-alist `(font . ,my-font))
(when (= emacs-major-version 23)
(set-fontset-font
(frame-parameter nil 'font)
'japanese-jisx0208
'("M+ 1mn" . "iso10646-1"))
(setq face-font-rescale-alist
'(("^-apple-M+_1mn.*" . 1.2)
(".*osaka-bold.*" . 1.2)
(".*osaka-medium.*" . 1.2)
(".*courier-bold-.*-mac-roman" . 1.0)
(".*monaco cy-bold-.*-mac-cyrillic" . 0.9)
(".*monaco-bold-.*-mac-roman" . 0.9)
("-cdac$" . 1.3))))