[#45922] Ruby の Readline から redraw-current-line を呼び出すことは可能でしょうか? — kohno kazuyuki <kkohno@...>
こんにちは
14 messages
2009/03/17
[#45923] Re: Ruby の Readline から redraw-current-line を呼び出すことは可能でしょうか?
— Takao Kouji <kouji@...7.net>
2009/03/17
高尾宏治です。
[#45925] Re: Ruby の Readline から redraw-current-line を呼び出すことは可能でしょうか?
— "Akinori MUSHA" <knu@...>
2009/03/17
At Tue, 17 Mar 2009 13:15:54 +0900,
[#45926] Re: Ruby のReadline から redraw-current-line を呼び出すことは可能でしょうか?
— kohno kazuyuki <kkohno@...>
2009/03/17
河野(jugyo)です
[#45927] Re: Ruby のReadline から redraw-current-line を呼び出すことは可能でしょうか?
— kohno kazuyuki <kkohno@...>
2009/03/17
河野(jugyo)です
[#45939] [ANN] nokogiri 1.2.3 リリース — Aaron Patterson <aaron@...>
こんいちは!アーロンです!
3 messages
2009/03/23
[#45945] 「Rubyリファレンスマニュアル刷新計画」2009-03分のスナップショットリリース — okkez <okkez000@...>
「Rubyリファレンスマニュアル刷新計画」メンバーの okkez です。
6 messages
2009/03/29
[ruby-list:45926] Re: Ruby のReadline から redraw-current-line を呼び出すことは可能でしょうか?
From:
kohno kazuyuki <kkohno@...>
Date:
2009-03-17 11:17:36 UTC
List:
ruby-list #45926
河野(jugyo)です
> とりあえずUnix系OSとRuby 1.8系を仮定すると以下で動くと思います。
> FreeBSD, Mac OS X, Linuxでは行けましたが、libeditしかない環境や
> 他のOSではわかりません。DL2 (ruby 1.9)では動きません。
おおお!!
まさに求めていた答えかもしれません!
試してみます!
# jugyo.org@gmail.com
# http://jugyo.org/
# http://github.com/jugyo
2009/3/17 Akinori MUSHA <knu@idaemons.org>:
> At Tue, 17 Mar 2009 13:15:54 +0900,
> Takao Kouji wrote:
>> On 2009/03/17, at 12:08, kohno kazuyuki wrote:
>> > GNU Readline には「redraw-current-line」という機能があって、これを呼び出すとカレント行を再表示させることができます。
>> > この機能を Ruby の Readline から呼び出すことは可能でしょうか?
>>
>> RubyのReadlineではできないと思います。
>
> GNU Readline のソースを見ると redraw-current-line の実体は
> rl_refresh_line() のようなので、メソッドを追加してあげるのはどう
> でしょうか。
>
> 何を追加して何を追加しないというポリシーの問題かもしれませんが。
>
>> > もしくは「redraw-current-line」と同じような機能を Ruby 側で頑張って実装することは可能でしょうか?
>>
>> これはRuby 1.8.7のようにリリース済みのRubyを使って、
>> 「redraw-current-line」を実装できないかというご質問ですよね。
>> その方法はわかりませんね。
>
> とりあえずUnix系OSとRuby 1.8系を仮定すると以下で動くと思います。
> FreeBSD, Mac OS X, Linuxでは行けましたが、libeditしかない環境や
> 他のOSではわかりません。DL2 (ruby 1.9)では動きません。
>
> require 'readline'
> require 'dl/import'
>
> module Readline
> module LIBREADLINE
> extend DL::Importable
> dlload 'libreadline.so' # Mac OS Xは .dylib
> extern 'int rl_refresh_line(int, int)'
> end
>
> def self.refresh_line
> LIBREADLINE.rl_refresh_line(0, 0)
> end
> end
>
> # 以下テスト
>
> Thread.start {
> STDOUT.sync = 1
> print 'aaa'
> sleep 1
> print 'bbb'
> sleep 1
> print 'ccc'
> Readline.refresh_line
> }
>
> while buf = Readline.readline('> ', true)
> puts '=> ' + buf
> end
>
>
> --
> Akinori MUSHA / http://akinori.org/
>