Cygwin上のMeadowでRubyを便利に使う
前日の日記で試したVim/RubyでvimのRubyインターフェースが有効にできなかったので(./configure実行途中でメモリ食い尽くして止まる…Cygwinのエラーなのかもしれない)、vimを使うのをあきらめてMeadowを使ってみる。
参考1
Meadowのインストール:
Meadow/Emacs memo: 設定済み Meadow を使ってみよう
Emacs (Meadow) のインストールと使い方 - アルゴリズムとデータ構造入門
インストールしたら、Cygwin上のbashからMeadowを簡単に起動できるようにMeadow.exeへのパスを通しておく。
~/.bashrc(c:\cygwin\home\{user名}\.bashrc)に以下を追加する。
PATH=/cygdrive/c/meadow/bin:$PATH export PATH
追記(2007年7月10日)
aspellをMeadow内で使いたいときに
$ LANG=C Meadow.exe
としなければならないのはめんどくさいので、PATHを通すのをやめてシェルスクリプトから起動するようにした。/usr/local/bin/に「meadow」という名前でシェルスクリプトを作る。
meadow
#!/bin/sh LANG=C exec /cygdrive/c/meadow/bin/Meadow "$@"
~/.bashrcで通したパス(PATH=/cygdrive/c/meadow/bin:$PATH)は/usr/local/bin/より先に/cygdrive/c/meadow/binのパスを通していて邪魔なので削除しておく。(削除しないとスクリプトからではなく、/cygdrive/c/meadow/bin/以下のmeadowが直接起動されてしまう。)
以上
手順
1.目的のファイルが置いてあるディレクトリに移動する。(例: /usr/src/ruby-1.8.6-1/misc)
「/usr/src/」の中に「ruby-xxx」というディレクトリが見つからなければ、setup.exeでソースをダウンロードする。(CategoryではInterpretersの中に含まれる)
2.関連ファイルをコピー
例:
$ cp inf-ruby.el rubydb2x.el rubydb3x.el ruby-mode.el /cygdrive/c/meadow/lisp/
(各ファイルの簡単な概要は「.../ruby-xxx/misc/README」を参照。拡張子の「.el」は「Emacs Lisp」のファイルであることを表すらしい。)
コピー先として、「/cygdrive/c/meadow/lisp/」の代わりに「/usr/share/emacs/site-lisp/ruby-mode/」を指定したらなぜか認識してくれなかった。(←追記:当たり前だった…。自分の使ってるのはMeadowであってEmacsじゃない。)デフォルトのロードパスに「/usr/share/emacs/site-lisp/ruby-mode/」が入っていなかったからかも知れない(未確認)。
参考2
ロードパスとは?:Meadow/Emacs memo: Meadow 関連の少し高度な知識
Rubyモード(ruby-mode.el)を使う:Meadow/Emacs memo: プログラム関連 ― 各言語用
3.「~/.emacs」に以下の設定を追加する
(autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files") (setq auto-mode-alist (append '(("\\.rb$" . ruby-mode)) auto-mode-alist)) (setq interpreter-mode-alist (append '(("ruby" .ruby-mode)) interpreter-mode-alist)) (autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process") (autoload 'inf-ruby-keys "inf-ruby" "set local key defs for inf-ruby in ruby-mode") (add-hock 'ruby-mode-hook '(lambda () (inf-ruby-keys) ))
以上で、拡張子が「.rb」のファイルをRubyのファイルと認識してくれるはず。
meadowを立ち上げて、モードラインの真ん中辺りに「(Ruby)」と出たらruby-modeが正常に動作している。
-S(Unix)-- hello.rb(Ruby) All L2 (Ruby)------------