nXhtml-mode v Emacsu (jak na něho na Gentoo)

Obrázek uživatele benzin@jabber.cz
Vložil benzin@jabber.cz, Po, 2007-11-12 17:34 :: | | | |

Po té co sem před několika dny oběvil projekt nXML, který velmi dobře nahrazuje již lehce zastaralý PSGML se mi povedlo nalézti také, jeden docela vyvedený port Emacsu na Windows EmacsW32 no a tam sem se dočetl, že existuje projekt nXhtml, který rozšiřuje schopnosti nXML o lepší podporu HTML. Samozřejmě různých HTML módů pro Emacs je spousty, ale tenhle je něčím výjmečný. Je primárně navržen, tak aby fungoval jako "multi major modes", což znamená, že v jednom bufferu můžete mít více než jeden majoritní mod. To sem se s menším úspěchem již před nějakou dobou snažil rozchodit pro editaci JSP.

No tak sem se vrhl do toho, protože port na Windows tyhle projkety má, je nemyslitelné, abych to nedostal i do svého Gentoo. Bohužel se ukázalo, že to nebude tak snadné. Ve standartním portage totiž není nXhtml přístupné. Proto je potřeba použít emacs-overlay. Tady na pár řádcích napíšu jak vlastně na to.

Nejprve je potřeba naistalovat balíček layman, který umožňuje pracovat s overlay a zkonfigufovat ho
# emerge layman
# echo "source /usr/portage/local/layman/make.conf" >>/etc/make.conf

Pak už stačí stáhnout stromy z overlay (překrytí). První je překrytí Emacsu a druhý je překrití nějakých komunikačních knihoven, je to potřeba protože nXhtml závisí na balíku "net-misc/ftpsync", který se v standartním portage nevyskytuje.
# layman -a emacs
# layman -a flameeyes-overlay
Pokud vám layman napíše ze emacs, nebo flameeyes-overlay neexistuje, tak místo -a napište -s a pak znovu -a. Pro flameeyes-overlay je potřeba mít nainstalovaný balík dev-util/git, ale to vás již layman povede.

Pro nainstalování nXhtml je potrřeba odmaskovat několik balíků, ale to vás již portage povede. Teda úplně ze startu mustíte odmaskovat samotný balík nxhtml-mode (ukázka pro architekturu amd64, jinak použijte např. x86)
# echo "app-emacs/nxhtml-mode ~amd64" >> /etc/portage/package.keywords"

No a nakonec již jen poslední krok. Nevím přesně jak funguje gentoo-site.el, ale každopádně se do ní balík nXhtml nedostane, takže sem zvolil uživatelské načtení v souboru ~/.emacs (p.s. já ještě díky XEmacsu, používám strukturu .init.el a .custom.el pro rozdělení vecí, které píšu ručně a které jsou automaticky generovány pomocí např. customize-variable). Takže do souboru ~/.emacs (v mém případě .init.el) přidejte následující řádek:
(load "/usr/share/emacs/site-lisp/nxhtml-mode/nxml-nxhtml-autostart" nil t)

No a posledním úkolem je nastavení modulu pro danou příponu, to ale udělejte až ve chvíli, kdyže se automaticky nenačte. Např. pro JSP se automaticky nenačte:
(setq auto-mode-alist
    (append '(("\\.jsp$" . mumamo-mode)
   ) auto-mode-alist))

mumamo-mode vás může trochu překvapit, ale jedná se o multimod, v rámci kterého se spusti nXhtml, samotný nXhtml jde spustit pomocí nxhtml-mode.

Ještě sem při pročítání zdrojáků narazil na nxhtml-part-mode, ale ten sem jaksi nerozchodil.