Sha256: 6375b67279e310af0de1a16cd412034da9b9f3f6908f7640068141e61a999bb5

Contents?: true

Size: 967 Bytes

Versions: 16

Compression:

Stored size: 967 Bytes

Contents

require 'tempfile'

class Thor
  module Actions
    # launch configured editor to retreive message/string
    # see http://osdir.com/ml/ruby-talk/2010-06/msg01424.html
    # see https://gist.github.com/rkumar/456809
    # see http://rdoc.info/github/visionmedia/commander/master/Commander/UI.ask_editor
    def ask_editor(initial_text = '', editor: nil, footer: nil)
      editor ||= ENV['EDITOR'] || 'vi'
      initial_text += "\n\n#{footer}" if footer
      text = ::Tempfile.open('text.md') do |f|
        f << initial_text
        f.flush

        flags = case editor
                when 'mate', 'emacs', 'subl'
                  '-w'
                when 'mvim'
                  '-f'
                else
                  ''
                end
        pid = fork { exec([editor, flags, f.path].join(' ')) }
        Process.waitpid(pid)
        File.read(f.path)
      end
      text = text.gsub(footer, '') if footer
      text.chomp.strip
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
gitx-4.5.0 lib/gitx/extensions/thor.rb
gitx-4.4.0 lib/gitx/extensions/thor.rb
gitx-4.3.0 lib/gitx/extensions/thor.rb
gitx-4.1.1 lib/gitx/extensions/thor.rb
gitx-4.1.0 lib/gitx/extensions/thor.rb
gitx-4.0.0 lib/gitx/extensions/thor.rb
gitx-4.0.0.ci.234.1 lib/gitx/extensions/thor.rb
gitx-3.2.0 lib/gitx/extensions/thor.rb
gitx-3.2.0.ci.231.1 lib/gitx/extensions/thor.rb
gitx-3.1.2 lib/gitx/extensions/thor.rb
gitx-3.1.1 lib/gitx/extensions/thor.rb
gitx-3.1.0.ci.216.1 lib/gitx/extensions/thor.rb
gitx-3.1.0 lib/gitx/extensions/thor.rb
gitx-3.0.2.ci.213.1 lib/gitx/extensions/thor.rb
gitx-3.0.2.ci.207.1 lib/gitx/extensions/thor.rb
gitx-3.0.2 lib/gitx/extensions/thor.rb