Comment ouvrir un fichier dans l'éditeur depuis Tracy ? (intégration à l'IDE)
Lorsque la page d'erreur s'affiche, vous pouvez cliquer sur les noms de fichiers et ils s'ouvriront dans votre
éditeur, le curseur placé sur la ligne correspondante. Les fichiers peuvent aussi être créés (action
create file) ou les bugs y être corrigés (action fix it). Pour cela, vous devez configurer le
navigateur et le système.
Tracy ouvre les fichiers par des URL de la forme editor://open/?file=%file&line=%line, c'est-à-dire à l'aide
du protocole editor://. Nous devons enregistrer un gestionnaire personnalisé pour ce protocole. Ce gestionnaire peut
être n'importe quel fichier exécutable qui traite les paramètres et lance l'éditeur de votre choix.
Vous pouvez changer l'URL dans la variable Tracy\Debugger::$editor, ou désactiver le clic en définissant
Tracy\Debugger::$editor = null.
Windows
- Téléchargez sur le disque les fichiers appropriés depuis le dépôt de Tracy.
- Modifiez le fichier
open-editor.jset, dans l'objetsettings, décommentez et, si nécessaire, adaptez le chemin de votre éditeur :
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%"',
...
}
...
Faites attention à conserver les doubles antislashs dans les chemins.
3. Enregistrez le gestionnaire du protocole editor:// dans le système.
Cela se fait en exécutant install.cmd. Vous devez le lancer en tant qu'administrateur. Le script
open-editor.js prendra désormais en charge le protocole editor://.
Pour pouvoir ouvrir les liens générés sur d'autres serveurs, comme un serveur de production ou Docker, ajoutez à
open-editor.js une correspondance entre chemins distants et locaux :
mappings: {
// chemin distant : chemin local
'/var/www/nette.app': 'W:\\Nette.web\\_web',
'/var/www/second.app': 'W:\\Second.web'
}
Sous Windows, open-editor.js s'exécute dans le Windows Script Host, dont le moteur JScript ne
comprend que ECMA-262 3rd Edition (1999). Quand vous modifiez le script, tenez-vous-en au JavaScript à l'ancienne : utilisez
var plutôt que let ou const, évitez les fonctions fléchées et ne mettez pas de virgule
après le dernier élément d'un objet. Une syntaxe moderne provoque une erreur de script et le protocole editor://
échoue silencieusement à ouvrir l'éditeur.
Vous pouvez aussi définir la correspondance distant/local côté PHP via Debugger::$editorMapping, qui fonctionne indépendamment du gestionnaire d'éditeur et de la plateforme.
Linux
- Téléchargez les fichiers appropriés depuis
le dépôt de Tracy dans le répertoire
~/bin. - Modifiez le fichier
open-editor.shet décommentez, en l'adaptant si nécessaire, le chemin de votre éditeur dans la variableeditor.
#!/bin/bash
# Emacs
#editor='emacs +$LINE "$FILE"'
# gVim
#editor='gvim +$LINE "$FILE"'
# gEdit
#editor='gedit +$LINE "$FILE"'
# Pluma
#editor='pluma +$LINE "$FILE"'
...
Rendez-le exécutable :
chmod +x ~/bin/open-editor.sh
Si l'éditeur que vous utilisez n'est pas installé depuis un paquet, son binaire peut ne pas se trouver dans le
$PATH du système. Cela se règle facilement : créez dans le répertoire ~/bin un lien symbolique vers
le binaire de l'éditeur.
3. Enregistrez le gestionnaire du protocole editor:// dans le système.
Cela se fait en exécutant le fichier install.sh. Le script open-editor.sh prendra désormais en
charge le protocole editor://.
macOS
Des éditeurs comme PhpStorm, TextMate, etc. permettent d'ouvrir les fichiers par une URL particulière, qu'il suffit de définir :
// 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';
Si vous utilisez Tracy seule, placez cette ligne avant Tracy\Debugger::enable(). Avec Nette, placez-la avant
$configurator->enableTracy() dans Bootstrap.php.
Malheureusement, les actions create file et fix it ne fonctionnent pas sous macOS.
Démonstrations
Correction d'un bug :
Création d'un nouveau fichier :
Résolution de problèmes
- Dans Firefox, vous devrez peut-être autoriser
l'exécution de protocoles personnalisés dans
about:configen définissantnetwork.protocol-handler.expose.editoràfalseetnetwork.protocol-handler.expose-allàtrue. Cela devrait toutefois être autorisé par défaut. - Si cela ne fonctionne pas immédiatement, pas de panique. Essayez de rafraîchir la page plusieurs fois avant de cliquer sur le lien, ou redémarrez votre navigateur ou votre ordinateur. Cela devrait aider.
- Voici un lien pour
corriger d'éventuelles erreurs comme :
Input Error: There is no script engine for file extension ".js"ouMaybe you associated ".js" file to another app, not JScript engine.
À partir de Google Chrome 77, vous ne verrez plus la case “Toujours ouvrir ce type de liens dans l'application associée”
lorsque l'éditeur est lancé par un lien. Contournement pour Windows : créez le fichier fix.reg :
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"
Importez-le par un double-clic et redémarrez Chrome. La stratégie AutoLaunchProtocolsFromOrigins supprime
complètement la boîte de dialogue de confirmation du navigateur. Le script install.cmd la définit automatiquement,
avec une ligne commentée pour Vivaldi (même stratégie sous HKLM\SOFTWARE\Policies\Vivaldi).
Pour toute autre question ou suggestion, rendez-vous sur le forum.