Sha256: 9f5743a8b93171c6eb1517e5159707a4eaa1e4760884dfa3d49941bd6967f608

Contents?: true

Size: 973 Bytes

Versions: 1

Compression:

Stored size: 973 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_interactively
    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_interactively(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_interactively
  end

  def vi
    edit_interactively(:vim)
  end

  def mate
    edit_interactively(:mate)
  end

  def emacs
    edit_interactively(:emacs)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
utility_belt-1.0.6 lib/interactive_editor.rb