ひがきの日記

2012-07-08

Emacs から rbenv を使う

gist を表示する練習を兼ねて、Emacs で rbenv を使う elisp を作ってみた。

ググってみると exec-path を設定する話がやたら出てくるけど、rbenv でインストールした複数の ruby を切り替えて使う例が出てこない。

以下のように環境変数に使いたい ruby のバージョンを指定すれば切り替えられる。

(setenv "RBENV_VERSION" "1.9.3-p194")

指定した rubyrcodetools などで使えるようになっている。

RUBY_DESCRIPTION # => "ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin10.8.0]"

でも、いちいち環境変数設定するのが面倒すぎる。

(require rbenv) して、M-x rbenv すると、メッセージバッファインストールした ruby を選択できる。

以下のように補完もできる。

Click <mouse-2> on a completion to select it.
In this buffer, type RET to select the completion near point.

Possible completions are:
1.8.7-p370 	1.9.3-p125
1.9.3-p194 	jruby-1.6.7.2
rbx-1.2.4

j TAB で jruby-1.6.7.2 を選択してみた。

RUBY_DESCRIPTION # => "jruby 1.6.7.2 (ruby-1.8.7-p357) (2012-05-01 26e08ba) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_33) [darwin-x86_64-java]"

xmp すると、ちゃんと切り替わったことが確認できる。

いろいろ言いたいこともあるだろうが、自分にとってはこれで充分。

2011-04-10

るびきちさんを囲む会

るびきちさんが関西にいらっしゃるというので kansai-emacs #x03 開催が決まったようだ。

勉強会については他の人にお任せするとして、午後からの勉強会に先立って午前中に行われた会合についてレポートしてみる。

朝 9:30 になんばマルイ前でるびきちさんと待ち合わせ。
普段はリア充がイチャつく待ち合わせスポット。
まさかこの場所で待ち合わせすることになるとは。*1

集まると早速 Emacs を起動する人たち。

街中でも Emacs!

その後は観光 …… のはずが、時間が早くてお店も開いてない。
午後からは京都勉強会なので遠くへ行くこともできず。*2

人気のない心斎橋をブラブラして終了。

るびきちさんはスケジュールの都合で京都には行けないらしい。残念。
次の機会にはぜひ勉強会にも参加していただきたい。*3

関西Emacs勉強会だというのに空気を読まずに Ruby の本ばかり持参してサインをいただいた!

るびきちさんの Ruby本といえばコレ!

Ruby逆引きハンドブック

Ruby逆引きハンドブック

なつかしの 256本

Rubyを256倍使うための本 魔道編

Rubyを256倍使うための本 魔道編

ちゃんと Emacs の本もありますよ (違)

Rubyシェルプログラミング

Rubyシェルプログラミング

すみません。Emacs テクニックバイブル 持ってこなくて すみません。

*1:朝早いこともあってリア充はいなかった。

*2:結局遅刻しました。すみません。

*3Ruby関西にも来ていただきたいものです!

2011-03-24

Emacs に必ずインストールするアプリ

MacBook Pro を買ったので Emacsインストールしなおした。

Emacs の設定に関することは、ググるよりも WEB+DB PRESS Vol.58 を見た方が早い。必要なことが、ほとんどまとまっている。

随時追記予定。

MacPorts の Emacs を指定してコンパイル。

インストール先は

アプリケーション
~/.emacs.d/lisp
設定
~/.emacs.d/conf
info
~/.emacs.d/info
その他
~/.emacs.d/etc

apel

各種 Emacs の違いを吸収するライブラリ。
SKK を使うのに必要だから。

$ emacs=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
$ elisp=~/.emacs.d/lisp
$ make EMACS=$emacs
$ make what-where EMACS=$emacs LISPDIR=$elisp VERSION_SPECIFIC_LISPDIR=$elisp
        # インストール先を確認
$ make install EMACS=$emacs LISPDIR=$elisp VERSION_SPECIFIC_LISPDIR=$elisp

SKK

Emacs Lisp で実装された日本語入力プログラム。
これがないと文章書けない。

(setq LISPDIR (expand-file-name (concat user-emacs-directory "lisp")))
(setq VERSION_SPECIFIC_LISPDIR
      (expand-file-name (concat user-emacs-directory "lisp")))
(setq SKK_DATA (concat user-emacs-directory "etc"))
(setq SKK_INFODIR (concat user-emacs-directory "info"))

上記の通り SKK-CFG にインストール先を設定する。

$ emacs=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
$ make EMACS=$emacs
$ make what-where EMACS=$emacs
        # インストール先を確認
$ make install EMACS=$emacs

C/Migemo

ローマ字のまま日本語をインクリメンタル検索するためのツール。

元々は Ruby で実装されたツールだが、Ruby 環境に依存したくなかったので、C での実装を選んだ。

--- wordbuf.c.org	2011-02-27 19:45:40.000000000 +0900
+++ wordbuf.c	2011-03-20 16:09:37.000000000 +0900
@@ -9,6 +9,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
 #include "wordbuf.h"
 
 #define WORDLEN_DEF 64

途中 make に失敗したのでヘッダファイルを追加した。

$ ./configure
$ (cd src; patch wordbuf.c <wordbuf.patch)
$ cp -i ~/Library/Application\ Support/AquaSKK/SKK-JISYO.L dict
$ make osx
$ make osx-dict
$ (cd dict; make utf-8)
$ sudo make osx-install

http://gist.github.com/457761 をダウンロード。
migemo.el というファイル名で ~/.emacs.d/lisp/ にコピーする。

rcodetools

Ruby スクリプトのための支援環境。
gem でインストールした後、rcodetools.el を ~/.emacs.d/ruby/lisp にコピーする。

Mew

Emacs Lisp で実装されたメールクライアント。
もう 10年以上使ってる。

mewl などのコマンドを ~/bin にインストールするか悩んだが、そのまま /usr/local/bin にインストールした。

$ emacs=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
$ elisp=~/.emacs.d/lisp
$ etc=~/.emacs.d/etc
$ info=~/.emacs.d/info
$ ./configure --with-emacs=$emacs --with-elispdir=$elisp/mew --with-etcdir=$etc --infodir=$info
$ make
$ make install-el
$ make install-etc
$ make install-jinfo
$ sudo make install-bin

Lookup

Emacs 上の辞書検索インターフェイス。

15年くらい前に買った辞書を今でも使ってる。

  • 広辞苑 第4版
  • 三省堂 スーパー英和・和英辞典
  • 研究者 新英和・和英中辞典

MacPorts でインストールしようとしたら emacsインストールしようとするので、自前でインストール*1

$ port deps lookup
Full Name: lookup @1.4-media-20110207_0
Build Dependencies:   texinfo
Library Dependencies: emacs, eblook

eblook だけでも MacPorts で入れられないかと思ったけど、もう更新されてないようだし (;_;) 全部自前で入れた。

ebeblook は、素直に configure && make install した。

$ emacs=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
$ elisp=~/.emacs.d/lisp
$ ./configure --with-emacs=$emacs --with-lispdir=$elisp/lookup --infodir=$info
$ make
$ make install

Session Management for Emacs

バッファのカーソル位置を覚えてくれて、次にそのファイルを開いたらカーソルをそこへ移動させてくれる。

kill-summary

キルリングの一覧から選択できるようになる。

*1:使ってるのは emacs-app

2010-03-21

第1回 関西Emacs勉強会

ポジションペーパーなるものが必要らしいので書いてみた。

自己紹介

Emacs 遍歴

  • μEmacs (OS-9)
  • Nemacs (SunOS)
  • Mule (SunOS)
  • Meadow (WindowsXP)
  • Carbon Emacs (Mac OS X)

Emacs で何をしているか

  • MFC・.NET プログラミング
  • Ruby プログラミング (rcodetools)
  • メール (Mew)
  • 辞書 (Lookup)
  • 日本語入力 (SKK)
  • 日本語インクリメンタルサーチ (Migemo)

Emacs について思うこと

  • Emacs はオヤジ向け?
  • 若者は Vim を使う。

行ってみると若者がたくさんいて、若者も Emacs を使うことが分かった。

次回はぜひ懇親会にも参加したい。

2009-07-30

xmp で Ruby 1.8 と 1.9 を切り替える

ある食事会で有名な Rubyist に質問された。

xmp を使うときに、Ruby 1.8 と 1.9 を切り替えられないか?

その時は答えられなかったけど、こんな感じでどうだろうか?

(require 'rcodetools)
(setq xmpfilter-command-name
      "xmpfilter -S ruby19 --dev --detect-rbtest")
(setq rct-complete-command-name
      "rct-complete -S ruby19 --dev --fork --detect-rbtest")

(defun xmp-1-8 ()
  (interactive)
  (let ((xmpfilter-command-name
	 "ruby -rubygems -S xmpfilter --dev --fork --detect-rbtest"))
    (xmp)))

(defun rct-complete-symbol-1-8 ()
  (interactive)
  (let ((rct-complete-command-name
	 "ruby -rubygems -S rct-complete --dev --fork --detect-rbtest"))
    (rct-complete-symbol)))

(add-hook 'ruby-mode-hook
	  (lambda ()
	    (define-key ruby-mode-map "\M-\C-i" 'rct-complete-symbol)
	    (define-key ruby-mode-map "\C-c\C-d" 'xmp)
	    (define-key ruby-mode-map "\M-8\C-i" 'rct-complete-symbol-1-8)
	    (define-key ruby-mode-map "\C-c8\C-d" 'xmp-1-8)))

キーバインドはなんとも頂けないが ...

RUBY_VERSION                    # =>

この状態で C-c C-d すると、

RUBY_VERSION                    # => "1.9.1"

C-c 8 C-d すると、

RUBY_VERSION                    # => "1.8.7"

だめかな?