Bug #3167

RDoc issues in interactive mode

Added by Benoit Daloze over 5 years ago. Updated over 4 years ago.

[ruby-core:29601]
Status:Closed
Priority:Normal
Assignee:Eric Hodel
ruby -v:- Backport:

Description

=begin
Recently, rdoc has changed a lot the interface.
While there is a lot of improvement, I'd like to report these issues:

1) completion with methods does not work when in interactive mode and typed a class (you need to type again the class or type it yourself(so no completion))

ri -i
String
[description of String]
gsu => no completion
but String#gsu works
That's a small matter, I agree.

2) methods should be a comma separated list in interactive mode
because the current output is very long and verbose and make you scroll a lot to see the class description
The separation of the methods depending from which 'gem' it comes is really useful and should be kept.

3) when you happen to type something bad (like 'Array[' or 'Array#['), it crash (understandable) but it also freeze my terminal.
ctrl+c get a new prompt, but I am unable to type.
If you type entirely, it works nicely: 'Array<#|.>[]' for the instance method, 'Array::[]' for the class.
(Shouldn't '.' try to resolve first to class methods, because :: is longer, and not working so good currently?)

4) completion of :: seem to not work in some cases like File::open and even 'File.<*>'

Regards,
B.D.
=end

History

#1 Updated by Yusuke Endoh over 5 years ago

=begin
Hi, Eric Hodel

Could you take a look at this ticket?

Benoit Daloze,

I have never used ri interactive mode, so I cannot determine whether
each issue you said is compatibility problem or new feature request.

They are all compatibility problems, right? IOW, did the recent
change break the behavior you had expected?

--
Yusuke Endoh mame@tsg.ne.jp
=end

#2 Updated by Benoit Daloze over 5 years ago

=begin
Hi,
On 11 May 2010 14:52, Yusuke Endoh redmine@ruby-lang.org wrote:

Hi, Eric Hodel

Could you take a look at this ticket?

Benoit Daloze,

I have never used ri interactive mode, so I cannot determine whether
each issue you said is compatibility problem or new feature request.

They are all compatibility problems, right?  IOW, did the recent
change break the behavior you had expected?

Yusuke Endoh mame@tsg.ne.jp

Eric Hodel knows about these bugs, I spoke of it with him.

They are compatibility problems,
because it behaved better about these few problems before.

But, I think it is clearly not an emergency,
and globally, ri (in interactive mode or not) has been improved.

So target could probably be changed to 1.9.x

Regards,
B.D.

=end

#3 Updated by Benoit Daloze over 5 years ago

=begin
Hi,
On 11 May 2010 14:52, Yusuke Endoh redmine@ruby-lang.org wrote:

Hi, Eric Hodel

Could you take a look at this ticket?

Benoit Daloze,

I have never used ri interactive mode, so I cannot determine whether
each issue you said is compatibility problem or new feature request.

They are all compatibility problems, right? IOW, did the recent
change break the behavior you had expected?

Yusuke Endoh mame@tsg.ne.jp

Eric Hodel knows about these bugs, I spoke of it with him.

They are compatibility problems,
because it behaved better about these few problems before.

But, I think it is clearly not an emergency,
and globally, ri (in interactive mode or not) has been improved.

So target could probably be changed to 1.9.x

Regards,
B.D.

=end

#4 Updated by Benoit Daloze over 5 years ago

=begin
Hi,
On 11 May 2010 14:52, Yusuke Endoh redmine@ruby-lang.org wrote:

Hi, Eric Hodel

Could you take a look at this ticket?

Benoit Daloze,

I have never used ri interactive mode, so I cannot determine whether
each issue you said is compatibility problem or new feature request.

They are all compatibility problems, right?  IOW, did the recent
change break the behavior you had expected?

Yusuke Endoh mame@tsg.ne.jp

Eric Hodel knows about these bugs, I spoke of it with him.

They are compatibility problems,
because it behaved better about these few problems before.

But, I think it is clearly not an emergency,
and globally, ri (in interactive mode or not) has been improved.

So target could probably be changed to 1.9.x

Regards,
B.D.

=end

#5 Updated by Yusuke Endoh over 5 years ago

  • Target version changed from 1.9.2 to 2.0.0

=begin
Hi,

2010/5/12 Benoit Daloze eregontp@gmail.com:

Eric Hodel knows about these bugs, I spoke of it with him.

They are compatibility problems,
because it behaved better about these few problems before.

But, I think it is clearly not an emergency,
and globally, ri (in interactive mode or not) has been improved.

So target could probably be changed to 1.9.x

Thank you for letting me know. I change the target.

--
Yusuke Endoh mame@tsg.ne.jp
=end

#6 Updated by Shyouhei Urabe almost 5 years ago

  • Status changed from Open to Assigned

=begin

=end

#7 Updated by Eric Hodel over 4 years ago

I don't think I can fix 2) as it's performed by Readline

3) is fixed in rdoc trunk

#8 Updated by Eric Hodel over 4 years ago

  • Status changed from Assigned to Closed

4) is fixed in RDoc trunk

I don't think I wish to implement 1) at this time, it would involve building a very large and complex object graph

#9 Updated by Benoit Daloze over 4 years ago

Eric Hodel wrote:

I don't think I can fix 2) as it's performed by Readline

I believed it is not related to Readline, I probably did not make myself clear.

2) methods should be a comma separated list in interactive mode
because the current output is very long and verbose and make you scroll a lot to see the class description
The separation of the methods depending from which 'gem' it comes is really useful and should be kept.

When you type 'String' in ri -i, you get the class description, then a very long list of methods, because they are displayed one by line. I remember they were displayed as a comma separated list.

I did begin to write about this, here is the idea of it:

diff --git a/lib/rdoc/ri/driver.rb b/lib/rdoc/ri/driver.rb
@@ -456,9 +456,7 @@
out << RDoc::Markup::Heading.new(1, "#{name}:")
out << RDoc::Markup::BlankLine.new

  • out.push(*methods.map do |method|
  • RDoc::Markup::Verbatim.new method
  • end)
  • out << RDoc::Markup::Paragraph.new(methods.join(', '))

I used a custom IndentedParagraph class, instead of simple Paragraph, to get 2 spaces of indentation.
I think this is worth to change.

From what I wrote, the second part was about separating methods by their origin (which gem,stdlib,core).
That is probably not necessary anymore, as the origin is shown when you ask the method documentation.

3) is fixed in rdoc trunk
4) is fixed in RDoc trunk

Neat !

I don't think I wish to implement 1) at this time, it would involve building a very large and complex object graph

Indeed, this is probably not a good idea, although it could be useful.

#10 Updated by Eric Hodel over 4 years ago

  • ruby -v changed from ruby 1.9.2dev (2010-01-14 trunk 26319) [x86_64-darwin10.3.0] to -

On May 18, 2011, at 7:56 AM, Benoit Daloze wrote:

I don't think I can fix 2) as it's performed by Readline

I believed it is not related to Readline, I probably did not make myself clear.

I thought you meant the method list shown when you attempt to complete a method definition by hitting at the Readline prompt.

2) methods should be a comma separated list in interactive mode
because the current output is very long and verbose and make you scroll a lot to see the class description
The separation of the methods depending from which 'gem' it comes is really useful and should be kept.

When you type 'String' in ri -i, you get the class description, then a very long list of methods, because they are displayed one by line. I remember they were displayed as a comma separated list.

I did begin to write about this, here is the idea of it:

diff --git a/lib/rdoc/ri/driver.rb b/lib/rdoc/ri/driver.rb
@@ -456,9 +456,7 @@
out << RDoc::Markup::Heading.new(1, "#{name}:")
out << RDoc::Markup::BlankLine.new

  • out.push(*methods.map do |method|
  • RDoc::Markup::Verbatim.new method
  • end)
  • out << RDoc::Markup::Paragraph.new(methods.join(', '))

Ah, ok!

How about a comma-separated output when given to a user ($stdout is a TTY or rdoc is sending output to a pager) and a newline-separated list when output is not given to a user (rdoc blah | grep)?

#11 Updated by Benoit Daloze over 4 years ago

On 18 May 2011 22:42, Eric Hodel drbrain@segment7.net wrote:

Ah, ok!

How about a comma-separated output when given to a user ($stdout is a TTY or rdoc is sending output to a pager) and a newline-separated list when output is not given to a user (rdoc blah | grep)?

Sure, that's the best.
And it obviously better fits the unix philosophy.

Sorry to answer late.

Also available in: Atom PDF