2005年07月07日

Carbon Emacs on Mac OS X

carbon_emacs.png

史上最強のエディタとも言われる「Emacs」.
銭谷さんのパッケージは秀逸だがG3 iBookではきついので,軽いバイナリを作った.

・Emacs CVS 20050704(22.0.50.1)版
・Inline patch 20041229版 inline_patch-20041229.tar.gz
・吉武さんの透明化パッチ transparency-2.1.0.tar.gz
・Mule-UCS CVS 20050704版
・carbon-font.el
・mac-utf.el
・Quartz 2Dアンチエイリアシング
・日本語入力文字化け対策 (参照[lists.sourceforge.jp])

Pantherでしか動作確認をしていないので,別の環境では動作しないかもしれません.


手順を以下に備忘する.

-------Carbon Emacs Instructions to Compile-------


/* cvs */
$ emacs ~/.cshrc
  setenv CVS_RSH ssh
$ cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/emacs co emacs


/* patch
  1) inline-patchは,エラーでrejectされるので,*rejファイルに基づき一部手動
*/
$ cd emacs
$ patch -s -p0 < ../inline_patch-20041229/emacs-inline-patch
$ patch -s -p0 < ../transparency2/transparency2.patch
$ emacs src/puresize.h
  SITELOAD_PURESIZE_EXTRA 60000

/* DoIt
  1) OptimizationはG3用.-O3ではコンパイルが通らないこともある.
  2) "make" "make bootstrap" は要時間 & 要ディスク空き容量.
*/
$ ./configure CFLAGS="-O3 -mcpu=750 -pipe -mpowerpc-gfxopt" --with-carbon --without-x |& tee mylog_carbon_configure
$ make bootstrap |& tee mylog_carbon_make
// X11版を作る場合
// $ ./configure CFLAGS="-O3 -mcpu=750 -pipe -mpowerpc-gfxopt" --without-carbon --with-x |& tee mylog_x_configure
// $ make |& tee mylog_x_make
# make install |& tee mylog_install


/* mule-ucs
  1) set-buffer-file-coding-systemをセットしないと,txtファイルがutf-16になる
*/
$ cvs -d:pserver:anonymous@cvs.meadowy.org:/cvsroot login
$ cvs -d:pserver:anonymous@cvs.meadowy.org:/cvsroot co mule-ucs
$ emacs -q --no-site-file -batch -l mucs-comp.el
$ emacs ~/.cshrc
  (utf-translate-cjk-mode 1)
  (require 'un-define)
  (set-language-environment "Japanese" )
  (set-default-coding-systems 'euc-jp-unix)
  (set-buffer-file-coding-system 'euc-jp-unix)
  (set-terminal-coding-system 'utf-8)
  (set-keyboard-coding-system 'sjis-mac)
  (set-clipboard-coding-system 'sjis-mac)
  (set-file-name-coding-system 'utf-8)


/* lisp */
・carbon-font.el


/* 入力文字が文字化けする場合
cf. http://lists.sourceforge.jp/mailman/archives/macemacsjp-users/2005-June/000452.html
*/
$ emacs ~/.emacs
  (add-hook 'mac-im-update-active-input-text-hook
    (lambda (str fix &rest text-properties)
      (if (not (coding-system-equal
        'sjis-mac (keyboard-coding-system)))
          (set-keyboard-coding-system 'sjis-mac)))
        t)

------------------------------------------------------------------------
site-init.elをlispディレクトリに格納した配布版を作成する場合の注意点.
1) site-init.elは通らないので,site-start.elで回避. (サンプル:site-start.el)
2) mac-utf.elは"lisp"ディレクトリではなく,"lisp/mule-ucs"ディレクトリに格納する.
  (mac-utf.elからun-define.elを読み込んでおり,コンパイル時発見できない.)
3) "lisp/Makefile"の
   $(emacs) -f batch-byte-compile-if-not-done $$el || exit 1; ?
  の箇所を3カ所,以下にreplace-string.
   $(emacs) -f batch-byte-compile-if-not-done $$el ?
5) Tiger上でコンパイルするときは,CPPFLAGS="-DOLDROUTINENAMES"をconfigureの引数に含める.
6) こんな遠回りをしなくても,MacEmacsJPからパッケージをダウンロードして,
  $ make src ucs-src _mule-ucs compile dmg
 をすれば,inlineは付与しないものの同じような物が出来るはず.
(追記 2005-07-24)
7) site-start.elも起動時に読み込まれないので,.emacs.elに 1)の内容を記述し,lispファイルもパスを通すこと.

Cf.
・http://macemacsjp.sourceforge.jp/index?MacEmacsInstall#content_1_2
・http://sakito.s2.xrea.com/detail/emacs/emacs21.html#doc1_91
・http://pc7.2ch.net/test/read.cgi/mac/1090151474/755-855
・http://books.ki.nu/rakuraku/inline-update.html
・http://tdiary.flowernet.gr.jp/jado/?date=20050423
・http://lists.sourceforge.jp/mailman/archives/macemacsjp-users/
(Optimization)
・http://www5f.biglobe.ne.jp/~nekocan/group_lab/folder_advance/ht_advmame4.html
・http://www.freehackers.org/gentoo/gccflags/flag_gcc3.html

投稿者 kazumichi at 19:30: [Macintosh]

トラックバック
このエントリーのトラックバックURL
http://www.kazumichi.org/b/mt-tb.cgi/183


コメント

この設定では、carbon-font や mule-ucs が
有効になってないように見えます。
そのあたりは確認されましたか?

Posted by: z11i : 2005年07月23日 18:56

z11i様

仰るとおりで,ここには書いていませんが,.emacs.elで直に読み込んでいます.
site-init.elを使用してバイナリを配布しようと,MacEmacsJPのMakefileを眺めたり調査しているうちに,結局解らず放置していました.
誤解を与える記述を修正しました.
ご指摘ありがとうございます.

Posted by: kazumichi@管理人 : 2005年07月24日 12:50
コメントする









名前、アドレスを登録しますか?
Do you want to register your name and E-mail Address?





以下のボックスに左の数字を入力して下さい.
(Please enter the characters into the below textarea.)