Úprava balíčku do Sublime Text

PHP, Tipy & triky

Balíčků do SublimeText je hodně, takže je možné najít si ten, který vyhovuje přesně potřebám každého. Najdou se ale výjimky, kdy autor změnu nechce provést, nebo balíček neudržuje. A přesně tehdy je vhodné si balíček upravit vlastními silami.

Úprava balíčku do Sublime Text

Osobně používám balíček PHP Companion, který je udržován, ale jednu drobnost autor odmítá zapracovat. Při importu namespace jsou záznamy seřazeny, ale trochu jinak, než bych chtěl a než vyžadují některé coding standardy. Rozhodl jsem se tedy balíček předělat sám. Nejedná se o žádnou náročnou operaci, protože většina Sublime Textu i balíčků je napsána v Pythonu.

Úprava packed a unpacked balíčků

Existují 2 typy balíčků, packed a unpacked. Packed balíčky se nachází ve složce Installed Packaged a jsou to soubory s příponou *.sublime-package. Unpacked balíčky jsou ve složce Packages a pro každý balíček existuje 1 složka, ve které jsou všechny soubory. Rozdíl při tvorbě balíčků ale žádný není, protože soubor s příponou sublime-package je jen ZIP obsahující všechny soubory jako unpacked balíček.

Balíček PHP Companion je nainstalován pomocí Package Control pluginu a je uložen zabalený. Stačilo tedy balíček rozbalit a vložit jej do složky Packages. Aby nedocházelo k automatické aktualizaci a přepsání, rozhodl jsem se složku přejmenovat, aby název byl unikátní. Poté již pouze stačilo najít potřebný soubor, změnit jej a v Sublime zakázat původní balíček a nově "vytvořený" povolit.

Ostatní soubory

Po rozbalení bylo ve složce více souborů, které se jmenovaly shodně jako balíček. Protože jsem kopii balíčku přejmenoval, bylo nutné přejmenovat i všechny soubory se shodným jménem.

Vlastní úprava

Původně soubor commands/import_use_command.py obsahoval tyto řádky. Je tedy seřazeno abecedně, což ale podle některých pravidel není správné.

uses.sort()
if get_setting("use_sort_length"):
    uses.sort(key = len)

Stačilo změnit tyto řádky a napsat si vlastní funkci na seřazení. A to je vše! Při aktualizaci balíčku autorem se již bohužel vlastní balíček neaktualizuje a pravděpodobně nepřijde ani žádná notifikace. Více o úpravě balíčků lze najít přímo na webu PackageControl.io.

if get_setting("use_sort_length"):
    uses.sort(key = len)
else:
    uses.sort(key = lambda s: s.replace('\\', ' ').lower())

Zkušenosti se Sublime Text a vlastními balíčky nebo úpravou existujících můžete sdílet v komentářích.

K tomuto článku již není možné přidávat další komentáře