Edit

Jak otevřít soubor v editoru z Tracy?

Při zobrazení chybové stránky lze kliknout na jména souborů a ty se otevřou ve vašem editoru s kurzorem na příslušné řádce. Aby se tak stalo, je potřeba prohlížeč a systém nakonfigurovat.

Pokud proměnnou Tracy\Debugger::$editor nenastavíte, bude Laděnka standardně otevírat soubory přes URL editor://open/?file=%file&line=%line, tj. s protokolem „editor://“.

Pro ten si zaregistrujeme vlastní obsluhu. Tou může být libovolný spustitelný soubor, který „přežvýká“ parametry a spustí náš oblíbený editor.

Windows

1. Vytvořte handler protokolu „editor://“ ve formě dávkového souboru run-editor.js

// NetBeans
var editor = '"C:\\Program Files\\NetBeans 7.0\\bin\\netbeans.exe" "%file%:%line%" --console  suppress --nosplash';

// PhpStorm
//~ var editor = '"C:\\Program Files\\PhpStorm\\PhpStorm.exe" --line %line% "%file%"';

// jEdit
//~ var editor = '"C:\\Program Files (x86)\\jEdit\\jedit.exe" "%file%" +line:%line% -reuseview';

// PHPEd
//~ var editor = '"C:\\Program Files\\NuSphere\\PhpED\\phped.exe" "%file%" --line=%line%';

// SciTE
//~ var editor = '"C:\\Program Files\\SciTE\\scite.exe" "-open:%file%" -goto:%line%';

// EmEditor
//~ var editor = '"C:\\Program Files\\EmEditor\\EmEditor.exe" "%file%" /l %line%';

// PSPad Editor
//~ var editor = '"C:\\Program Files\\PSPad editor\\PSPad.exe" -%line% "%file%"';

// gVim
//~ var editor = '"C:\\Program Files\\Vim\\vim73\\gvim.exe" "%file%" +%line%';

// Sublime Text 2
//~ var editor = 'C:\\Progra~1\\Sublim~1\\sublime_text.exe "%file%":%line%';

var url = WScript.Arguments(0);
var match = /^editor:\/\/open\/\?file=(.+)&line=(\d+)$/.exec(url);
if (match) {
    var file = decodeURIComponent(match[1]).replace(/\+/g, ' ');
    var command = editor.replace(/%line%/g, match[2]).replace(/%file%/g, file);
    var shell = new ActiveXObject("WScript.Shell");
    shell.Exec(command.replace(/\\/g, '\\\\'));
}

2. Zaregistrujte handler protokolu „editor://“ v systému

Vytvořte si a spusťte soubor editor.reg:

Pozor na dvojitá lomítka a úplnou cestu k souboru run-editor.js

REGEDIT4

[HKEY_CLASSES_ROOT\editor]
@="URL:editor Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\editor\shell\open\command]
@="wscript \"C:\\path\\to\\run-editor.js\" \"%1\""

Linux

1. Vytvořte handler protokolu „editor://“ ve formě BASH skriptu run-editor.sh.

V adresáři ~/bin si vytvořte soubor ~/bin/run-editor.sh,

touch ~/bin/run-editor.sh

učiňte jej spustitelným,

chmod +x ~/bin/run-editor.sh

a vložte do něj:

#!/bin/bash

url="$1"
REWRITE=( $(FIS=" " echo "$(echo $url | sed -s 's/%2F/\//g' | sed -s 's/.*file=\(\/.*\)\&line=\(.*\)/\1\ \2/')") );

line=${REWRITE[1]}
file=${REWRITE[0]}

# Netbeans
netbeans "$file:$line"
# Kate
#kate --line $line "$file"
# Vim
#vim "$file" +$line
# Gedit
#gedit +$line "$file"
# Komodo
#komodo "$file#$line"
# PhpStorm
#/usr/local/bin/pstorm --line $line "$file"
# Sublime Text 2
#subl "$file:$line"

Pokud používáte Netbeans (nebo jiné IDE) a nemáte jej nainstalované z balíku, pravděpodobně nebude Netbeans binárka v $PATH. To lze jednoduše napravit. V adresáři ~/bin si vytvořte symlink na binárku Netbeans.

2. Zaregistrujte handler protokolu „editor://“ v systému

KDE

Vytvořte nový soubor

  • KDE 4: /usr/share/kde4/services/editor.protocol
  • KDE 5: /usr/share/kservices5/editor.protocol

a do něj vložte následující kód:

[Protocol]
exec=/home/<username>/bin/run-editor.sh "%u"
protocol=editor
input=none
output=none
helper=true
listing=
reading=false
writing=false
makedir=false
deleting=false

Gnome

V Gnome (funguje i v Gnome Shell) zaregistrujeme nový handler protokolu „editor://“ pomocí volání konfigurační utility

gconftool-2 -s /desktop/gnome/url-handlers/editor/command --type String '/home/<username>/bin/run-editor.sh %s'
gconftool-2 -s /desktop/gnome/url-handlers/editor/enabled --type Boolean true

pro Vim či jiný konzolový editor přidejte:

gconftool-2 -s /desktop/gnome/url-handlers/editor/needs_terminal --type Boolean true

Pozor na kompletní cestu. Zkratka pomocí ~/ nefunguje protože se jedná o globální konfigurák.

Xfce

V Xfce lze pro registraci protokolu využít balíček xdg-utils.

Vytvořte nový soubor /usr/share/applications/editor-uri.desktop a do něj vložte následující kód:

[Desktop Entry]
Encoding=UTF-8
Name=Editor Url
Type=Application
Exec=/home/<username>/bin/run-editor.sh %u
Terminal=false
Categories=Application;
MimeType=x-scheme-handler/editor
NoDisplay=true

Následně editujte soubor /usr/share/applications/defaults.list a přidejte do něj následující řádek:

x-scheme-handler/editor=editor-uri.desktop

Mac OS X

Pokud používáte editor TextMate nebo jiný, který umožňuje otevírat soubory přes speciální URL, bude vám stačit toto URL nastavit. Jako proměnné se tu používá %file a %line:

// PhpStorm
Debugger::$editor = 'phpstorm://open?file=%file&line=%line';
// TextMate
Debugger::$editor = 'txmt://open/?url=file://%file&line=%line';
// MacVim
Debugger::$editor = 'mvim://open?url=file:///%file&line=%line';

Troubleshooting:

  • ve Firefoxu může být potřeba protokol povolit nastavením network.protocol-handler.expose.editor na false a network.protocol-handler.expose-all na true v about:config.
  • Pokud vám to hned nepůjde nepanikařte. A zkuste párkrát refreshnout stránku před klikem na onen odkaz. Rozjede se to!
  • V případě chyby. Input Error: There is no script engine for file extension „.js“ Maybe you associated „.js“ file to another app, not JScript engine. Zde je link na opravu.

S případnými dotazy nebo připomínkami se prosím obraťte na fórum.