Ouvrir directement les fichiers sources
Astuce très utile permettant d'ouvrir directement les fichiers concernés dans le profiler Symfony dans votre IDE préféré.
Configurer php
Configurer Xdebug pour que les liens de fichiers (utilisés par le debugger Symfony) soient ouvert via une url spécifique.
Dans le fichier de configuration /etc/php/7.0/conf.d/20-xdebug.ini
, ajouter (ou modifiez si déjà présent)
xdebug.file_link_format = 'ide://%f:%l'
Cela générera des liens de ce type :
ide://YOUR_PROJECT_PATH/index.php:65
Ajouter l'URL handler
Votre environnement de bureau doit savoir comment gérer ce nouveau protocole.
Pour gnome, cherchez où se trouve le fichier mimeapps.list
find ~/ -name mimeapps.list
/home/PapsOu/.config/mimeapps.list
Éditez-le et ajoutez l'entrée suivante :
[Added Associations]
x-scheme-handler/ide=ide-handler.desktop;
La chaîne doit commencer par x-scheme-handler/
suivi du nom de protocole personnalisé.
Fichier .desktop
Créez le fichier desktop qui se chargera de lancer le un script correspondant au protocole personnalisé.
nano ~/.local/share/applications/ide-handler.desktop
[Desktop Entry]
Version=1.0
Type=Application
Exec=/PATH_TO_YOUR_IDE_SCRIPT/run-ide.sh %u
StartupNotify=false
Terminal=false
Categories=Utility;
MimeType=x-scheme-handler/ide
Name=IDE quick open
Comment=Launch IDE
Ne pas oublier un chmod +x
sur ce fichier pour qu'il soit exécutable.
Script de lancement d'IDE
Créez le script qui sera exécuté lors des clics sur ces liens.
Exec
du fichier .desktop
précédent.run-ide.sh
:
#!/bin/bash
# Strip de la partie « ide:// » de l'url
url="${1:6}"
# Atom
# /bin/atom ${fileName}:${lineNumber}
# Netbeans
# /bin/netbeans $url
# VSCode
/usr/bin/code -g ${fileName}:${lineNumber}:0
Appliquer les changements
Redémarrez votre navigateur et gnome (
(Optionnel) Configurer Firefox
Si Firefox n'arrive pas à associer les liens ide://
à votre script, il est peut être nécessaire de modifier sa configuration.
Ajouter les entrées suivantes dans about:config
pour que Firefox sache que ce protocole nouvellement créé existe.
network.protocol-handler.expose.ide: false
network.protocol-handler.external.ide: true
network.protocol-handler.warn-external.ide: false