Module: Thor::Actions

Included in:
Gitx::Cli::BaseCommand
Defined in:
lib/gitx/extensions/thor.rb

Instance Method Summary collapse

Instance Method Details

#ask_editor(initial_text = '', editor: nil, footer: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/gitx/extensions/thor.rb', line 7

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