Commit graph

92 commits

Author SHA1 Message Date
Hiroshi SHIBATA
7e283c585e [ruby/irb] Formatting to header styles
cef125850d
2023-01-11 22:29:10 +00:00
Hiroshi SHIBATA
c7bb8d67b7 [ruby/irb] Removed Release Version and Revisions for old VCS software
07fae94862
2023-01-11 22:29:09 +00:00
st0012
4f348e482c [ruby/irb] Rename leftover Reidline references
0ed8b103ed
2022-11-15 10:08:28 +00:00
st0012
b7622d792d [ruby/irb] Move require out of repeated execution path
SHOW_DOC_DIALOG will be called repeatedly whenever the corresponding key
is pressed, but we only need to require rdoc once. So ideally the
require can be put outside of the proc.

And because when rdoc is not available the entire proc will be
nonfunctional, we can stop registering the SHOW_DOC_DIALOG if we failed
to require rdoc.

b1278b7320
2022-10-24 13:36:57 +00:00
tomoya ishida
a09f764ce5 [ruby/irb] Always use local variables in current context to parse code (https://github.com/ruby/irb/pull/397)
* Use local_variables for colorize, code_block_open check, nesting_level and assignment_expression check

* Check if expression is an assignment BEFORE evaluating it. evaluate might define new localvars and change result of assignment_expression?

* Add local_variables dependent code test

* pend local variable dependent test on truffleruby

code_block_open is not working on truffleruby

* Always pass context to RubyLex#lex

* Rename local_variable_assign_code generator method name

* Add assignment expression truncate test

* Add Context#local_variables and make generate_local_variables_assign_code more simple

* Update lib/irb/input-method.rb

Co-authored-by: Stan Lo <stan001212@gmail.com>

* Add a comment why assignment expression check should be done before evaluate

c8b3877281

Co-authored-by: Stan Lo <stan001212@gmail.com>
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2022-10-18 05:44:07 +00:00
Gannon McGibbon
19e4a4c624 [ruby/irb] Rename IDB::ReidlineInputMethod to IRB::RelineInputMethod
Deprecates IDB::ReidlineInputMethod and USE_REIDLINE in favor of
IRB::RelineInputMethod and USE_RELINE. The Input method uses Reline to
read input from the console, so it can be named directly after the
Reline library like other inputs methods are (Readline, Stdio, etc.).

5bcade7130
2022-10-05 17:14:19 +09:00
Jeremy Evans
b07db96744 [ruby/irb] Support --noscript option to not use first non-option argument as script
Also add --script option to turn the option back on.

Previously there wasn't a way to get an interactive IRB session
and access arguments provided on the command line.

Additionally, handle `-` as script as stdin. In Unix-like tools, `-`
means to take standard input instead of a file.  This doesn't
result in exactly the same output for:

```
echo 'p ARGV' > args.rb; irb args.rb a b c
```

and

```
echo 'p ARGV' | irb - a b c
```

Due to how irb handles whether stdin is a tty.

However, this change allows use of `-` as a argument, instead of
giving an unrecognized switch error. This required some small
changes to context.rb (to handle `-` as standard input) and
input-method.rb (to have FileInputMethod accept IO arguments in
addition to strings).

Implements [Feature #15371]

4192683ba2
2022-09-17 02:25:26 +09:00
Jun Aruga
3504be1bc1 [ruby/irb] Require RDoc in input-method.rb again in a limited scope.
RDoc is implemented as soft dependency in IRB. See how the rdoc is required in
the files. I reverted the commit below.

```
$ grep -ril rdoc lib/
lib/irb/cmd/help.rb
lib/irb/completion.rb
lib/irb/easter-egg.rb
lib/irb/input-method.rb
```

---

Revert "Remove `require` in signal handler to avoid ThreadError"

This reverts commit 5f749c613c.

b24852058f
2022-08-26 09:57:02 +09:00
Vít Ondruch
46c3a93982 [ruby/irb] Drop hard dependency on RDoc.
This has been introduced in 026700499d,
but it seems that this is just be mistake, otherwise the later handling
of `LoadError` would not be needed.

54c8df06ff
2022-08-23 18:01:35 +09:00
Peter Jones
e0bfdb23af [ruby/irb] Ensure stdout is a TTY before calling winsize
When outputting a (possibly truncated) value, IRB will query the
window size.  However, if IRB was piped to another process, stdout
will no longer be a TTY and will not support the `winsize` method.

This fix ensure that stdout is a TTY.

125de5eeea
2022-06-26 14:40:48 +09:00
Samuel Williams
e4cd319f3d [ruby/irb] Prefer IO#wait_readable over IO#select. (https://github.com/ruby/irb/pull/323)
1c03bd3373
2021-12-29 09:37:05 +09:00
aycabta
ddf0cdee4f [ruby/irb] Support showing doc by dialog in iTerm2
a4b95d6634
2021-12-25 12:56:40 +09:00
ima1zumi
d486286f1d [ruby/irb] Add Alt+d keycode when convert-meta isn't used
I pushed reline#389 for when convert-meta is not turned on in .inputrc.
Alt+D in irb also needs to be set to the keycode for not using convert-meta.

328eddf851
2021-12-03 00:51:41 +09:00
aycabta
866a09dd9e [ruby/irb] Add --extra-doc-dir option to show doc dialog
3f79cb506f
2021-10-11 21:12:57 +09:00
aycabta
1507cb084c [ruby/irb] Determine left and right when the width of either side is zero correctly
5df6e1f027
2021-10-08 10:34:06 +09:00
aycabta
576eccf76d [ruby/irb] Calculate right side doc dialog width correctly
f34da7fa04
2021-10-08 10:33:56 +09:00
aycabta
374efa8e30 [ruby/irb] Specify whether to show the doc dialog on the left or right side by using variable names
a23a88b8c9
2021-10-08 10:33:47 +09:00
aycabta
5c02df8296 [ruby/irb] Display doc dialog in gaps on narrow screen
4d7cefcaa4
2021-10-08 10:33:39 +09:00
Kaíque Kandy Koga
80e2242da6 [ruby/irb] Update descriptions of methods
From Reidline to Reline

Update description used in take_corresponding_syntax_to_kw_do and is_the_in_correspond_to_a_for methods

Use possessive noun correctly

Second element

4fa9714d6f
2021-10-07 23:55:54 +09:00
Masataka Pocke Kuwabara
853ca5cceb [ruby/irb] Remove require in signal handler to avoid ThreadError
`rdoc` has been required so it looks unnecessary

5f749c613c
2021-10-03 21:51:54 +09:00
aycabta
2a4bacce8c [ruby/irb] Add comments for Alt+d key sequences
4cb5f7e546
2021-09-06 06:39:02 +09:00
aycabta
991eb4894d [ruby/irb] Use multiple trap_key
416abe2524
2021-09-06 05:24:41 +09:00
aycabta
5f771f4f02 [ruby/irb] Remove commeted out code
7dda1f803e
2021-09-04 21:59:39 +09:00
aycabta
c8bf45f23c [ruby/irb] Show doc at the same height as the autocompletion dialog
a9db71e6bc
2021-09-04 21:57:11 +09:00
aycabta
f7d9dd2e4c [ruby/irb] Render properly if both autocomplete and show doc dialogs are left of the cursor
0090203107
2021-09-04 21:55:55 +09:00
aycabta
3d6a475587 [ruby/irb] Use Reline::Key for trap_key in dialog callback
b05ce3c72d
2021-09-03 04:28:53 +09:00
aycabta
eb92d7c732 [ruby/irb] Add message to show full doc
6370a5d974
2021-09-03 04:28:32 +09:00
aycabta
f793f68264 [ruby/irb] Add Alt+d trap from show doc dialog to show full doc
368327b082
2021-09-03 04:28:27 +09:00
aycabta
817694481c [ruby/irb] Set the dialog width to render with a fixed width
80c4329643
2021-08-31 15:20:34 +09:00
aycabta
077bc98ce4 [ruby/irb] Follow that Dialog#contents_width has been renamed to #width
49a73d929e
2021-08-31 15:20:27 +09:00
aycabta
a8e6a850d5 [ruby/irb] Make show doc dialog appears on the left at the right edge
6480eddd31
2021-08-31 15:20:22 +09:00
aycabta
cf0ece810a [ruby/irb] Rename a variable "dialog" with "autocomplete_dialog"
Because it's just used to receive data from the autocomplete dialog, not
for show doc dialog.

f8b752bd98
2021-08-31 15:20:17 +09:00
aycabta
c63d98b401 [ruby/irb] Use DialogRenderInfo
5bc3a72ca3
2021-08-31 05:24:55 +09:00
aycabta
b30be9f222 [ruby/irb] Take dialog to get scroll_top
7209082a11
2021-08-31 05:24:45 +09:00
aycabta
16cf2ef6f2 [ruby/irb] Don't show doc when pointer is negative
48af34bfc2
2021-08-31 05:24:36 +09:00
aycabta
aeec02d7f3 [ruby/irb] [].name to display the doc for Array.name
7c2abc14d8
2021-08-30 11:58:56 +09:00
aycabta
1e2f10e8aa [ruby/irb] Rescue unknown error to quash crashing
92cce941cb
2021-08-30 11:58:51 +09:00
aycabta
ece4ed0da7 Add --autocomplete / --noautocomplete options 2021-08-30 02:45:13 +09:00
aycabta
cde84a5baa [ruby/irb] Rescue NotFoundError of RDoc::RI::Driver#expand_name
c5f13b23d7
2021-08-29 20:30:01 +09:00
aycabta
ae4e301d5d [ruby/irb] Add show doc dialog for Reline
026700499d
2021-08-29 20:29:54 +09:00
aycabta
ab89c45b90 [ruby/irb] Evaluate each toplevel statement
bc1b1d8bc3
2021-04-03 01:17:08 +09:00
Cody Cutrer
3cab8c087f [ruby/irb] process multi-line pastes as a single entity
this allows pasting leading-dot chained methods correctly:

```ruby
class A
  def a; self; end
  def b; true; end
end

a = A.new

a
 .a
 .b
```

will properly return `true` instead of erroring on the `.a` line:

```
irb(main):001:1*     class A
irb(main):002:1*       def a; self; end
irb(main):003:0>     end
irb(main):004:0*
irb(main):005:0>     a = A.new
irb(main):006:0*
irb(main):007:0>     a
irb(main):008:0>      .a
irb(main):009:0>      .a
=> #<A:0x00007f984211fbe8>
```

45aeb52575
2021-04-03 00:49:29 +09:00
aycabta
0927756e58 [ruby/irb] Complete require and require_relative
1c61178b4c
2021-03-24 15:11:41 +09:00
Nobuhiro IMAI
5b05b85d85 [ruby/irb] add IRB::FileInputMethod.open to ensure closing associated File
* tweak some methods not to raise exception after `#close`
* use it in `IRB::IrbLoader#{source_file,load_file}

ec2947acbd
2021-01-27 15:01:57 +09:00
aycabta
28e9344fa4 [ruby/irb] Change StdioInputMethod#eof? to non-blocking
This fixes --inf-ruby-mode.

0e4a818955
2020-12-23 22:08:30 +09:00
aycabta
e468d9f49c [ruby/irb] Add OMIT_ON_ASSIGNMENT
Omit the results evaluated at assignment if they are too long.

The behavior of ECHO_ON_ASSIGNMENT being on by default is hard to understand,
so I change it to off by default. Instead, we turn OMIT_ON_ASSIGNMENT on by
default. The result is displayed on assignment, but it will always be short
and within one line of the screen.

c5ea79d5ce
2020-09-14 02:13:11 +09:00
aycabta
b3f84b4a5b [ruby/irb] Expand path to run separated test correctly
be2937abd5
2020-08-18 14:38:01 +09:00
Nobuyoshi Nakada
6aa786b8a3 [ruby/irb] Get rid of loading readline unnecessarily
420e7d2270
2020-08-18 14:38:01 +09:00
aycabta
3864fbc6d8 [ruby/irb] Check existence of rc files in irb_info command
cdbb9dfc9f
2020-04-29 19:13:14 +09:00
aycabta
98a346d065 [ruby/irb] Add irb_info command
a6fe58e916
2020-04-29 19:13:14 +09:00