Module: Presently::Editor
- Defined in:
- lib/presently/editor.rb
Overview
Maps editor names to URL schemes for opening files.
Checks the ‘EDITOR` environment variable and generates clickable URLs for known editors. Returns `nil` for unknown editors.
Constant Summary collapse
- EDITORS =
{ "code" => "vscode://file/%s:%d", "vscode" => "vscode://file/%s:%d", "cursor" => "cursor://file/%s:%d", "subl" => "subl://open?url=file://%s&line=%d", "sublime" => "subl://open?url=file://%s&line=%d", "atom" => "atom://core/open/file?filename=%s&line=%d", "idea" => "idea://open?file=%s&line=%d", "rubymine" => "x-mine://open?file=%s&line=%d", "zed" => "zed://file/%s:%d", "nova" => "nova://open?path=%s&line=%d", "mate" => "txmt://open?url=file://%s&line=%d", "textmate" => "txmt://open?url=file://%s&line=%d", "emacs" => "emacs://open?url=file://%s&line=%d", "mvim" => "mvim://open?url=file://%s&line=%d", "windsurf" => "windsurf://file/%s:%d", "vscodium" => "vscodium://file/%s:%d", }
Class Method Summary collapse
-
.url_for(path, line = 1) ⇒ Object
Generate a URL for opening a file in the current editor.
Class Method Details
.url_for(path, line = 1) ⇒ Object
Generate a URL for opening a file in the current editor.
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/presently/editor.rb', line 35 def self.url_for(path, line = 1) editor = ENV["PRESENTLY_EDITOR"] || ENV["EDITOR"] return nil unless editor # Extract the editor name from the path (e.g. "/usr/bin/code" -> "code") name = File.basename(editor).split(/\s+/).first if pattern = EDITORS[name] sprintf(pattern, File.(path), line) end end |