Comment ouvrir un fichier dans l'éditeur depuis Tracy ? (Intégration avec l'IDE)

Lors de l'affichage de la page d'erreur, il est possible de cliquer sur les noms de fichiers et ceux-ci s'ouvriront dans votre éditeur avec le curseur sur la ligne correspondante. Il est également possible de créer des fichiers (action create file) ou d'y corriger des erreurs (action fix it). Pour que cela se produise, il est nécessaire de configurer le navigateur et le système.

Tracy ouvre les fichiers via une URL de la forme editor://open/?file=%file&line=%line, c'est-à-dire avec le protocole editor://. Nous enregistrerons notre propre gestionnaire pour celui-ci. Celui-ci peut être n'importe quel fichier exécutable qui “mâchera” les paramètres et lancera notre éditeur préféré.

Vous pouvez modifier l'URL dans la variable Tracy\Debugger::$editor, ou désactiver le clic en définissant Tracy\Debugger::$editor = null.

Windows

  1. Téléchargez les fichiers appropriés depuis le dépôt Tracy sur votre disque.
  2. Modifiez le fichier open-editor.js et dans le tableau settings, décommentez et éventuellement modifiez le chemin vers 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%"',

	...
}

...

Attention, conservez les doubles barres obliques inversées dans les chemins.

3. Enregistrez le gestionnaire du protocole editor:// dans le système.

Vous le faites en exécutant le fichier install.cmd. Il faut l'exécuter en tant qu'Administrateur. Le script open-editor.js gérera désormais le protocole editor://.

Pour pouvoir ouvrir les liens générés sur d'autres serveurs, comme sur le serveur de production ou dans Docker, ajoutez également le mappage de l'URL distante vers le local dans open-editor.js :

	mappings: {
		// chemin distant : chemin local
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
	}

Linux

  1. Téléchargez les fichiers appropriés depuis le dépôt Tracy dans le répertoire ~/bin.
  2. Modifiez le fichier open-editor.sh et décommentez et éventuellement modifiez le chemin vers votre éditeur dans la variable editor.
#!/bin/bash

# Emacs
#editor='emacs +$LINE "$FILE"'

# gVim
#editor='gvim +$LINE "$FILE"'

# gEdit
#editor='gedit +$LINE "$FILE"'

# Pluma
#editor='pluma +$LINE "$FILE"'

...

Rendez le fichier exécutable :

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

Si l'éditeur utilisé n'est pas installé à partir d'un paquet, le binaire n'aura probablement pas de chemin dans $PATH. Cela peut être facilement corrigé. Dans le répertoire ~/bin, créez un lien symbolique vers le binaire de l'éditeur.

3. Enregistrez le gestionnaire du protocole editor:// dans le système.

Vous le faites en exécutant le fichier install.sh. Le script open-editor.sh gérera désormais le protocole editor://.

macOS

Les éditeurs comme PhpStorm, TextMate, etc. permettent d'ouvrir des fichiers via une URL spéciale 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 de manière autonome, insérez la ligne avant Tracy\Debugger::enable(), si vous utilisez Nette, alors avant $configurator->enableTracy() dans Bootstrap.php.

Les actions create file ou fix it ne fonctionnent malheureusement pas sur macOS.

Démonstrations

Correction d'une erreur :

Création d'un fichier :

Résolution de problèmes

  • Dans Firefox, il peut être nécessaire d'autoriser le protocole en définissant network.protocol-handler.expose.editor sur false et network.protocol-handler.expose-all sur true dans about:config.
  • Si cela ne fonctionne pas tout de suite, ne paniquez pas et essayez de rafraîchir la page plusieurs fois avant de cliquer sur ce lien. Ça va démarrer !
  • Voici un lien pour corriger une éventuelle erreur : Input Error: There is no script engine for file extension ".js", Maybe you associated ".js" file to another app, not JScript engine. respectivement aucun moteur de script n'est disponible pour l'extension .js.

Dans Google Chrome depuis la version 77, vous ne verrez plus la case à cocher “Toujours ouvrir ce type de liens dans l'application associée” lorsque l'éditeur est lancé via un lien. Solution pour Windows : créez un fichier fix.reg :

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\URLWhitelist]
"123"="editor://*"

Importez-le en double-cliquant et redémarrez Chrome.

Pour toute question ou suggestion, veuillez vous adresser au forum.