class Byebug::EditCommand

def execute

def execute
  if !@match[1]
    return errmsg(pr('edit.errors.state')) unless @state.file
    file = @state.file
    line = @state.line if @state.line
  elsif (@pos_match = /([^:]+)[:]([0-9]+)/.match(@match[1]))
    file, line = @pos_match.captures
  else
    file = @match[1]
  end
  editor = ENV['EDITOR'] || 'vim'
  file = File.expand_path(file)
  unless File.exist?(file)
    return errmsg(pr('edit.errors.not_exist', file: file))
  end
  unless File.readable?(file)
    return errmsg(pr('edit.errors.not_readable', file: file))
  end
  cmd = line ? "#{editor} +#{line} #{file}" : "#{editor} #{file}"
  system(cmd)
end