Method: BetterErrors.editor=

Defined in:
lib/better_errors.rb

.BetterErrors.editor=(sym) ⇒ Object .BetterErrors.editor=(str) ⇒ Object .BetterErrors.editor=(proc) ⇒ Object

Configures how Better Errors generates open-in-editor URLs.

Overloads:

  • .BetterErrors.editor=(sym) ⇒ Object

    Uses one of the preset editor configurations. Valid symbols are:

    • :textmate, :txmt, :tm
    • :sublime, :subl, :st
    • :macvim
  • .BetterErrors.editor=(str) ⇒ Object

    Uses str as the format string for generating open-in-editor URLs.

    Use %{file} and %{line} as placeholders for the actual values.

    Examples:

    BetterErrors.editor = "my-editor://open?url=%{file}&line=%{line}"
  • .BetterErrors.editor=(proc) ⇒ Object

    Uses proc to generate open-in-editor URLs. The proc will be called with file and line parameters when a URL needs to be generated.

    Your proc should take care to escape file appropriately with URI.encode_www_form_component (please note that URI.escape is not a suitable substitute.)

    Examples:

    BetterErrors.editor = proc { |file, line|
      "my-editor://open?url=#{URI.encode_www_form_component file}&line=#{line}"
    }


86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/better_errors.rb', line 86

def self.editor=(editor)
  case editor
  when :textmate, :txmt, :tm
    self.editor = "txmt://open?url=file://%{file}&line=%{line}"
  when :sublime, :subl, :st
    self.editor = "subl://open?url=file://%{file}&line=%{line}"
  when :macvim, :mvim
    self.editor = proc { |file, line| "mvim://open?url=file://#{file}&line=#{line}" }
  when :emacs
    self.editor = "emacs://open?url=file://%{file}&line=%{line}"
  when String
    self.editor = proc { |file, line| editor % { file: URI.encode_www_form_component(file), line: line } }
  else
    if editor.respond_to? :call
      @editor = editor
    else
      raise TypeError, "Expected editor to be a valid editor key, a format string or a callable."
    end
  end
end

Comments