Emacs

**Emacs** (IPA: ) 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. 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&ndash;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 Initially*), Lisp-koneille josta kehittyivät Zmacs, SINE, TV
* Lem (kehitteillä oleva Common Lisp-ohjelmointikielellä toteutettu Emacs-klooni.)

### Emacs-emulaatio
Useissa muissa editoreissa on mahdollista käyttää emulaatiotilaa Emacsin kaltaiselle toiminnalle:
* JOE (jmacs)
* JED
* Eclipse
* IntelliJ Idea

## Tunnettuja Emacsin käyttäjiä
* Donald Knuth
* Eric S. Raymond
* Richard 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