Latte – Vim syntax highlighter

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MaJJ
Člen | 18
+
0
-

Vim nemá podporu pro Latte (surprise surprise), což mě vedlo k myšlence aspoň tímhle se nějak přičinit. Nevím, kolik lidí dělá Nette ve Vimu, ale aspoň kvůli sobě. :)

Zdrojový kód na Githubu

EDIT: přidán odkaz, přeškrtnuto už-nepodstatné

" Rychlý hack do .vimrc

" Vim začne brát .latte a .phtml soubory jako PHP, takže začne
" správně highlightovat PHP, HTML, CSS, JS.

au BufNewFile,BufRead *.latte set filetype=php
au BufNewFile,BufRead *.phtml set filetype=php

Ještě ale zbývá Latte syntaxe. Na tu se chci vrhnout, zkoumám Vim dokumentaci a tak.
Díval jsem se, jak highlightuje NetBeans plugin, a našel jsem tyhle soubory:

Nevíte někdo o něčem jednodušším? Možná highlighter pro PSPad nebo SublimeText 2? Něco bez kompletního lexeru? :D

Případně, dovedete mě nasměrovat k nějakým „definicím“? Něco, kde bude jasně dané, že když to je n:*, je to Latte atribut, když to je něco jako {[^ ].*}, je to Latte makro, a podobně? :)

Editoval MaJJ (11. 3. 2012 15:56)

hrach
Člen | 1834
+
0
-

Nejlepší bude upravit smarty. To bych očekával, že už někde bude. Já v PHPedu používám Smarty zvýraznovanjí a naprosto v poradku :)

MaJJ
Člen | 18
+
0
-

Díky za nápad. Jak na tom je Vim se Smarty, prozkoumám.
BTW, co ty n:makra? Smarty má taky něco takového, nebo na ně jen kašleš a nezvýrazňuješ je odlišně od jiných atributů? :)

Jan Tvrdík
Nette guru | 2595
+
0
-

MaJJ wrote:

BTW, co ty n:makra? Smarty má taky něco takového, nebo na ně jen kašleš a nezvýrazňuješ je odlišně od jiných atributů? :)

Hrach nic nezvýrazňuje. To dělá editor. A ten na n:makra kašle.

hrach
Člen | 1834
+
0
-

Nezvýraznuji je. A kdyz nad tím premyslim, ani nechci, už by to byly uplny omalovanky. :)

kravčo
Člen | 721
+
0
-

Podľa mňa síce má zmysel n:atribúty zvýrazňovať, ale podstatnejšie je, že ich obsah treba určite zvýrazňovať úplne inak ako v prípade klasických atribútov.

<a href="{link $dest}">a</a>
<a n:href="{$dest}">b</a> {* <-- chyba *}

Možno by šlo na n:atribúty využiť nejakú časť XML lexeru, majú predsa rovnakú syntax ako XML namespace.

Vitek Jezek
hledá kolegy | 285
+
0
-

MaJJ: budu rad, kdyz reknes, kam jsi az dosel. (Mac)Vim stale pouzivam; onehda jsem o nem mel i prednasku O: )

MaJJ
Člen | 18
+
0
-

Pro všechny:

Tak jsem něco zplodil, viz github. Na první verzi to je myslím docela funkční:

Akorát je třeba pár věcí rozhodnout:

  • Má si to hlídat, co dává smysl napsat a co je chyba? (kravčo, je tohle to, cos měl na mysli? Jinak jsem Tě nejspíš nepochopil.) Třeba teď si to vůbec nehlídá, co napíšu dovnitř {macra} – zvýrazní to cokoliv. Můžu vyjmenovat, které „keywords“ tomu povolím, ale to už bude chtít složitější zápis. Vim-uživatelé, budete to chtít, nebo to stačí tak, jak to je teď, prostě jen troška zvýraznění?
  • Má to rozlišovat věci jako Presenter:action, ve smyslu vykreslit „Presenter“ a „action“ jinačí barvou než „:“? Viz screenshot.
  • Měly by se nějak barevně rozlišit #bloky a $proměnné? Momentálně jsem to oboje nastavil jako Identifier, ale můžu to změnit.

Napadá vás ještě něco? Kdyžtak se vyjádřete k tomu screenshotu, co byste si tam představovali jinak.

Vitek Jezek napsal(a):

MaJJ: budu rad, kdyz reknes, kam jsi az dosel. (Mac)Vim stale pouzivam; onehda jsem o nem mel i prednasku O: )

Wow! Moc pěkný. Zkoumám Tvůj .vim[rc] :) Já jsem trochu skromnější (doufám, že tam není nic usvědčujícího :D )

Vitek Jezek
hledá kolegy | 285
+
0
-

stahnul jsem si to (bylo treba pres https://github.com/…im-latte.git; git://github.com/Janiczek/vim-latte.git mi hazi error fatal: The remote end hung up unexpectedly, mozna bych to zmenil v navodu O: ).

Kazdopadne jeste je dobre vedet, ze to chce odstranit nasledujici radky z puvodniho .vimrc : D

au BufRead,BufNewFile *.latte set filetype=html
au BufRead,BufNewFile *.phtml set filetype=html

Mel bych jedinou pripominku – kdyz jsem pouzival prave filetype=html tak se pekne obarvovalo i CSSko. Neslo by to udelat i tady? : ) Jinak pekna prace; jsem rad, ze nejsem jediny Vimista v Nette komunite ; )

MaJJ
Člen | 18
+
0
-

Vitek Jezek napsal(a):

stahnul jsem si to (bylo treba pres https://github.com/…im-latte.git; git://github.com/Janiczek/vim-latte.git mi hazi error fatal: The remote end hung up unexpectedly, mozna bych to zmenil v navodu O: ).

Kazdopadne jeste je dobre vedet, ze to chce odstranit nasledujici radky z puvodniho .vimrc : D

au BufRead,BufNewFile *.latte set filetype=html
au BufRead,BufNewFile *.phtml set filetype=html

Mel bych jedinou pripominku – kdyz jsem pouzival prave filetype=html tak se pekne obarvovalo i CSSko. Neslo by to udelat i tady? : ) Jinak pekna prace; jsem rad, ze nejsem jediny Vimista v Nette komunite ; )

Ano ano, ty původní dva řádky bude chtít smazat … :) To bylo jen tak narychlo, aby se v těch latte souborech obarvovalo aspoň něco :)

Dík za opravu v tom instalačním návodu. Nevyzkoušel jsem si to. Už tam je https.

A taky jsem si nevyzkoušel to highlightování PHP, JS a CSS! Nefunguje to, kruci :) Momentálně updatuju testovací latte soubor a budu zkoumat, jak to všecko pospojovat, aby se v *.latte barvilo všecko. Momentálně to je „failing test“.

Dík! (PS, taky jsem rád že nejsem jediný :D )

MaJJ
Člen | 18
+
0
-

Jenom rychlá zmínka: ono to fungovalo, ale pak jsem ve svém souboru redefinoval dvě definice ze souboru s HTML definicí, a … v tu chvíli se to začalo kazit. :) Když to zakomentuju, funguje to dobře, až na to, že mi nefungují n:atributy a makra uvnitř HTML stringů. Dělám na tom.

EDIT:
obětoval jsem vybarvení n:atributu (vnitřek se vybarvuje i nadále) – teď se tedy vybarvuje inline CSS a JS. Viz screenshot:

EDIT 2:
všiml jsem si, že styl z HTML highlighteru přebíjí ty moje makra u vnitřku <a> odkazů (háže je na fialovo). Přidal jsem si to do TODO, pak se na to zas vrhnu :)

Editoval MaJJ (12. 3. 2012 9:52)

Simpliplant
Člen | 1
+
0
-

dik, super praca :)

yogiman321
Člen | 11
+
0
-

Ešte malý tip pre vylepšenie. Aby fungovalo aj doplňovanie html a php snippetov (u mňa UltiSnips), tak som v súbore ftdetect/latte.vim zmenil 2 riadky z:

autocmd BufNewFile,BufRead *.latte set filetype=latte
autocmd BufNewFile,BufRead *.phtml set filetype=latte

na toto:

autocmd BufNewFile,BufRead *.latte set filetype=latte.php.html
autocmd BufNewFile,BufRead *.phtml set filetype=latte.php.html

Nič menej, ešte som netestoval či fungujú všetké funkcie, ale doplňovanie mi ide.
Vďaka za zvýrazňovanie syntaxe do VIM. Použivám Nette a som spokojný :)

Editoval yogiman321 (25. 10. 2012 17:30)

MaJJ
Člen | 18
+
0
-

Diky! Vypada to, ze tohle nic „nerozbilo“ – takze to tam pridavam. :)

yogiman321 napsal(a):

Este maly tip pre vylepsenie. Aby fungovalo aj doplnovanie html a php snippetov (u mna UltiSnips), tak som v subore ftdetect/latte.vim zmenil 2 riadky z:

autocmd BufNewFile,BufRead *.latte set filetype=latte
autocmd BufNewFile,BufRead *.phtml set filetype=latte

na toto:

autocmd BufNewFile,BufRead *.latte set filetype=latte.php.html
autocmd BufNewFile,BufRead *.phtml set filetype=latte.php.html

Nic menej, este som netestoval ci funguju vsetke funkcie, ale doplnovanie mi ide.
Vdaka za zvyraznovanie syntaxe do VIM. Pouzivam Nette a som spokojny :)