¿Cómo abrir un archivo en el editor desde Tracy? (Integración con IDE)

Al mostrar la página de error, se puede hacer clic en los nombres de los archivos y estos se abrirán en tu 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 que esto suceda, es necesario configurar el navegador y el sistema.

Tracy abre archivos a través de una URL con la forma editor://open/?file=%file&line=%line, es decir, con el protocolo editor://. Registraremos un manejador personalizado para este protocolo. Este puede ser cualquier archivo ejecutable que procese los parámetros y ejecute nuestro editor favorito.

Puedes cambiar la URL en la variable Tracy\Debugger::$editor, o desactivar el clic a través de la configuración Tracy\Debugger::$editor = null.

Windows

  1. Descarga los archivos correspondientes del repositorio de Tracy al disco.
  2. Edita el archivo open-editor.js y en el array settings descomenta y, si es necesario, modifica la ruta a tu 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%"',

	...
}

...

Atención, mantén las dobles barras en las rutas.

3. Registra el handler del protocolo editor:// en el sistema.

Esto se hace ejecutando el archivo install.cmd. Es necesario ejecutarlo como Administrador. El script open-editor.js manejará ahora el protocolo editor://.

Para poder abrir enlaces generados en otros servidores, como en un servidor en vivo o en Docker, añade también el mapeo de la URL remota a la local en open-editor.js:

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

Linux

  1. Descarga los archivos correspondientes del repositorio de Tracy al directorio ~/bin.
  2. Edita el archivo open-editor.sh y descomenta y, si es necesario, modifica la ruta a tu editor en 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"'

...

Haz el archivo ejecutable:

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

Si el editor utilizado no está instalado desde un paquete, probablemente el binario no tendrá la ruta en $PATH. Esto se puede corregir fácilmente. En el directorio ~/bin, crea un enlace simbólico al binario del editor.

3. Registra el handler del protocolo editor:// en el sistema.

Esto se hace ejecutando el archivo install.sh. El script open-editor.sh manejará ahora el protocolo editor://.

macOS

Editores como PhpStorm, TextMate, etc., permiten abrir archivos a través de una URL especial, que solo necesitas 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 usas Tracy de forma independiente, inserta la línea antes de Tracy\Debugger::enable(), si usas Nette, entonces antes de $configurator->enableTracy() en Bootstrap.php.

Las acciones create file o fix it desafortunadamente no funcionan en macOS.

Demostraciones

Corrección de errores:

Creación de archivo:

Solución de problemas

  • En Firefox, puede ser necesario permitir el protocolo configurando network.protocol-handler.expose.editor a false y network.protocol-handler.expose-all a true en about:config.
  • Si no funciona de inmediato, no entres en pánico e intenta refrescar la página unas cuantas veces antes de hacer clic en el enlace. ¡Empezará a funcionar!
  • Aquí hay un enlace para corregir un posible error: Input Error: There is no script engine for file extension ".js", Maybe you associated ".js" file to another app, not JScript engine. respectivamente no hay disponible ningún motor de scripting para la extensión .js.

En Google Chrome desde la versión 77 ya no verás la casilla de verificación „Abrir siempre este tipo de enlaces en la aplicación asociada“ cuando el editor se ejecuta a través de un enlace. Solución para Windows: crea el archivo fix.reg:

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

Impórtalo haciendo doble clic y reinicia el navegador Chrome.

Para cualquier pregunta o comentario, por favor contacta con el foro.