class Byebug::EditCommand
Edit a file from byebug's prompt.
Public Class Methods
description()
click to toggle source
# File lib/byebug/commands/edit.rb, line 16 def self.description <<-DESCRIPTION edit[ file:lineno] #{short_description} With no argumnt, edits file containing most re line listed. Editing targets can also be specified to start editing at a specific line in a specific file DESCRIPTION end
regexp()
click to toggle source
# File lib/byebug/commands/edit.rb, line 12 def self.regexp /^\s* ed(?:it)? (?:\s+(\S+))? \s*$/x end
short_description()
click to toggle source
# File lib/byebug/commands/edit.rb, line 28 def self.short_description "Edits source files" end
Public Instance Methods
execute()
click to toggle source
# File lib/byebug/commands/edit.rb, line 32 def execute file, line = location(@match[1]) return edit_error("not_exist", file) unless File.exist?(file) return edit_error("not_readable", file) unless File.readable?(file) cmd = line ? "#{editor} +#{line} #{file}" : "#{editor} #{file}" Kernel.system(cmd) end
Private Instance Methods
edit_error(type, file)
click to toggle source
# File lib/byebug/commands/edit.rb, line 64 def edit_error(type, file) errmsg(pr("edit.errors.#{type}", file: file)) end
editor()
click to toggle source
# File lib/byebug/commands/edit.rb, line 60 def editor ENV["EDITOR"] || "vim" end
location(matched)
click to toggle source
# File lib/byebug/commands/edit.rb, line 44 def location(matched) if matched.nil? file = frame.file return errmsg(pr("edit.errors.state")) unless file line = frame.line elsif (@pos_match = /([^:]+)[:]([0-9]+)/.match(matched)) file, line = @pos_match.captures else file = matched line = nil end [File.expand_path(file), line] end