1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00
Commit graph

16 commits

Author SHA1 Message Date
Kyrylo Silin
ce99ec425a Command::Hist: change the behaviour
Fix issue #205 (history option to show just history for current session)

Add `--all` switch. `hist` is `hist --all` now. `hist` without any
parameters shows the history of the current session.
2013-03-17 10:43:06 +02:00
Kyrylo Silin
fed97f0738 Hist: fix --exclude-pry switch
Fix issue #874 (hist -e breaks with TypeError: can't convert
Pry::Code::LOC to String)

And add a test for that switch.
2013-03-12 20:53:28 +02:00
Conrad Irwin
2c60f93b2d Merge branch 'wip.refactor'
Conflicts:
	lib/pry/completion.rb
	lib/pry/pry_instance.rb
	spec/commands/play_spec.rb
	spec/pry_defaults_spec.rb
2013-01-18 00:19:38 -08:00
Kyrylo Silin
83aebd1505 Update hist command to the new Slop API
It was creating a new Slop instance for its own needs, thus and so
remove the previous abstraction for Slop commands. The
`ClassCommand::Options` class should be removed because we don't need it
anymore.
2013-01-14 20:15:01 +02:00
Kyrylo Silin
256f35422a Prettify command descriptions, switches and stuff
Wrap command descriptions to 80 characters. Convert some string options
to symbols (where possible). Align options in code. Remove dots in the
end of switch descriptions.

Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
2013-01-09 22:23:19 +02:00
Conrad Irwin
a5d72a146f Make interactive? explicit 2012-12-28 11:18:51 -08:00
Conrad Irwin
bf3024bc73 Merge branch 'master' into wip.refactor
Conflicts:
	lib/pry.rb
	spec/command_integration_spec.rb
	spec/control_d_handler_spec.rb
2012-12-28 06:55:59 -08:00
Conrad Irwin
a61277d89b Make hist command just use _pry_.eval 2012-12-28 06:44:04 -08:00
Ryan Fitzgerald
1d214a496c Work around rbx bug by checking if Range#max is nil 2012-12-27 18:03:09 -08:00
Kyrylo Silin
ebccd57013 Convert all commands to classes
John "banister" Mair describes the following key features of commands
as classes:

  1. It enables people to extend them by either subclassing or
     monkeypatching.
  2. It enables them to provide their own API, so that for example, the
     Pry::Command::Edit class could have class methods for people to
     configure it.

Please, note that I didn't touch easter eggs commands. I also prettified
some strings (your source code reading experience should vastly improve!).

Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
2012-12-27 13:31:37 +02:00
Conrad Irwin
bb96695c8a Move history pushing before command execution
This separates out concerns a little better, and paves the way for
extracing process_command from retreive_line.
2012-12-10 10:42:05 -08:00
Kyrylo Silin
892ade1c0f Define Options creation more exactly
Sometimes I have a failing test, because it can't find Options constant.
Let's help Ruby in its hard job a bit.

Also, reformulate some comments and convert " to ' in some places.

Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
2012-11-23 14:21:11 +02:00
Kyrylo Silin
50722e298b Adapt existing code to subcommands
Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
2012-11-23 14:18:46 +02:00
Kyrylo Silin
704cc6e859 Store hist --replay <i> calls in history
Fix issue #484 (hist --replay N isn't stored in history).

First, make some small amendments to existing code:

  * Make helper methods of "hist" command private;

  * What an irony! Amend the name of the duplicated test in
    `test_input.rb` ("should not contain duplicated lines" test).

Secondly, resolve the issue. There is one notable moment in current
implementation. Although `hist --replay` calls are being stored in
history, you cannot "replay" entries of this kind (you cannot replay
another call request to replay). Let me show an example:

  [1] pry(main)> hist --show 46894
  46894: hist --replay 46675..46677
  [2] pry(main)> hist --show 46675..46677
  46675: 1+1
  46676: a = 100
  46677: hist --tail
  [3] pry(main)> hist --replay 46894
  Error: Replay index 46894 points out to another replay call: `hist -r 46675..46677`
  [4] pry(main)>

There are two reasons for that.

Reason one or my incompetence
-----------------------------

First of all, I simply failed to implement such behaviour. With current
state of things (that are introduced in this commit), if you do not
raise `Pry::CommandError`, you cannot guarantee that only user's input
is getting stored in history. Here's an example when we get unwanted
entry in history:

  [1] pry(main)> hist --show 46894
  46894: hist --replay 46675..46677
  [2] pry(main)> hist --show 46675..46677
  46675: 1+1
  46676: a = 100
  46677: hist --tail 4
  [3] pry(main)> hist --replay 46894
  => 2
  => 100
  47021: hist --show 46894
  47022: hist --show 46675..46677
  47023: hist --replay 46894
  47024: hist --replay 46675..46677
  [8] pry(main)>

Note that a user typed only `hist --replay 46894`. But the last saved
entry in history is the entry to which user's input, actually, pointed
out (`hist --replay 46675..46677`). So if you press up-arrow key, you
will get not what you expected.

Reason two or "Whoa, whoa, boy! There is a real reason"
-------------------------------------------------------

But the main reason is that you can fall into a loop trap, when both
"hist --replay" calls point to each other. Example of a loop trap:

  [31] pry(main)> hist --tail 4
  47027: hist --tail
  47028: hist --replay 47028
  47029: hist --tail
  47030: hist --replay 47032
  [32] pry(main)> hist -r 47030
  # We've just fallen into a loop trap. Let's break out of it.
  ^C
  [416] pry(main)> hist --tail 5
  47409: hist --replay 47032
  47410: hist --replay 47030
  47411: hist --replay 47032
  47412: hist --replay 47030
  47413: hist --replay 47032
  [417] pry(main)>

Note the number of current line (417).

Finally, add some unit tests for this commit.

Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
2012-08-23 02:27:02 +03:00
Ryan Fitzgerald
1af4207c63 Restore groups, convert most commands to class syntax 2012-08-11 18:27:26 -07:00
Ryan Fitzgerald
8ce49ee081 Remove extended_commands, default_commands -> commands 2012-08-11 17:39:25 -07:00
Renamed from lib/pry/default_commands/hist.rb (Browse further)