ruby-changes:67334
From: aycabta <ko1@a...>
Date: Sun, 29 Aug 2021 20:31:19 +0900 (JST)
Subject: [ruby-changes:67334] 78f46e6576 (master): [ruby/reline] Show method or class doc correctly
https://git.ruby-lang.org/ruby.git/commit/?id=78f46e6576 From 78f46e65767563f0ec0dc6564901dcd7e99dc044 Mon Sep 17 00:00:00 2001 From: aycabta <aycabta@g...> Date: Sat, 28 Aug 2021 01:53:43 +0900 Subject: [ruby/reline] Show method or class doc correctly https://github.com/ruby/reline/commit/a505294f12 --- lib/reline.rb | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/reline.rb b/lib/reline.rb index ddc4a06..fea0498 100644 --- a/lib/reline.rb +++ b/lib/reline.rb @@ -222,16 +222,31 @@ module Reline https://github.com/ruby/ruby/blob/trunk/lib/reline.rb#L222 cursor_pos_to_render, result, pointer = context.pop(3) return nil if result.nil? or pointer.nil? name = result[pointer] + driver = RDoc::RI::Driver.new - doc = RDoc::Markup::Document.new - begin - driver.add_method(doc, name) - rescue RDoc::RI::Driver::NotFoundError => e - return nil + name = driver.expand_name name + doc = nil + used_for_class = false + if not name =~ /#|\./ + found, klasses, includes, extends = driver.classes_and_includes_and_extends_for(name) + if not found.empty? + doc = driver.class_document name, found, klasses, includes, extends + used_for_class = true + end end + unless used_for_class + doc = RDoc::Markup::Document.new + begin + driver.add_method(doc, name) + rescue RDoc::RI::Driver::NotFoundError + doc = nil + end + end + return nil if doc.nil? formatter = RDoc::Markup::ToBs.new formatter.width = 40 str = doc.accept(formatter) + [Reline::CursorPos.new(cursor_pos_to_render.x + 40, cursor_pos_to_render.y + pointer), str.split("\n"), nil] } -- cgit v1.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/