Sha256: 73dd72116dd233228305e548c670090dbe35a2fc2fa309fac2d774773dbb9867

Contents?: true

Size: 1.6 KB

Versions: 17

Compression:

Stored size: 1.6 KB

Contents

require 'shellwords'
require_relative "nop"
require_relative "../source_finder"

module IRB
  # :stopdoc:

  module ExtendCommand
    class Edit < Nop
      category "Misc"
      description 'Open a file with the editor command defined with `ENV["VISUAL"]` or `ENV["EDITOR"]`.'

      class << self
        def transform_args(args)
          # Return a string literal as is for backward compatibility
          if args.nil? || args.empty? || string_literal?(args)
            args
          else # Otherwise, consider the input as a String for convenience
            args.strip.dump
          end
        end
      end

      def execute(*args)
        path = args.first

        if path.nil? && (irb_path = @irb_context.irb_path)
          path = irb_path
        end

        if !File.exist?(path)
          source =
            begin
              SourceFinder.new(@irb_context).find_source(path)
            rescue NameError
              # if user enters a path that doesn't exist, it'll cause NameError when passed here because find_source would try to evaluate it as well
              # in this case, we should just ignore the error
            end

          if source
            path = source.file
          else
            puts "Can not find file: #{path}"
            return
          end
        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

17 entries across 17 versions & 2 rubygems

Version Path
irb-1.11.2 lib/irb/cmd/edit.rb
irb-1.11.1 lib/irb/cmd/edit.rb
irb-1.11.0 lib/irb/cmd/edit.rb
study_line-0.1.6 vendor/bundle/ruby/3.2.0/gems/irb-1.8.3/lib/irb/cmd/edit.rb
study_line-0.1.5 vendor/bundle/ruby/3.2.0/gems/irb-1.8.3/lib/irb/cmd/edit.rb
study_line-0.1.4 vendor/bundle/ruby/3.2.0/gems/irb-1.8.3/lib/irb/cmd/edit.rb
study_line-0.1.3 vendor/bundle/ruby/3.2.0/gems/irb-1.8.3/lib/irb/cmd/edit.rb
irb-1.10.1 lib/irb/cmd/edit.rb
study_line-0.1.2 vendor/bundle/ruby/3.2.0/gems/irb-1.8.3/lib/irb/cmd/edit.rb
study_line-0.1.1 vendor/bundle/ruby/3.2.0/gems/irb-1.8.3/lib/irb/cmd/edit.rb
irb-1.10.0 lib/irb/cmd/edit.rb
irb-1.9.1 lib/irb/cmd/edit.rb
irb-1.9.0 lib/irb/cmd/edit.rb
irb-1.8.3 lib/irb/cmd/edit.rb
irb-1.8.2 lib/irb/cmd/edit.rb
irb-1.8.1 lib/irb/cmd/edit.rb
irb-1.8.0 lib/irb/cmd/edit.rb