GNU Emacs

GNU Emacs (IPA: ) on Emacs-perheeseen kuuluva tekstieditori, jonka on aloittanut GNU-projektin aloittaja Richard Stallman.

Aivan ydintä lukuun ottamatta Emacs on kirjoitettu Emacs Lisp -ohjelmointikielellä, ja samaa kieltä voi käyttää editorin muokkaamiseen ja laajentamiseen käyttäjän tarpeiden mukaan. Emacs Lisp on Lisp-murre.

GNU Emacsin kehitystä käytetään esimerkkinä "katedraalimallista" Eric S. Raymondin kirjassa The Cathedral and the Bazaar.

GNU Emacsista periytyy muun muassa XEmacs.

Historia
GNU Emacsin tunnetuin kehittäjä on GNU-projektin alullepanija Richard M. Stallman.
Stallman lisäsi TECO-editoriin ensin perin mahdollisuuden määritellä uusia kahden näppäimen yhdistelmiä ("makroja") viittaamaan tiettyihin komentoriveihin sekä mahdollisuuden tallentaa nämä makrot tiedostoon myös jatkossa käytettäviksi. Tästä seurasi ongelma, että jokainen käyttäjä teki omat makronsa niin, etteivät muut voineet käyttää samaa ohjelmaa opettelematta ensin hyvän aikaa komentoja. Kaksi vuotta myöhemmin AI Labin työntekijä Guy Steele sai idean alkaa koota yhteenvetoa neljästä eri makropaketista. Stallman innostui tästä ja otti homman tehtäväkseen. Tässä vaiheessa projektin nimeksi tuli Emacs (lyhenne sanoista "editing macros"). Nimenvalintaan vaikutti, ettei ITS:ssä (PDP-tietokoneen käyttöjärjestelmä) ollut muita e-kirjaimella alkavia ohjelmia, joten ohjelmaan voitiin viitata pelkällä alkukirjaimella. Jotta ohjelman idea käyttäjän itsensä ohjelmoitavana sovelluksena ei kärsisi, vakiomakrot päätettiin rajoittaa perustason editointikomentoihin.Sam Williams - Free as in Freedom, O'Reilly, 2002, sivut 82-86

Lähdekoodiin lisättiin vaatimus, että muutettava koodi on palautettava ohjelmaa muokkaavaan yhteisöön, jotta eriytymisongelma ei palaisi. Tämä ei estänyt forkkausten syntymistä. Emacsista tuli varhainen malliesimerkki sentyyppiselle projektille mitä vapaiden ohjelmistojen parissa nähtiin usein myöhemmin: käyttäjät eri puolelta maailmaa tekevät lisäyksiä samaan ohjelmaan jonkinlaisena yhteisönä.

Aloitettuaan GNU-projektin Stallman pyrki ensin tekemään C-kääntäjän, mutta lopulta GNU Emacs oli GNU-projektin ensimmäinen valmistunut ohjelma ja se julkaistiin vuonna 1985. Alun perin sen koodin piti pohjautua aiempiin Emacseihin, mutta tekijänoikeusongelmiin törmäämisen jälkeen se kirjoitettiin lopulta kokonaan uusiksi Lisp-tulkkeineen päivineen. GNU Emacs oli myös ensimmäinen ohjelma, jossa Stallman kokeili omaa lisenssiään, joka myöhemmin johti GPL-lisenssin syntyyn. Lisenssi oli aluksi Emacsin mukaan nimetty ja siihen sisältyi vaatimus, että kaikki muutokset lähetetään ohjelman kehittäjälle tarkastettavaksi. Tätä vaatimusta Stallman piti kuitenkin virheenä, joka pakottaa keskitettyyn kehitysmalliin ja liialliseen valvontaan, joten hän poisti sen myöhemmistä versioista.

Näppäimistökomennot

Emacs käyttää suurta määrää näppäimistön kontrolleja. Eräs vitsi kertoo ohjelman nimen tulevan sanoista "Escape Meta Alt Control Shift". Meta-näppäintä ei ole PC-näppäimistössä vaan sen tilalla on Alt. Metan sijaan voi painaa Esc-näppäintä ja sen jälkeen näppäintä, joka tulisi painaan metan kanssa.

Emacsin näppäinyhdistelmät ilmoitetaan yleensä muodossa esim. C-x C-f (Control+x, Control+f) avaa tiedoston tai Dired-tiedostonhallintaohjelman hakemistoa avattaessa. M-x (Meta + x) käynnistää komennon execute-extended-command, johon voi syöttää Emacsin komennon. Yleensä myös nuolinäppäimillä voi siirtää kursoria. Jos käytössä on graafinen käyttöliittymä, pystyy käyttämään myös hiirtä kursorin liikuttamiseen ja tekstin valitsemiseen.

GNU Emacsin oman interaktiivisen oppaan saa auki avaamalla Emacsin ja painamalla ensin näppäinyhdistelmän  ja sitten näppäilemällä vielä . Vaihtoehtoisesti voi valita myös kohdan "Tutorial" GNU Emacsin aloitusnäytöltä.

  C-a	siirtää kursorin rivin alkuun
  C-e	siirtää kursorin rivin loppuun
  C-f   siirtää kursorin yhden kirjaimen eteenpäin
  C-b   siirtää kursorin yhden kirjaimen taaksepäin
  M-f   siirtää kursorin yhden sanan eteenpäin
  M-b   siirtää kursorin yhden sanan taaksepäin
  M-<   siirtyy puskurin alkuun
  M->   siirtyy puskurin loppuun
  C-s   etsii tekstiä
  C-x C-s	tallentaa puskurin tiedostoon
  C-x C-w	tallentaa puskurin uudella nimellä
  C-x C-f	avaa tiedoston käsiteltäväksi (tai käynnistää Diredin)
  C-x C-c	sulkee Emacsin
  C-x b		vaihtaa toiseen puskuriin
  C-x C-b	listaa avoimet puskurit
  C-g		peruuttaa toiminnon
  C-x 2		jakaa ikkunan kahtia
  C-x 1		sulkee toiset ikkunat
  C-h ?		kertoo kuinka GNU Emacsin aputoiminto toimii

Ominaisuudet

Emacs sisältää suuren määrän paketteja, jotka laajentavat sen toiminnallisuutta. Lisää paketteja voi asentaa Emacsin paketinhallintaohjelman avulla, jonka pystyy avaamaan käyttämällä M-x list-packages komentoa.
Jo 1980-luvulta ovat peräisin sähköpostiohjelmat RMAIL, BABYL, mutta Emacs sisältää myös hieman uudemman sähköpostiohjelman nimeltään GNUS.https://www.gnu.org/software/emacs/manual/html_node/gnus/index.html https://www.emacswiki.org/emacs/GnusTutorial  DIRED on Emacsin tiedostonhallintaohjelma. INFO lukee GNU:n Texinfo-hypertekstidokumentteja.

GNU Emacsin nykyisissä versioissa on mukana suuri määrä pelejä ja demoja, kuten Hanoin tornit, 5x5, blackbox, bubbles, gomoku, Game of Life, erakkopeli, pong, matopeli (M-x snake) ja tetris, sekä tekstiseikkailupeli (M-x dunnet). Lisäksi Emacs sisältää Eliza-tyylisen keskustelubotin (M-x doctor).https://www.masteringemacs.org/article/fun-games-in-emacs 

 Triviaa 
Myöhemmin Stallman on luonut humoristisen "The Church of Emacs" -meemin. Hän saattaa joskus puheita antaessaan pukeutua "Pyhäksi Ignuciukseksi", joka on Chruch of Emacsin saarnamies. Ignuciuksen opetuksiin kuuluu, että joskus Emacsin kilpailijana nähdyn Vim-editorin käyttö ei ole syntiä (sehän on Stallmanin ajatusten mukaisesti vapaa ohjelma) vaan katumusharjoitus.

Emacsiin on saatavilla niin kutsuttu "evil mode", joka muuttaa Emacsin Vim-editorin kaltaiseksi.

 Lähteet 

 Aiheesta muualla 

 Emacs-opas Linux.fi-wikissä
 GNU Emacs -ohjekirja 
 GNU Emacs esittelykierros 
 Emacs Lisp opas 
 Emacs Rocks! -videosarja 
 Emacs Wiki 

Luokka:GNU-projektin ohjelmat
Luokka:Linux-ohjelmat
Luokka:Emacs
Luokka:Vapaat ohjelmistot