mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
Move default_editor_for_platform
to Pry::Editor
The name strongly suggests that this method belongs to `Pry::Editor` and it makes no sense to have it on `Pry` class.
This commit is contained in:
parent
f7f05fc703
commit
2f30e7dc63
5 changed files with 54 additions and 12 deletions
|
@ -18,6 +18,7 @@ require 'pry/class_command'
|
||||||
require 'pry/block_command'
|
require 'pry/block_command'
|
||||||
require 'pry/command_set'
|
require 'pry/command_set'
|
||||||
require 'pry/syntax_highlighter'
|
require 'pry/syntax_highlighter'
|
||||||
|
require 'pry/editor'
|
||||||
|
|
||||||
Pry::Commands = Pry::CommandSet.new unless defined?(Pry::Commands)
|
Pry::Commands = Pry::CommandSet.new unless defined?(Pry::Commands)
|
||||||
|
|
||||||
|
@ -49,7 +50,6 @@ require 'pry/inspector'
|
||||||
require 'pry/color_printer'
|
require 'pry/color_printer'
|
||||||
require 'pry/pager'
|
require 'pry/pager'
|
||||||
require 'pry/terminal'
|
require 'pry/terminal'
|
||||||
require 'pry/editor'
|
|
||||||
require 'pry/indent'
|
require 'pry/indent'
|
||||||
require 'pry/object_path'
|
require 'pry/object_path'
|
||||||
require 'pry/output'
|
require 'pry/output'
|
||||||
|
|
|
@ -78,7 +78,7 @@ class Pry
|
||||||
|
|
||||||
color: Pry::Helpers::BaseHelpers.use_ansi_codes?,
|
color: Pry::Helpers::BaseHelpers.use_ansi_codes?,
|
||||||
default_window_size: 5,
|
default_window_size: 5,
|
||||||
editor: Pry.default_editor_for_platform,
|
editor: Pry::Editor.default,
|
||||||
should_load_rc: true,
|
should_load_rc: true,
|
||||||
should_load_local_rc: true,
|
should_load_local_rc: true,
|
||||||
should_trap_interrupts: Pry::Helpers::Platform.jruby?,
|
should_trap_interrupts: Pry::Helpers::Platform.jruby?,
|
||||||
|
|
|
@ -2,6 +2,16 @@ require 'shellwords'
|
||||||
|
|
||||||
class Pry
|
class Pry
|
||||||
class Editor
|
class Editor
|
||||||
|
def self.default
|
||||||
|
return ENV['VISUAL'] if ENV['VISUAL'] && !ENV['VISUAL'].empty?
|
||||||
|
return ENV['EDITOR'] if ENV['EDITOR'] && !ENV['EDITOR'].empty?
|
||||||
|
return 'notepad' if Helpers::Platform.windows?
|
||||||
|
|
||||||
|
%w[editor nano vi].find do |editor|
|
||||||
|
Kernel.system("which #{editor} > /dev/null 2>&1")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
include Pry::Helpers::CommandHelpers
|
include Pry::Helpers::CommandHelpers
|
||||||
|
|
||||||
attr_reader :pry_instance
|
attr_reader :pry_instance
|
||||||
|
|
|
@ -306,16 +306,6 @@ you can add "Pry.config.windows_console_warning = false" to your pryrc.
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.default_editor_for_platform
|
|
||||||
return ENV['VISUAL'] if ENV['VISUAL'] && !ENV['VISUAL'].empty?
|
|
||||||
return ENV['EDITOR'] if ENV['EDITOR'] && !ENV['EDITOR'].empty?
|
|
||||||
return 'notepad' if Helpers::Platform.windows?
|
|
||||||
|
|
||||||
%w[editor nano vi].detect do |editor|
|
|
||||||
system("which #{editor} > /dev/null 2>&1")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.auto_resize!
|
def self.auto_resize!
|
||||||
Pry.config.input # by default, load Readline
|
Pry.config.input # by default, load Readline
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,48 @@ describe Pry::Editor do
|
||||||
@editor = Pry::Editor.new(Pry.new)
|
@editor = Pry::Editor.new(Pry.new)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe ".default" do
|
||||||
|
context "when $VISUAL is defined" do
|
||||||
|
before { ENV['VISUAL'] = 'emacs' }
|
||||||
|
after { ENV['VISUAL'] = nil }
|
||||||
|
|
||||||
|
it "returns the value of $VISUAL" do
|
||||||
|
expect(described_class.default).to eq('emacs')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when $EDITOR is defined" do
|
||||||
|
before { ENV['EDITOR'] = 'vim' }
|
||||||
|
after { ENV['EDITOR'] = nil }
|
||||||
|
|
||||||
|
it "returns the value of $EDITOR" do
|
||||||
|
expect(described_class.default).to eq('vim')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when platform is Windows" do
|
||||||
|
before do
|
||||||
|
allow(Pry::Helpers::Platform).to receive(:windows?).and_return(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns 'notepad'" do
|
||||||
|
expect(described_class.default).to eq('notepad')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when no editor is detected" do
|
||||||
|
before { allow(Kernel).to receive(:system) }
|
||||||
|
|
||||||
|
%w[editor nano vi].each do |text_editor_name|
|
||||||
|
it "shells out to find '#{text_editor_name}'" do
|
||||||
|
expect(Kernel).to receive(:system)
|
||||||
|
.with("which #{text_editor_name} > /dev/null 2>&1")
|
||||||
|
described_class.default
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "build_editor_invocation_string", skip: !Pry::Helpers::Platform.windows? do
|
describe "build_editor_invocation_string", skip: !Pry::Helpers::Platform.windows? do
|
||||||
it 'should shell-escape files' do
|
it 'should shell-escape files' do
|
||||||
invocation_str = @editor.build_editor_invocation_string(@tf_path, 5, true)
|
invocation_str = @editor.build_editor_invocation_string(@tf_path, 5, true)
|
||||||
|
|
Loading…
Reference in a new issue