Ve Vimu jsem si oblíbil šikovnou utilitu (plugin) Taglist, která s pomocí programu ctags umí pro editovaný soubor (či explicitně zvolené soubory) zobrazit postranní okno se seznamem (stromem) symbolů, které se v daným souborech vyskytují, jako je např. seznam modulů, typů, funkcí atd. Ostatně mrkněte na screenshoty. Usnadňuje to orientaci a přechod mezi jednotlivými soubory. Tento plugin podporuje celou řadu jazyků (kolem 40), mezi které patří např. C, C++, Python, PHP atd. Bohužel jazyk Haskell není podporován a nepodařilo se mně najít kompletní postup, jak tuto podporu přidat (pouze střípky z diskusí), proto v tomto příspěvku přináším kompletní návod, jak tuto podporu přidat.
Kompletní postup je následující:
- Stáhněte si zdrojové kódy programu ctags. Buď odtud, nebo, pokud používáte distribuci založenou na Debianu, tak použijte
`apt-get source exuberant-ctags`
(musíte mít ovšem v seznamu zdrojů proapt
odkazy na repozitáře se zdrojovými soubory, tj. kromědeb
tam musíte mít ideb-src
). Výhoda tohoto způsobu je ta, že se vám stáhnou zdrojové soubory daného programu a zároveň se automaticky provede patch změn, které do tohoto balíku přidává Debian. - Stáhněte si patch, který do tohoto programu přidává podporu pro jazyk Haskell (napsal Peter Strand). Neděste se toho, že tento patch je na jinou verzi
ctags
- funguje korektně i s poslední verzí (aktuálně 5.8). Aplikujte tento patch na stáhnuté zdrojové soubory programuctags
(`patch < ctags-5.5.4-haskell.diff`
- je ovšem třeba manuálně zadat cesty k souborů, které nebudou sedět). - Zkompilujte a nainstalujte tento program (
./configure
,make
a pod rootemmake install
- pokud vám budou chybět některé závilosti, tak je doinstalujte). Pokud ho již máte v systému nainstalovaný, tak originální verzi buď odstraňte, nebo vhodným nastavením $PATH zajistěte, aby se používala upravená verze programu. - Stáhněte si plugin Taglist a nainstalujte ho (rozbalením do
$HOME/.vim/
). - Stáhněte si můj patch, který do tohoto pluginu přidává podporu pro jazyk Haskell a aplikujte jej (
`patch < taglist-haskell-support.patch`
, se změnou cest k souborům). - Podle pokynů si tento plugin nastavte a vyzkoušejte - podpora pro jazyk Haskell by měla fungovat :).
Tento způsob je funkční, ale vzhledem k nutnosti patchovat ctags
trošku těžkopádný. Bohužel se mi nepodařilo přijít na jiné řešení. Pokud někdo víte o nějakém jiném, tak se prosím podělte o svou zkušenost v komentáři pod příspěvkem. Díky.