Come aprire un file nell'editor da Tracy? (integrazione con l'IDE)
Quando viene mostrata la pagina di errore, potete cliccare sui nomi dei file e si apriranno nel vostro editor con
il cursore sulla riga corrispondente. Si possono anche creare file (azione create file) oppure correggervi errori
(azione fix it). Perché funzioni bisogna configurare il browser e il sistema.
Tracy apre i file tramite URL della forma editor://open/?file=%file&line=%line, cioè con il protocollo
editor://. Per questo protocollo dobbiamo registrare un handler personalizzato. Questo handler può essere un file
eseguibile qualsiasi che elabora i parametri e avvia l'editor preferito.
L'URL lo potete cambiare nella variabile Tracy\Debugger::$editor, oppure disattivare il click impostando
Tracy\Debugger::$editor = null.
Windows
- Scaricate su disco i file appropriati dal repository di Tracy.
- Modificate il file
open-editor.jse nell'oggettosettingsdecommentate ed eventualmente correggete il percorso del vostro editor:
var settings = {
// PhpStorm
editor: '"C:\\Program Files\\JetBrains\\PhpStorm 2018.1.2\\bin\\phpstorm64.exe" --line %line% "%file%"',
title: 'PhpStorm',
// NetBeans
// editor: '"C:\\Program Files\\NetBeans 8.1\\bin\\netbeans.exe" "%file%:%line%" --console suppress',
// Sublime Text 2
// editor: '"C:\\Program Files\\Sublime Text 2\\sublime_text.exe" "%file%:%line%"',
...
}
...
Fate attenzione a mantenere le doppie barre rovesciate nei percorsi.
3. Registrate nel sistema l'handler per il protocollo editor://.
Lo si fa eseguendo install.cmd. Dovete eseguirlo come amministratore. Lo script open-editor.js
servirà da ora il protocollo editor://.
Per poter aprire i link generati su altri server, per esempio su un server di produzione o in Docker, aggiungete a
open-editor.js la mappatura degli URL remoti su quelli locali:
mappings: {
// percorso remoto: percorso locale
'/var/www/nette.app': 'W:\\Nette.web\\_web',
'/var/www/second.app': 'W:\\Second.web'
}
Su Windows open-editor.js gira sotto il Windows Script Host, il cui motore JScript comprende solo
ECMA-262 3rd Edition (1999). Quando modificate lo script, attenetevi al JavaScript vecchio stile: usate var invece di
let o const, evitate le arrow function e non mettete la virgola dopo l'ultimo elemento di un oggetto. La
sintassi moderna provoca un errore dello script e il protocollo editor:// smette silenziosamente di aprire
l'editor.
La mappatura da remoto a locale la potete definire anche dal lato PHP con Debugger::$editorMapping, che funziona indipendentemente dall'handler dell'editor e dalla piattaforma.
Linux
- Scaricate i file appropriati dal repository
di Tracy nella directory
~/bin. - Modificate il file
open-editor.she nella variabileeditordecommentate ed eventualmente correggete il percorso del vostro editor.
#!/bin/bash
# Emacs
#editor='emacs +$LINE "$FILE"'
# gVim
#editor='gvim +$LINE "$FILE"'
# gEdit
#editor='gedit +$LINE "$FILE"'
# Pluma
#editor='pluma +$LINE "$FILE"'
...
Rendetelo eseguibile:
chmod +x ~/bin/open-editor.sh
Se l'editor che usate non è installato da un pacchetto, il suo binario potrebbe non trovarsi nel
$PATH di sistema. Si rimedia facilmente: nella directory ~/bin create un collegamento simbolico al
binario dell'editor.
3. Registrate nel sistema l'handler per il protocollo editor://.
Lo si fa eseguendo il file install.sh. Lo script open-editor.sh servirà da ora il protocollo
editor://.
macOS
Editor come PhpStorm, TextMate ecc. permettono di aprire i file con un URL speciale, che basta impostare:
// PhpStorm
Tracy\Debugger::$editor = 'phpstorm://open?file=%file&line=%line';
// TextMate
Tracy\Debugger::$editor = 'txmt://open/?url=file://%file&line=%line';
// MacVim
Tracy\Debugger::$editor = 'mvim://open?url=file:///%file&line=%line';
// Visual Studio Code
Tracy\Debugger::$editor = 'vscode://file/%file:%line';
Se usate Tracy da sola, mettete la riga prima di Tracy\Debugger::enable(). Se usate Nette, mettetela prima di
$configurator->enableTracy() in Bootstrap.php.
Purtroppo su macOS le azioni create file e fix it non funzionano.
Dimostrazioni
Correzione di un errore:
Creazione di un nuovo file:
Risoluzione dei problemi
- In Firefox può essere necessario consentire
l'esecuzione dei protocolli personalizzati in
about:configimpostandonetwork.protocol-handler.expose.editorafalseenetwork.protocol-handler.expose-allatrue. Dovrebbe però essere consentita per impostazione predefinita. - Se non funziona subito, niente panico. Provate ad aggiornare la pagina qualche volta prima di cliccare il link, oppure riavviate il browser o il computer. Dovrebbe bastare.
- Ecco un link per
correggere eventuali errori come:
Input Error: There is no script engine for file extension ".js"oppureMaybe you associated ".js" file to another app, not JScript engine.
Da Google Chrome versione 77 non vedrete più la casella “Apri sempre questi tipi di link nell'app associata” quando
l'editor viene avviato da un link. Soluzione per Windows: create il file fix.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"
Importatelo con un doppio clic e riavviate Chrome. La policy AutoLaunchProtocolsFromOrigins sopprime del tutto la
finestra di conferma del browser. Lo script install.cmd la imposta automaticamente, compresa una riga commentata per
Vivaldi (stessa policy sotto HKLM\SOFTWARE\Policies\Vivaldi).
Per altre domande o suggerimenti visitate il forum.