2011-04-13

Emacs 23.3のフォント設定

以前書いたとおり、今はEmacs 23.3にinline_patchを充てて幸せな生活をおくっています。ついでにmacemacsjp MLでフォントの設定関係の話題があったのを思い出したので、参考にしつつ、フォント周りを見なおしてみました。

参考にしたサイトはid:setoryoheiさんとsakitoさんのサイトです。参考というか、id:setoryoheiさんの設定例(2)をまるっとコピーして、必要な文字セットをsakitoさんのサイトから拾ってきただけなんですが。。。

というわけで、今は英字をMenloで日本語をヒラギノ角ゴ ProNで指定して、こんな感じでやっています。


;; http://d.hatena.ne.jp/setoryohei/20110117
;; 設定例2
(let* ((size 12) ; ASCIIフォントのサイズ [9/10/12/14/15/17/19/20/...]
       (asciifont "Menlo") ; ASCIIフォント
       ;; (jpfont "TakaoExGothic")             ; 日本語フォント
       (jpfont "Hiragino Kaku Gothic ProN") ; 日本語フォント
       (h (* size 10))
       (fontspec (font-spec :family asciifont))
       (jp-fontspec (font-spec :family jpfont)))
  (set-face-attribute 'default nil :family asciifont :height h)
  ;; http://sakito.jp/moin/moin.cgi/EmacsFont を参考にして必要そうなものを追加
  (set-fontset-font nil 'jisx0201                 jp-fontspec)
  (set-fontset-font nil 'latin-jisx0201           jp-fontspec)
  (set-fontset-font nil 'japanese-jisx0208        jp-fontspec)
  (set-fontset-font nil 'japanese-jisx0208-1978   jp-fontspec)
  (set-fontset-font nil 'japanese-jisx0212        jp-fontspec)
  (set-fontset-font nil 'japanese-jisx0213-1      jp-fontspec)
  (set-fontset-font nil 'japanese-jisx0213-2      jp-fontspec)
  (set-fontset-font nil 'japanese-jisx0213-a      jp-fontspec)
  (set-fontset-font nil 'japanese-jisx0213.2004-1 jp-fontspec)
  (set-fontset-font nil 'katakana-sjis            jp-fontspec)
  (set-fontset-font nil 'cp932-2-byte             jp-fontspec)
  (set-fontset-font nil 'cp932                    jp-fontspec)
  (set-fontset-font nil '(#x3040 . #x309f)        jp-fontspec) ; ひらがな
  (set-fontset-font nil '(#x30a0 . #x30ff)        jp-fontspec) ; カタカナ
  (set-fontset-font nil '(#xff00 . #xffef)        jp-fontspec) ; 半角・全角系
  (set-fontset-font nil '(#x0370 . #x03FF)        fontspec)    ; ギリシャ文字 
)
;; フォントサイズの比を設定
(setq face-font-rescale-alist
 '(("^-apple-hiragino.*" . 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)))


で、実際にはこんな感じで描画されます。

実はコメントアウトしているところからわかるかもしれませんが、Emacs 23.2まではタカオ フォントを愛用していました。ただ、タカオ フォントでは一部の文字について対応されていなかったので、ちょっと残念な感じになっていました。(特に、TwitterのTLを表示するときとか。。。)

なんか、Emacsのバージョンを上げるたびにフォントの設定を書き換えているような気がしますが、今の内容で結構満足しているので、しばらくはこのままにしておきたいなぁ。。。

2011-04-11

emacsでMXMLとactionscript3を編集できるようにする (あるいはmumamoの使い方)

ググッても特にあんまり情報がなかったので、晒します。勘違いしていたり、もっといい方法があったら教えてください。

きちんとAdobeにお金を払うと、Flex BuilderというFlexの統合開発環境を手に入れることができますが、とりあえず、Flexを使ってみたいという場合はオープンソースで公開されているFlex SDKを使うのが吉だと思います。まぁ、本気でFlexの開発をするんだったらFlex Builderは必須だと思いますけど。そういえば、Flexの統合開発環境ではFlex Developerというのもあるらしいですけど、Windows向けなのでよく知りません。

で、Flex SDKにはコンパイルするためのツールはありますが、コードはテキストエディタを使って書く必要があります。コードアシストがないテキストエディタでコードを書くのは苦行にしかならないので、Emacsでなんとかしようと思うわけですが、如何せん情報がない。

一番困ったのが、MXMLファイルの中にactionscript3のコードを混ぜて書くときのメジャーモードの切り替えです。世の中にはactionscript3用のメジャーモードなんてのもあるんですが、asファイルで分けることを前提として書かれているようなので、ちょっと厳しい。

で、nXhtmlに含まれるmumamoという、1つのバッファに複数のメジャーモードを共存させるelispを使って環境を整えました。

まずはactionscript3用のメジャーモードはここのを使いました。

で、あとはmumamoを使うためにnXhtmlのautostart.elをloadしたあとに以下のようにします。

;; actionsript-modeの登録
(autoload 'actionscript-mode "actionscript-mode" "Major mode for editing actionscript3." t)
(add-to-list 'auto-mode-alist '("\\.as?\\'" . actionscript-mode))

;; actionscript切り替え用chunk
(defun mumamo-chunk-mxml-script (pos min max)
  "`<![CDATA['から`]]>'までをactionsript-modeとする"
  (mumamo-quick-static-chunk pos min max "<![CDATA[" "]]>" nil 'actionscript-mode nil))

;; mxmlはxml-mode、asはactionscript-modeを使用する
(define-mumamo-multi-major-mode mxml-actionscript-mumamo-mode
  "Flex開発でMXMLとactionscript3を共存させる"
  ("Flex Development" nxml-mode (mumamo-chunk-mxml-script)))

mxmlとactionscript3に限らず、以下のようにmumamoを使えるようにすれば幸せになれるかもしれません。

  • 共存させたいメジャーモードを切り替えるためのchunkを定義する
  • 共存させたいメジャーモードをdefine-mumamo-multi-major-modeを使って元になるメジャーモードに組み込こむ