Tracy'den Bir Dosya Düzenleyicide Nasıl Açılır? (IDE Tümleştirmesi)

Hata sayfası görüntülendiğinde dosya adlarına tıklayabilirsiniz; dosyalar düzenleyicinizde, imleç ilgili satırda olacak şekilde açılır. Dosyalar oluşturulabilir (create file eylemi) ya da içlerindeki hatalar düzeltilebilir (fix it eylemi). Bunun için tarayıcıyı ve sistemi yapılandırmanız gerekir.

Tracy, dosyaları editor://open/?file=%file&line=%line biçimindeki URL'lerle, yani editor:// protokolüyle açar. Bu protokol için özel bir işleyici kaydetmemiz gerekir. Bu işleyici, parametreleri işleyen ve yeğlediğiniz düzenleyiciyi başlatan herhangi bir çalıştırılabilir dosya olabilir.

URL'yi Tracy\Debugger::$editor değişkeninde değiştirebilir ya da Tracy\Debugger::$editor = null yaparak tıklamayı kapatabilirsiniz.

Windows

  1. Uygun dosyaları Tracy deposundan diske indirin.
  2. open-editor.js dosyasını düzenleyin ve settings nesnesinde, düzenleyicinize giden yolu yorumdan çıkarıp gerekiyorsa değiştirin:
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%"',

	...
}

...

Dikkatli olun ve yollardaki çift ters eğik çizgileri koruyun.

3. editor:// protokolünün işleyicisini sistemde kaydedin.

Bu, install.cmd çalıştırılarak yapılır. Onu Yönetici olarak çalıştırmanız gerekir. open-editor.js betiği artık editor:// protokolüne hizmet edecek.

Başka sunucularda, örneğin üretim sunucusunda ya da Docker'da üretilen bağlantıları açmak için open-editor.js dosyasına uzaktan yerele bir URL eşlemesi ekleyin:

	mappings: {
		// uzak yol: yerel yol
		'/var/www/nette.app': 'W:\\Nette.web\\_web',
		'/var/www/second.app': 'W:\\Second.web'
	}

Windows'ta open-editor.js, JScript motoru yalnızca ECMA-262 3. Sürümü (1999) anlayan Windows Script Host altında çalışır. Betiği düzenlerken eski usul JavaScript'e bağlı kalın: let ya da const yerine var kullanın, ok fonksiyonlarından kaçının ve bir nesnenin son öğesinden sonra virgül bırakmayın. Modern söz dizimi betik hatasına yol açar ve editor:// protokolü düzenleyiciyi sessizce açamaz.

Uzaktan yerele eşlemeyi, düzenleyici işleyicisinden ve platformdan bağımsız çalışan Debugger::$editorMapping ile PHP tarafında da tanımlayabilirsiniz.

Linux

  1. Uygun dosyaları Tracy deposundan ~/bin dizinine indirin.
  2. open-editor.sh dosyasını düzenleyin ve editor değişkenindeki düzenleyici yolunu yorumdan çıkarıp gerekiyorsa değiştirin.
#!/bin/bash

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

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

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

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

...

Onu çalıştırılabilir yapın:

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

Kullandığınız düzenleyici bir paketten kurulmadıysa, ikili dosyası sistemin $PATH değişkeninde olmayabilir. Bu kolayca düzeltilir. ~/bin dizininde düzenleyicinin ikili dosyasına bir sembolik bağ oluşturun.

3. editor:// protokolünün işleyicisini sistemde kaydedin.

Bu, install.sh dosyası çalıştırılarak yapılır. open-editor.sh betiği artık editor:// protokolünü üstlenecek.

macOS

PhpStorm, TextMate gibi düzenleyiciler, dosyaları yalnızca ayarlamanız gereken özel bir URL ile açmanıza olanak tanır:

// 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';

Tracy'yi bağımsız kullanıyorsanız satırı Tracy\Debugger::enable() çağrısından önce koyun. Nette kullanıyorsanız Bootstrap.php içinde $configurator->enableTracy() çağrısından önce koyun.

Ne yazık ki create file ve fix it eylemleri macOS'ta çalışmıyor.

Tanıtımlar

Bir hatanın düzeltilmesi:

Yeni bir dosya oluşturulması:

Sorun Giderme

  • Firefox'ta, about:config içinde network.protocol-handler.expose.editor değerini false, network.protocol-handler.expose-all değerini ise true yaparak özel protokol çalıştırmaya izin vermeniz gerekebilir. Yine de varsayılan olarak izinli olmalıdır.
  • Hemen çalışmazsa paniğe kapılmayın. Bağlantıya tıklamadan önce sayfayı birkaç kez yenilemeyi ya da tarayıcınızı veya bilgisayarınızı yeniden başlatmayı deneyin. Bu işe yaramalıdır.
  • Şu türden olası hataları düzeltmek için bir bağlantı: Input Error: There is no script engine for file extension ".js" ya da Maybe you associated ".js" file to another app, not JScript engine.

Google Chrome'un 77. sürümünden itibaren, düzenleyici bir bağlantıyla başlatıldığında “Bu tür bağlantıları her zaman ilişkili uygulamada aç” onay kutusunu artık görmeyeceksiniz. Windows için geçici çözüm: fix.reg dosyası oluşturun:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"],\"protocol\": \"editor\"}]"

Çift tıklayarak içe aktarın ve Chrome'u yeniden başlatın. AutoLaunchProtocolsFromOrigins ilkesi, tarayıcının onay iletişim kutusunu tümüyle bastırır. install.cmd betiği bunu, Vivaldi için yorum satırı hâlinde bir satırla birlikte (aynı ilke HKLM\SOFTWARE\Policies\Vivaldi altında) otomatik olarak ayarlar.

Başka sorularınız ya da önerileriniz için lütfen foruma uğrayın.