Formiko - yet another reStructured and Markdown editor

Napsal jsem další editor, specializovaných přímo na reStructuredText a Markdown v Pythonu, v GTK+3. Co mě k tomu vedlo, a jaký je výsledek se pokusím sepsat v následujícím článku, který může být považován za první oficiální představení tohoto nového editoru.

Proč další editor, je jich málo?

Vždy jich může být víc. A zrovna Formiko může být ten pravý pro Vás. Místo toho, abych zde ale psal, proč je Formiko ten nejlepší editor na světě, raději popíšu co mě k tomu vedlo.

Editor je psán v Pythonu, v GTK+ 3. Díky tomu jsem si vyzkoušel jak se píší aplikace pro GTK+ v Pythonu novým způsobem, tedy s PyGObject. A mohl jsem se tak pořádně seznámit s novými technikami tvorby aplikací v GTK+. Byla to zejména práce s Gtk.Application, Gtk.WindowApplication, Gtk.HeaderBar, Gio.Menu a především s Gio.Action. Díky všem těmto zmíněným komponentám je aplikace "moderní" v tom smyslu, že zapadá do nového stylu a vzhledu ostatních GTK+ resp. GNOME aplikací.

Vedle těchto celkem běžných stavebních kamenů GTK+ knihovny, jsem se jakožto uživatel Vim editoru pokoušel o integraci editoru přímo do aplikace, což se mi podařilo.

Co mi nevyhovovalo na ostatních editorech

Před tím, než jsem začal psát vlastní editor, jsem psal text ve Vim editoru. Ano je to mocný editor, zvlášť pokud v něm jeden píše denně. A i když jeho ovládání může vypadat jako boj s chobotnicí, časem se lze naučit ohromná kouzla. Navíc je to editor, který lze pustit vzdáleně na serveru i bez grafického rozhraní. Nechci zde chválit samotný Vim, prostě mě, stejně jako obrovskému počtu dalších jedinců vyhovuje. Problém při psaní textu ve značkovacím jazyce ale je, že chybí okamžitý náhled vygenerovaného HTML (či jiného formátu). Proto jsem sáhl po editoru ReText. Ten je psaný v QT, což mě osobně nevadí, mám GTK+ rád, i jako vývojář, ale fanatik nejsem. Na editoru mě ale vadilo několik věcí:
  • absence mého oblíbeného editoru (i třeba Vim zkratek)

  • nemožnost nastavit vertikální rozdělení editoru (nakonec jej ale stejně nepoužívám)

  • absence dalších HTML generátorů (bude vysvětleno později).

Začal jsem tedy zkoušet vytvořit něco vlastního. Protože docutils znám i jako programátor, vím že je snadné jej použít. A že lze snadno rozšířit v podobě parserů například o Markdown.

Formiko - editační režim s GtkSourceView editorem

Formiko - editační režim s GtkSourceView editorem.

Co tedy Formiko umí

Formiko je tedy grafický editor, který lze pustit ve třech režimech, jenž se ovládají parametrem v příkazové řádce:

  • Standardní ediční režim, kdy je aplikace rozdělena na editor (GtkSourceView) a prohlížeč vygenerovaného HTML (Webkit).

  • Editační režim Vim. Spouští se s parametrem -v. V takovém případě je použit jako editor grafický Vim kompilovaný pro GTK+. Renderování HTML má v takovém případě o něco horší odezvy, způsobené komunikací mezi Vim serverem a Vim klientem.

  • Náhledový režim. Spouští se s parametrem -p SOUBOR. Aplikace je pak tvořena jen prohlížečem HTML, který periodicky kontroluje soubor, a při jeho změně je HTML vygenerováno znovu.

Formiko - editační režim s Vim editorem

Formiko - editační režim s Vim editorem.

V současném stavu podporuje Formiko standardní docutils parsery i generátory HTML. Umí také používat Tiny HTML writer, Yet another HTML writer a HTML 5 writer. Parsovat umí zatím jen RST soubory a Markdown soubory díky Common Mark parser. Vzhledem k tomu, že to hlavní na editoru je prohlížeč, umí také tímto způsobem zobrazovat, resp. editovat HTML soubory.

Možnosti

Editor žádné zvláštní, vlastně ani standardní nastavení zatím nemá. Lze nastavit vertikální nebo horizontální rozvržení. Stran generování HTML lze vynutit parser nebo zvolit generátor (writer). A nakonec lze nastavit vlastní styl, který má generátor použít. Aplikace si pamatuje naposledy nastavené rozměry okna. Standardní editor používá zvýrazňování syntaxe. Pokud je použit Vim jako editor, vše co umí a jak je nastavený se projeví. Prohlížeč je zarolován na pozici kurzoru v editoru, alespoň pokud je to jen trochu možné, ne vždy to ale dopadne správně. To je vše. Pokud bude aplikace používaná, je možné že další nastavení přibudou dle požadavků.

Formiko - režim náhledu

Formiko - režim náhledu.

Proč reStructuredText ?

Podpora právě reStructuredTextu má právě dva důvody. V prvním případě Formiko používá právě docutils k parsování a následnému generování HTML. Tedy RST je podporováno nativně. Druhým důvodem je používání RST v Pythonu coby standard pro psaní dokumentace. A upřímně řečeno, mě přijde dostatečně bohatý na množství formátovacích technik. Nakonec i tento text je psán právě v RST, a HTML je z něj generováno až na serveru.

Editor lze instalovat standardním Pythoním způsobem přes pip, nebo ze zdrojových souborů python setup.py install, nebo ze zdrojových souborů na GitHubu Je napsán pro Python 2.7 i 3. GTK+ knihovny včetně GtkSourceView a Webkitu je třeba doinstalovat samostatně stejně jako PyGObject. Ty ale budete mít pravděpodobně již v systému, zejména pokud používáte GNOME. Na MacOS ani ve Windows jsem editor zatím nezkoušel, nicméně i tam by měl fungovat za předpokladu, že bude mít všechny všechny knihovny k dispozici.

Autor:

Discussion

Your comment:

© 2024 Ondřej Tůma McBig. Ondřej Tůma | Based on: Morias | Twitter: mcbig_cz | RSS: články, twitter