irb 1.3.8.pre.4 → 1.3.8.pre.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1373231cc70b1b86ba8a0fc990fb45c4d2790914f27c1055ccf034e555aea55c
4
- data.tar.gz: 7451c4a722684f4d265d9fc7dc408b765dba980fb169a0f72a9aa469df1ce9ed
3
+ metadata.gz: 7ed4a45cab62de9a8ac9717098e2d0bc128de0a655108ebf750a955766a21090
4
+ data.tar.gz: c81a0bd1f1b05d40d3497920658abb9dae24ddceb6b41afac425eb426f43ef34
5
5
  SHA512:
6
- metadata.gz: 766139b77dd400d4df26e471587f82b8e37c98aa75ef8701cb0c89a4b81c081ece91bc8fcb7bc9a1ad6ced8d1d249ed688089878824b90383f3a07cf09aa12cc
7
- data.tar.gz: eb003c7fcf1f5801f6da77f8535122d4f881d2f85abd0ee7c226f937ab84b3a24a8a8f21864696dfdcbe3d29d491b444a3cb67524192d3202e747f63bf6652f8
6
+ metadata.gz: 31a8eca68eec86d0f056824f30b0e788c64ca381cb79ee503c0bdd3bd44cc9a0502ce2d00a3dabc53d45b861243fd592293928cca05ae1919ccf89bcc8e4110b
7
+ data.tar.gz: a03bc92766aeb696c03d6a33113564f2649799323b1eceb6526d4abf32b0c38921aba3c1876a51c84533b3e98a2d19729354208760275f80e7169e21d651bcd1
data/irb.gemspec CHANGED
@@ -36,5 +36,5 @@ Gem::Specification.new do |spec|
36
36
 
37
37
  spec.required_ruby_version = Gem::Requirement.new(">= 2.5")
38
38
 
39
- spec.add_dependency "reline", ">= 0.2.8.pre.4"
39
+ spec.add_dependency "reline", ">= 0.2.8.pre.8"
40
40
  end
data/lib/irb/cmd/help.rb CHANGED
@@ -17,7 +17,8 @@ module IRB
17
17
  class Help < Nop
18
18
  def execute(*names)
19
19
  require 'rdoc/ri/driver'
20
- IRB::ExtendCommand::Help.const_set(:Ri, RDoc::RI::Driver.new)
20
+ opts = RDoc::RI::Driver.process_args([])
21
+ IRB::ExtendCommand::Help.const_set(:Ri, RDoc::RI::Driver.new(opts))
21
22
  rescue LoadError, SystemExit
22
23
  IRB::ExtendCommand::Help.remove_method(:execute)
23
24
  # raise NoMethodError in ensure
@@ -296,7 +296,8 @@ module IRB
296
296
  candidates.uniq!
297
297
  end
298
298
  if doc_namespace
299
- "#{rec.class.name}#{sep}#{candidates.find{ |i| i == message }}"
299
+ rec_class = rec.is_a?(Module) ? rec : rec.class
300
+ "#{rec_class.name}#{sep}#{candidates.find{ |i| i == message }}"
300
301
  else
301
302
  select_message(receiver, message, candidates, sep)
302
303
  end
@@ -315,12 +316,19 @@ module IRB
315
316
  end
316
317
 
317
318
  else
318
- candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
319
- candidates |= ReservedWords
320
-
321
319
  if doc_namespace
322
- candidates.find{ |i| i == input }
320
+ vars = eval("local_variables | instance_variables", bind).collect{|m| m.to_s}
321
+ perfect_match_var = vars.find{|m| m.to_s == input}
322
+ if perfect_match_var
323
+ eval("#{perfect_match_var}.class.name", bind)
324
+ else
325
+ candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
326
+ candidates |= ReservedWords
327
+ candidates.find{ |i| i == input }
328
+ end
323
329
  else
330
+ candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
331
+ candidates |= ReservedWords
324
332
  candidates.grep(/^#{Regexp.quote(input)}/)
325
333
  end
326
334
  end
@@ -314,20 +314,34 @@ module IRB
314
314
  end
315
315
 
316
316
  SHOW_DOC_DIALOG = ->() {
317
+ dialog.trap_key = nil
318
+ alt_d = [
319
+ [Reline::Key.new(nil, 0xE4, true)], # Normal Alt+d.
320
+ [195, 164] # The "ä" that appears when Alt+d is pressed on xterm.
321
+ ]
317
322
  begin
318
323
  require 'rdoc'
319
324
  rescue LoadError
320
325
  return nil
321
326
  end
327
+
322
328
  if just_cursor_moving and completion_journey_data.nil?
323
329
  return nil
324
330
  end
325
- cursor_pos_to_render, result, pointer, dialog = context.pop(4)
331
+ cursor_pos_to_render, result, pointer, autocomplete_dialog = context.pop(4)
326
332
  return nil if result.nil? or pointer.nil? or pointer < 0
327
333
  name = result[pointer]
328
334
  name = IRB::InputCompletor.retrieve_completion_data(name, doc_namespace: true)
329
335
 
330
336
  driver = RDoc::RI::Driver.new
337
+
338
+ if key.match?(dialog.name)
339
+ begin
340
+ driver.display_names([name])
341
+ rescue RDoc::RI::Driver::NotFoundError
342
+ end
343
+ end
344
+
331
345
  begin
332
346
  name = driver.expand_name(name)
333
347
  rescue RDoc::RI::Driver::NotFoundError
@@ -355,13 +369,17 @@ module IRB
355
369
  end
356
370
  end
357
371
  return nil if doc.nil?
372
+ width = 40
358
373
  formatter = RDoc::Markup::ToAnsi.new
359
- formatter.width = 40
360
- str = doc.accept(formatter)
361
-
362
- x = cursor_pos_to_render.x + 40
363
- y = cursor_pos_to_render.y + pointer - dialog.scroll_top
364
- DialogRenderInfo.new(pos: Reline::CursorPos.new(x, y), contents: str.split("\n"), bg_color: '49')
374
+ formatter.width = width
375
+ dialog.trap_key = alt_d
376
+ message = 'Press Alt+d to read the full document'
377
+ contents = [message] + doc.accept(formatter).split("\n")
378
+
379
+ x = cursor_pos_to_render.x + autocomplete_dialog.width
380
+ x = autocomplete_dialog.column - width if x + width >= screen_width
381
+ y = cursor_pos_to_render.y
382
+ DialogRenderInfo.new(pos: Reline::CursorPos.new(x, y), contents: contents, width: width, bg_color: '49')
365
383
  }
366
384
 
367
385
  # Reads the next line from this input method.
data/lib/irb/version.rb CHANGED
@@ -11,7 +11,7 @@
11
11
  #
12
12
 
13
13
  module IRB # :nodoc:
14
- VERSION = "1.3.8.pre.4"
14
+ VERSION = "1.3.8.pre.8"
15
15
  @RELEASE_VERSION = VERSION
16
- @LAST_UPDATE_DATE = "2021-08-31"
16
+ @LAST_UPDATE_DATE = "2021-09-06"
17
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: irb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.8.pre.4
4
+ version: 1.3.8.pre.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keiju ISHITSUKA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-30 00:00:00.000000000 Z
11
+ date: 2021-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reline
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.8.pre.4
19
+ version: 0.2.8.pre.8
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.8.pre.4
26
+ version: 0.2.8.pre.8
27
27
  description: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).
28
28
  email:
29
29
  - keiju@ruby-lang.org