Sha256: 037709d3a536317c7a2d164941cc0fb56fd6cb04ae8c574df24301616ececb03
Contents?: true
Size: 1.65 KB
Versions: 9
Compression:
Stored size: 1.65 KB
Contents
require 'shellwords' require_relative "../color" require_relative "../source_finder" module IRB # :stopdoc: module Command class Edit < Base include RubyArgsExtractor category "Misc" description 'Open a file or source location.' help_message <<~HELP_MESSAGE Usage: edit [FILE or constant or method signature] Open a file in the editor specified in #{highlight('ENV["VISUAL"]')} or #{highlight('ENV["EDITOR"]')} - If no arguments are provided, IRB will attempt to open the file the current context was defined in. - If FILE is provided, IRB will open the file. - If a constant or method signature is provided, IRB will attempt to locate the source file and open it. Examples: edit edit foo.rb edit Foo edit Foo#bar HELP_MESSAGE def execute(arg) # Accept string literal for backward compatibility path = unwrap_string_literal(arg) if path.nil? path = @irb_context.irb_path elsif !File.exist?(path) source = SourceFinder.new(@irb_context).find_source(path) if source&.file_exist? && !source.binary_file? path = source.file end end unless File.exist?(path) puts "Can not find file: #{path}" return end if editor = (ENV['VISUAL'] || ENV['EDITOR']) puts "command: '#{editor}'" puts " path: #{path}" system(*Shellwords.split(editor), path) else puts "Can not find editor setting: ENV['VISUAL'] or ENV['EDITOR']" end end end end # :startdoc: end
Version data entries
9 entries across 9 versions & 3 rubygems