Sha256: e76f76766d35c1826cd3879b7c7b20d8294a5d925a7fd88d4b88e996b399ad5a

Contents?: true

Size: 889 Bytes

Versions: 6

Compression:

Stored size: 889 Bytes

Contents

# Giles Bowkett, Greg Brown, and several audience members from Giles' Ruby East presentation.
class InteractiveEditor
  attr_accessor :editor
  def initialize(editor = :vim)
    @editor = editor.to_s
    if @editor == "mate"
      @editor = "mate -w"
    end
  end
  def edit
    unless @file
      @file = Tempfile.new("irb_tempfile")
    end
    system("#{@editor} #{@file.path}")
    Object.class_eval(`cat #{@file.path}`)
    rescue Exception => error
      puts error
  end
end

class Object
  def edit(editor)
    unless IRB.conf[:interactive_editors] && IRB.conf[:interactive_editors][editor]
      IRB.conf[:interactive_editors] ||= {}
      IRB.conf[:interactive_editors][editor] = InteractiveEditor.new(editor)
    end
    IRB.conf[:interactive_editors][editor].edit
  end

  def vi
    edit(:vim)
  end

  def mate
    edit(:mate)
  end

  def emacs
    edit(:emacs)
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
utility_belt-1.0.0 lib/interactive_editor.rb
utility_belt-1.0.4 lib/interactive_editor.rb
utility_belt-1.0.1 lib/interactive_editor.rb
utility_belt-1.0.3 lib/interactive_editor.rb
utility_belt-1.0.5 lib/interactive_editor.rb
utility_belt-1.0.2 lib/interactive_editor.rb