Latte – Vim syntax highlighter
- MaJJ
- Člen | 18
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ě. :)
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:
- FontAndColors.xml
- LatteSample.latte
- LatteSyntax.java
- LatteLexer.java
- LatteTokenId.java
- LatteTopLexer.java
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)
- Jan Tvrdík
- Nette guru | 2595
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.
- kravčo
- Člen | 721
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
MaJJ: budu rad, kdyz reknes, kam jsi az dosel. (Mac)Vim stale pouzivam; onehda jsem o nem mel i prednasku O: )
- MaJJ
- Člen | 18
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
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
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
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)
- yogiman321
- Člen | 11
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
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 :)