牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Emacs で run-ruby して irbを立ち上げて日本語入力するとエラーになる場合の対処メモ

(Emacs24.2, Ruby1.9.3, MacOSX10.7)

問題

Terminalでは正常動作

$ irb
irb(main):001:0> RUBY_VERSION
=> "1.9.3"
irb(main):002:0>  Encoding.default_external
=> #<Encoding:UTF-8>
irb(main):003:0> a = "あ"
=> "あ"
irb(main):004:0> 

Emacs の run-rubyirb 立ち上げて変数に日本語いれるとエラー

irb(main):001:0> a = ""
SyntaxError: (irb):1: invalid multibyte char (US-ASCII)
(irb):1: invalid multibyte char (US-ASCII)
	from /Users/username/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>'
irb(main):002:0> Encoding.default_external
#<Encoding:US-ASCII>

エンコーディングがUS-ASCII になってる

調査

inf-ruby.el のコードを見てみる

:
(defvar inf-ruby-implementations
  '(("ruby"     . "irb --inf-ruby-mode -r irb/completion")
    ("jruby"    . "jruby -S irb -r irb/completion")
    ("rubinius" . "rbx -r irb/completion")
    ("yarv"     . "irb1.9 --inf-ruby-mode -r irb/completion")) ;; TODO: ironruby?
  "An alist of ruby implementations to irb executable names.")
:

この辺が怪しい気がする

init.el

(setq inf-ruby-implementations
      '(("ruby" . "irb --inf-ruby-mode -r irb/completion -U")))
run-ruby
irb(main):001:0> a = ""
""
irb(main):002:0> 

直った

他の問題:rinari の rinari-console で変数に日本語を入れたりすると消える

rails のプロジェクトある階層で M-x rinari-console

irb(main):001:0> a = ""
=> ""
irb(main):002:0> Encoding.default_external
=> #<Encoding:UTF-8>
irb(main):003:0> "".encoding
=> #<Encoding:US-ASCII>

へるぷみー