Kada sam, pre par godina, počeo tek da ulazim u vode programiranja, bile su mi zabavne rasprave i ratovi koji se vodili oko tekst editora među programerima. Zabavne, ne kao kada čuješ dobar vic, ili pogledaš nešto što te nasmeje i oraspoloži, nego zabavno kao “vidi ove čudake, ne razumem ih najbolje, ali vidim da nešto pene i urlaju”. I onda sam, ne tako davno, u jednom trenutku uhvatio sebe da sam srećan što radim baš u tom i tom editoru, te kako planiram u slobodne vreme da ga još podešavam i sređujem, a ispod oka, podozrivo gledam druge alatke. Da, uvukla me sekta u svoje redove.
Tekst editori su programi pomoću kojih, pa, editujete tekst. I to u “čistim”, neformatiranim znakovima, za razliku od “obogaćenih text editora” (rich text editors), poput Microsoft Word-a (Majkrosoft Vorda), Open Office-a (Open Ofisa), Libre Office-a (Libre Ofisa ), itd. Za programiranje, tekst editori imaju dodatne funkcionalnosti, poput bojenja ključnih reči nekog programskog jezika, dovršavanja započetog imena funkcije, pretrage fajla i projekta, olakšanog kretanja kroz delove programerskog projekta i slično. Nasuprot njih stoje IDE (integrated development environment) aplikacije specijalizovane za programiranje, često za određene, konkretne programske jezike, koje nude, pored samog editovanje teksta, takođe i dodatne usluge kompajliranja koda, pronalaženja grešaka, raznovrsnih naprednijih funkcionalnosti koje programeru trebaju da olakšaju posao. I one se uglavnom plaćaju, dok se bazični tekst editori uglavnom mogu koristiti besplatno (Vim, Emacs, VS Code, Bracket, itd). Ali ne samo to. Određeni tekst editori su razvijani sa određenom filozofijom na umu, odnosno sa određenim pogledom na svet, o tome kako nešto treba da funkcioniše da bi se smatralo dobro organizovanim i lepim (npr. UNIX filozofija po kojoj neki program treba da radi samo jednu stvar i to dobro, bez potrebe za dodatnim funkcionalnostima). Neki tekst editori, pak, imaju celu istoriju i politiku iza sebe, poput Emacs-a, čiji korisnici često koriste Emacs kao podlogu na kojoj u celini grade svoje celodnevno korištenje računara (pa u njemu pored editovanja teksta, proveravaju mejlove, surfuju netom, manipulišu fajlovima, slušaju muziku i slično).
Moj prvi tekst editor bio je Sublime (Sablajm). Iskustvo sa njim bilo mi je dobro, radio je sve što mi je u tom trenutku trebalo, a one stvari koje nije mogao da radi, ili za koje bi bio potreban dodatni napor da prorade - tih stvari u suštini nisam bio ni svestan. Svakako mi je na početku glava bila dovoljno opterećena učenjem programerskih koncepata, da mi dodatno razbijanje glave o naprednim mogućnostima editora, nije bilo potrebno. Nakon Sublime-a, na red je došao VS Code (ViEs Kod), odnosno VS Codium (ViEs Kodijum). Zadnjih godina, Majkrosoft korporacija (evilcorp) sve više učestvuje u open sours (open source) projektima i ona stoji iza trenutno najpopularnijeg tekst editora na svetu - VS Code-a. U jednom trenutku osetio sam se zasićenim od Sublime-a, trebala mi je neka promena i tu je upao VS Code, koji me je kupio podrškom za Angular i Tajpskript (Typescript). Uskoro sam saznao da postoji i VS Codium, verzija VS Code-a koja je oslobođena od Majkrosoftovih dodataka (telemetrije) koji šalju podatke Majkrosoftu o korištenju njihovog programa, odnosno špijuniraju korisnike VS Code-a, te sam se odmah prebacio na nju.
A onda su, pre neke dve godine stvari postale malo komplikovanije. I dalje sam imao potrebu da isprobam nešto novo, po mogućnosti neki tekst editor koji će biti više baziran na korištenju tastature, a manje na korištenju miša. Razni ljudi su govorili kako se na taj način ubrzavaš, kako kodiranje lakše prati tok misli i slično. Uzimajući u obzir moju staru naklonost ka, khm, eksperimentalnom idealizmu, Emacs (Imaks) je delovao kao logičan sledeći korak. Skoro 40 godina star tekst editor, istorijski artefakt koji se nalazio na samom početku pokreta za slobodni softver, a koji je i dan danas potpuno fleksibilan za menjanje, hakerisanje i unapređivanje, plus sve u njemu može da se radi preko tastature i kombinacije pritisaka određenih tastera. Plus tu je i Emacs Lisp, (blago hendikepirani) dijalekt cenjene familije LISP programskih jezika, pomoću koga se Emacs pretvara u LISP mašinu koja može da se koristi za sve, od igle do lokomotive. Sve je to zvučalo primamljivo, ali kada sam ga prvi put isprobao, iskustvo je bilo frustrirajuće. Pošto je Emacs star nekoliko decenija, u vreme kada je pravljen nisu uopšte postojale danas uobičajene prečice na tastaturi, poput Ctrl + c, za kopiranje dela teksta, ili Ctrl + v, za pejstovanje teksta. Zatim, kako uraditi Undo, kako selektovati uopšte tekst koji hoću da kopiram? Pokušavao sam da uradim bazične stvari i nije išlo. Verovatno nije pomoglo ni to što nisam prošao kroz dokumentaciju.
No, uvek dobitna kombinacija tvrdoglavosti i radoznalosti pokazala se i ovde uspešnom. Prvo sam prešao na Spacemacs (Spejsmaks), koji je Emacs distribucija sa već spremljenom konfiguracijom, koja olakšava korištenje Emacs-a. Tu sam recimo shvatio da mogu da koristim različite modove za različite stvari, pa tako CUA mod obezbeđuje danas standardne načine kopiranja i pejstovanja teksta u editoru. Ovde sam počeo da se navikavam na bafere, kretanje kroz Emacs, standardne prečice pomoću tastera, dodavanje novih paketa i slično. Takođe sam naučio da postoji i LSP (language server protocol), koje je VS Code razvio za svoje potrebe, a koje su slobodne za korištenje, te takođe adaptirane za Emacs. Pomoću njih se lako dobija funcionalnost IDE aplikacija, automatsko učitavanje biblioteka, popunjavanje koda, menjanje koda u celom projektu i slično. Plus još nepregledno more paketa razvijanih zadnjih 40 godina. Počeo sam da se navlačim. Nešto kasnije sam krenuo da pravim svoju konfiguraciju (vanila, tj Emacs od nule) i to je bilo dobro, mogao sam da podešavam stvari kako mi odgovaraju, ali vizuelno mi je uvek nešto nedostajalo da sve izgleda skroz kako treba. Plus još nisam ozbiljno počeo da koristim Elisp. Na kraju sam probao Doom Emacs (Dum Imaks) konfiguraciju i evo me još u njoj, upravo pišem ovaj tekst. Autor ove konfiguracije Henrik Lisner (Henrik Lissner), uradio je odličan posao u modernizaciji izgleda i funkcionalnosti Emacsa, približavajući ga mlađim generacijama i modernom dobu.
Mislim da ću svakako napraviti poseban post o osnovama korištenja Doom Emacs-a, a verujem i da ću generalno ovde pisati o različitim Emacs paketima koje koristim. Još samo malo da se opustim na novom poslu i u novom gradu, pa da kroz par meseci ponovo krenem da gradim svoju konfiguraciju od nule, jer zabava, jer menjanje, jer stvaranje.
Dakle, sekta.
Last modified on 2021-05-31