Google Code Prettify

2010年5月7日

Emacs23 の フォント設定

新し目の Emacs ではフォントエンジンの改良が進んでおり、 antialiasing が効いた奇麗な表示が出来る。また、沢山の種類のフォントを扱えるようになっている。

プログラムの編集等をしてると等幅フォントが必要である。 特に、日本人としてはASCII文字と日本語文字の幅が 1:2 である事が強く望ましい

まぁ、いくつか設定方法が流れてるので、コピペして使えば良いのだが。。。 みんなどうやって見やすい設定を探してるのだろうか?

疑問に思ったので、次のような機能のelispを書いてみた

my-sample-ascii.el
my-sample-ascii
既定のフェース default/bold/italic/bold-italic それぞれで同じメッセージを 同一のバッファに出力する
my-sample-face-size
defaultのフェースを継承し(書体を引き継ぎ)、高さが 6〜20ptのフェースを作成し、同じメッセージを 同一のバッファに出力する

適当にdefaultフェースを設定した後だが、CocoaEmacs/NTEmacs/Emacs(onUbuntu)での、 my-sample-face-sizeの結果は次のようになる

ss-20100507-cocoaemacsss-20100507-ntemacs23 ss-20100507-ubuntu10.04

いくつか設定してみたが、全ての pt で、1:2 に揃うフォントの組み合わせはほんとに稀で、日常的に使うサイズに合わせて、サイズの微調節が必要のようである。 やはり、IPAフォントの恩恵は結構でかいなぁ。

今現在、いい感じに設定できたのは次の通り。

まとめ

なんか Emacs をガンガン使い倒したくなってきた!!

追加 (2010/11/03)

VMware 上の X で画面サイズの変化で dpi が変化し pt 単位でフォント指定すると、実際のフォントの大きさがまちまちになるので、 明示的にpixel単位?で指定する方法に切り替えてみた。

2010年5月6日

NTEmacs 23.1.Xを使ってみる

Windowsの定番は Meadowであり、今でも十分安定している。 ただ、ベースにしてるのが Emacs 22系なので、ちょっと新しくないかなぁ。。。

今日では本家EmacsでもWindows版のバイナリを配布している。Windows特有のInstallerが使いたければ、EmacsW32から入手できる。

結構、安定して使える。かつ、アイコンが奇麗だ。。。

本家バイナリはネイティブのIMEのサポートが弱い気がする。。。と思ったら、有志によってIMEのinlineパッチも作成されいる。また、 VCSの新し目のタグに有用なパッチを当てたバイナリも「NTEmacs Build History 」から入手できる。

なので有り難く使わせてもらいます。
らくちんだ。

設定

NTEmacs内部ではWin32のA系の呼び出し(ファイルI/Oやプロセス生成など)が使われるっぽいので、 現在の言語環境でのコードページに合わせなければ、奇妙な文字化けが発生する。 つまり、ファイル名とコマンド引数(processのdecoding)のcodingは shift_jis/cp932 じゃないとまずい。

と思うのだが、誰か大層語ってくれる人が見当たらないので、本当のところはさっぱり分かりません。。。

なので、「Cygwin 1.7でUTF-8サポートされたぜ!いぇーい!今時は UTF-8 ですが何か?」とは、口が裂けても言えない。。。僕は恨めしくshift_jis/cp932で使いますよ。。。へたれですから。。。

上のサイトや他多数をちょっと参考にして、今現在の次のようにしている。今でもチマチマ書き換えているのでそのうちgithubで晒しとくかなぁ。。。

Homeディレクトリの指定

ホームディレクトリ指定を環境変数HOMEで与える必要があり、Cygwinでのホームディレクトリと同じにすると混乱せずに済む。

Cygwin 1.7と組み合わせる設定

03cygwin.el

IMEの設定 (04ime.el)
言語設定 (05lang.el)
VCS系の設定

cygwinのsubversionやgitを使う場合、ログメッセージが文字化けするので、ちょっと設定が必要。。。

、、、VC-xx.elの実装では、ログメッセージはコマンド引数で受け渡されるようになっている。 一時ファイル経由で無いとWindowsではバケバケになるのだが。。。そのうち直るのかなぁ

まとめ

あと大事な Font 設定ですね。。。次回で。

2010年5月1日

Cocoa Emacs 64bit版を作ってみる

最近、また Emacs にはまっている。

ここ数年は vi やら eclipse やら JeditX やら xcode やらを広く浅く使っていて、 いまいちスッキリしない感じで、まぁ年なのか諦めていた。 Snow Leopardにアップグレードを期に、 ちょっと設定等を手入れしてMacOSX/Windowsで使い出したらすこぶる手になじむ。。。

はて、なんでEmacsを使うのを忘れていたのかんなぁ。。。

そう、当時 Emacs 20か 21 (mule-2.3だったかもしれん、、、)だったかなぁ。 UTF8/Unicodeを使う為にはMule-UCSとかいうパッケージが必要で、 そいつを組み合わせると普通に使えるのだが、起動も動作ももっさりしていまいちだった。。。

今日のEmacsはサクッとUnicode系の一群のcoding-systemが使えて、それなりに軽快に動作する。

良い時代になったなぁ。。。

MacOSX 上の定番は CarbonEmacsで、 かなりしっかりメンテナンスされており、実に安定している。ただ、ベースにしてるのがEmacs22だったり、Carbonベースだったり、32bitバージョンだったり、本当に細かく気になる人が気になる程度。

ふと気づくと 本家 Emacs では既に 64bit Cocoa版が構築でき、かつ日常作業で問題ならないくらいは安定してるらしい(1,2)。また、フォントの等幅調節設定や日本語入力等のinline patchなどが入手が可能で、 ほぼ CarbonEmacs を置き換えて使えるレベルになっている(と思う)。

なので、Cocoa Emacs 64bit を構築してみる。

ソースを取ってくる

うん、一番の難関は Bazaar という分散VCSを使う事かもしれない。。。準オフィシャルなGitレポジトリがあるので、Gitに慣れてる場合はこっちを使うのが吉。僕は、へたれなので git の方を使った。

取り敢えず、 ローカルネットに emacs.git のミラーレポジトリを立てて、そのマシン上でフォークして個人用の共用レポジトリを作る。 その個人用レポジトリから作業マシンに複製を展開する。 また、継続的にupstreamを追っかけるため、ミラーレポジトリもリモートとして登録する。

% ssh server               # ローカルネットの server にログイン
% cd /git
% git clone --mirror git://repo.or.cz/emacs.git
% git clone --bare --reference emacs.git emacs.git emacs-my.git
...
% ssh client               # 作業マシンにログイン
% cd ~/work
% git clone git+ssh://server/git/emacs-my.git emacs
% cd emacs
% git remote add upstream git+ssh://server/git/emacs.git
% git fetch upstream

個人用レポジトリを挟んだのは、バックアップを意図してなんだが、、、git使いはそんな事はしないのかなぁ。。。分からんなぁ。。。

パッチをあてる

続いてMacEmacs JP から inline_patch を取って当てる。

% ssh client               # 作業マシンにログイン
% cd ~/work/emacs
% git checkout -b topic EMACS_PRETEST_23_1_96  # 次いでに topic ブランチも作っとく
% pathc -p0 < emacs-inline.patch 

構築する

あとは、configure/make で問題が無ければ nextstep/Emacs.app の場所で 64bit Cocoa Emacs が構築される。

% ssh client               # 作業マシンにログイン
% cd ~/work/emacs
% eval "$(PATH= /usr/libexec/path_helper -s)"  # PATHをクリーンにする
% ./configure --with-ns
% make install
% open nextstep/Emacs.app                      # Emacsの実行確認

なんともあっけなく構築できた。 ただ、僕は masterブランチの方にパッチを丁寧に当てた物(24.0.50とか)を使っている。すこぶる快適。

定期的追っかける

まぁ、忘れそうなので次いでに書いとく。

ミラーレポジトリは次のコマンドで更新する。

% ssh server               # server にログイン
% cd /git/emacs.git
% git fetch

そして、作業レポジトリで upstream を追っかけるには

% ssh client           # 作業マシンにログイン
% cd ~/work/emacs
% git fetch upstream
% git rebase upstream/master topic    # upstream 先端に rebase
% git push origin :topic              # topicブランチを削除し、
% git push origin topic:topic         # 新しくtopicブランチをプッシュ

いまいち Git の使い方に慣れない/分からないので、間違ってるかもしれん。。。

そういえば、github にも Emacsのミラーレポジトリが上がってるので、そのうち生えてくるかもしれん。。。

それにしても覚える事が次から次と現れて、知恵熱が出っぱなしだなぁ。。。

初期設定のemacs.elはまた次回。

追記 (2010/05/06)

フォント以外の設定は、殆ど定型文っぽいので以下の用に設定した。

フォントの設定は「Emacs23 の フォント設定」を参照

追記 (2010/05/12)

どうもポップアップダイアログが出たとき落ちる問題にはパッチが必要。

久しぶりの投稿

かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...