¿Cómo abrir un archivo en el editor desde Tracy? (Integración con el IDE)
Cuando se muestra la página de error puede pulsar en los nombres de los archivos y estos se abrirán en su
editor con el cursor en la línea correspondiente. También se pueden crear archivos (acción create file)
o corregir errores en ellos (acción fix it). Para eso hay que configurar el navegador y el sistema.
Tracy abre los archivos mediante URL con la forma editor://open/?file=%file&line=%line, es decir, con el
protocolo editor://. Tenemos que registrar en el sistema un manejador propio para ese protocolo. Ese manejador puede
ser cualquier archivo ejecutable que procese los parámetros y arranque su editor preferido.
Puede cambiar la URL en la variable Tracy\Debugger::$editor, o desactivar la apertura al pulsar poniendo
Tracy\Debugger::$editor = null.
Windows
- Descargue a disco los archivos adecuados del repositorio de Tracy.
- Edite el archivo
open-editor.jsy, en el objetosettings, descomente y, si hace falta, modifique la ruta a su 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%"',
...
}
...
Tenga cuidado y conserve las barras invertidas dobles de las rutas.
3. Registre en el sistema el manejador del protocolo editor://.
Eso se hace ejecutando install.cmd. Tiene que ejecutarlo como administrador. El script
open-editor.js atenderá a partir de entonces el protocolo editor://.
Para poder abrir los enlaces generados en otros servidores, como un servidor de producción o Docker, añada a
open-editor.js un mapeo de la ruta remota a la local:
mappings: {
// ruta remota: ruta local
'/var/www/nette.app': 'W:\\Nette.web\\_web',
'/var/www/second.app': 'W:\\Second.web'
}
En Windows, open-editor.js se ejecuta bajo el Windows Script Host, cuyo motor JScript solo
entiende ECMA-262 3rd Edition (1999). Al editar el script, aténgase al JavaScript de la vieja escuela: use var en
lugar de let o const, evite las funciones flecha y no ponga una coma final tras el último elemento de
un objeto. La sintaxis moderna provoca un error de script y el protocolo editor:// deja de abrir el editor en
silencio.
El mapeo de remoto a local también se puede definir en el lado de PHP con Debugger::$editorMapping, que funciona independientemente del manejador del editor y de la plataforma.
Linux
- Descargue los archivos adecuados del
repositorio de Tracy al directorio
~/bin. - Edite el archivo
open-editor.shy descomente y, si hace falta, modifique la ruta a su editor en la variableeditor.
#!/bin/bash
# Emacs
#editor='emacs +$LINE "$FILE"'
# gVim
#editor='gvim +$LINE "$FILE"'
# gEdit
#editor='gedit +$LINE "$FILE"'
# Pluma
#editor='pluma +$LINE "$FILE"'
...
Hágalo ejecutable:
chmod +x ~/bin/open-editor.sh
Si el editor que usa no está instalado desde un paquete, puede que su binario no esté en el $PATH
del sistema. Eso se arregla fácilmente. En el directorio ~/bin, cree un enlace simbólico al binario del editor.
3. Registre en el sistema el manejador del protocolo editor://.
Eso se hace ejecutando el archivo install.sh. El script open-editor.sh atenderá a partir de entonces
el protocolo editor://.
macOS
Editores como PhpStorm, TextMate, etc. permiten abrir los archivos mediante una URL especial, que solo hay que configurar:
// 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 usa Tracy de forma independiente, ponga la línea antes de Tracy\Debugger::enable(). Si usa Nette, colóquela
antes de $configurator->enableTracy() en Bootstrap.php.
Por desgracia, las acciones create file y fix it no funcionan en macOS.
Demostraciones
Corregir un error:
Crear un archivo nuevo:
Solución de problemas
- En Firefox puede que tenga que permitir la
ejecución de protocolos propios en
about:config, poniendonetwork.protocol-handler.expose.editorafalseynetwork.protocol-handler.expose-allatrue. Debería estar permitido de forma predeterminada, en todo caso. - Si no funciona de inmediato, no se asuste. Pruebe a recargar la página unas cuantas veces antes de pulsar el enlace, o a reiniciar el navegador o el ordenador. Eso debería ayudar.
- Aquí tiene un enlace
para corregir posibles errores como:
Input Error: There is no script engine for file extension ".js"oMaybe you associated ".js" file to another app, not JScript engine.
A partir de la versión 77 de Google Chrome ya no verá la casilla “Abrir siempre este tipo de enlaces en la aplicación
asociada” cuando el editor se lance mediante un enlace. Solución alternativa para Windows: cree el archivo
fix.reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"
Impórtelo haciendo doble clic y reinicie Chrome. La política AutoLaunchProtocolsFromOrigins suprime por completo
el diálogo de confirmación del navegador. El script install.cmd lo configura automáticamente, incluida una línea
comentada para Vivaldi (la misma política bajo HKLM\SOFTWARE\Policies\Vivaldi).
Si tiene más preguntas o sugerencias, visite el foro.