Emacs

Emacs on tekstieditorien perhe, jotka ovat lähtöisin tai saaneet inspiraatiota ensimmäisestä tämän nimisestä editorista. Keskeinen piirre on ohjelmoitava laajennettavuus.

Ensimmäisen Emacs kirjoitettiin TECO-tekstieditorin laajennuskielellä DEC PDP-10 ja PDP-11 -koneille 1970-luvun puolessavälissä. Ensimmäinen Emacs Unixille oli Gosling Emacs, josta tuli kaupallinen Unipress Emacs. GNU Emacsin kirjoitti Richard Stallman, joka oli alkuperäisen TECO Emacsin pääkehittäjä, ja se on edelleen ylläpidetty.

Emacs yhdessä Vi:n kanssa ovat kaksi suosittua klassista tekstieditoria, joita monet ohjelmoijat edelleen käyttävät.

Historia
Emacs periytyy TECO-editorin makrokokoelmista TECMAC ja TMACS, joista yhdistettiin EMACS (Editor MACroS) vuonna 1976. Ensimmäinen Emacs julkaistiin Incompatible Timesharing System (ITS) ja TOPS-20 (TWENEX) -käyttöjärjestelmille, jolloin se oli toteuttu PDP-10 assemblyllä. Samana vuonna ilmestyi Dan Weinrebin Lisp-kielellä tehty EINE (EINE Is Not EMACS).

TECO:sta tehtiin versio Multics-käyttöjärjestelmälle vuonna 1971. Vuoteen 1976 mennessä TECO:lle oli useita makropaketteja kuten TMACS ja TECMAC. Richard Stallman yhdisti makropaketit vuonna 1976, josta syntyi nimi EMACS.

1970- ja 1980-luvuilla julkaistiin Multics Emacs (1978) ja Gosling Emacs (1981). Multics Emacs oli kirjoitettu MacLispillä ja se myös käytti Lispiä laajennuskielenään. James Goslingin Gosling Emacs on kirjoitettu C:llä ja käyttää "Mocklisp"-kieltä laajennuskielenään.

Emacsista oli jo 1980-luvun alussa useita klooneja. Richard Stallman nimitti vuoden 1981 muistiossaan "AI Memo 519a" editoreja, jotka toteuttivat Emacsin toiminallisuuden vain pinnallisesti, kuten näppäinyhdistelmät, mutteivat laajennuskieltä, termillä "Ersatz EMACS" (korvike-Emacs).

Vuonna 1984 aloitettu GNU Emacs oli GNU-projektin ensimmäinen merkittävä ohjelma.
GNU Emacsista eriytyi vuonna 1991 XEmacs (aluksi nimellä Lucid Emacs).
XEmacsin kehitys oli pysähdyksissä vuosikymmenen, kunnes toukokuussa 2023 julkaistiin ensimmäinen beta-versio sitten vuoden 2013.

Microemacs (myös kirjoitettu uEmacs, tai MicroEMACS) on eräs muunnos, jonka kehitti Dave Conroy vuonna 1985 tai 1986 henkilökohtaiseen käyttöön. MicroEmacsin siirsivät Amigalle Steve Wilhite ja George Jones, jotka julkaisivat korjauksia public domainiin. Editori toimitettiin AmigaOS:n mukana nimellä MEmacs.
Kehitystä jatkoi Daniel M. Lawrence (1958–2010), joka julkaisi oman versionsa ilmaisohjelmana kieltäen kaupallisen käytön.
Linus Torvalds ylläpitää omaa MicroEmacsista muokattua versiota, joka perustuu Petri H. Kutvosen uEmacs/PK -versioon (joka pohjautuu Lawrencen versioon).
Eräs versio, jonka GNU hyväksyy vapaaksi ohjelmaksi, on Jasspa's MicroEmacs. Se perustuu Lawrencen Microemacsin versioon 3.8 vuodelta 1988. Ylläpitäjät Jon Green ja Steven Phillips saivat vuonna 2002 Lawrencelta luvan julkaista oma versionsa GPL:n alaisuudessa.
MicroEmacs on toteutettu C-kielellä ja ei ole yhteensopiva muiden Emacsien kanssa nimestä huolimatta: MicroEmacsissa on samankaltaisuuksia Gosling EMACSiin, mutta muun muassa komennot ja avainsanat eroavat.

JOVE (Jonathan's Own Version of Emacs) on Jonathan Paynen versio Emacsista ilman Lispiä.

Emacs-editorit

Muunnelmia 
Emacsista on useita muunnelmia. Näitä on luetteloitu Craig Finsethin ylläpitämässä Usenet FAQ:issa Emacs implementations, list of, regular post [long, FAQ], joka tuntee muunnelmia yli sata kappaletta.

GNU Emacsin muunnelmia ovat Aquamacs, Demacs, OEmacs, NTEmacs, Emacs For Mac OS X, Emacs for NeXTstep, Epoch, Meadow, MULE, TkEmacs, XfEmacs, Treemacs, Win-Emacs ja Leif. XEmacsin (joka perustuu GNU Emacsiin) muunnelmia ovat SXEmacs, InfoDock.

 Anthony's Editor (ae)
 Atto (Emacs-tyyppinen editori toteutettuna 2000 rivillä C-kieltä, perustuen Anthony's Editoriin)
 e (Jef Poskanzer, www.acme.com/software/e/ )
 MG (ennen MicroGnuEmacs), perustuu Dave Conroyn PD-versioon
 Barry's Emacs, James Goslingin lähdekoodiin perustuva, jota kehitettiin sisäisesti DEC:illä vuodesta 1980, kunnes Barry Scott julkaisi ohjelman vuonna 1994.
 JOVE (Jonathan's Own Version of Emacs)
 MINCE (MINCE Is Not Complete Emacs)
 Zile (Zile is Lossy Emacs)
 EINE (EINE is not Emacs), ZWEI (Zwei Was Eine), Lisp-koneille josta kehittyivät Zmacs, SINE, TV

Emacs-emulaatio 
Useissa muissa editoreissa on emulaatiotila Emacsin kaltaiselle toiminnalle:
 JOE
 JED
 Eclipse
 IntelliJ Idea

Tunnettuja Emacsin käyttäjiä 
 Donald Knuth
 Eric S. Raymond
 Richard M. Stallman

Lähteet

Aiheesta muualla 

 Emacs-opas Linux.fi-wikissä
 Multics Emacs: The History, Design and Implementation 
 https://www.emacswiki.org/emacs/EmacsImplementations
 Emacs implementations, list of, regular post [long, FAQ