GNU Emacs
GNU Emacs | |||
---|---|---|---|
![]() | |||
![]() | |||
Skaper(e) | Richard M. Stallman | ||
Utvikler(e) | GNU-prosjektet | ||
Distributør(er) | Flathub | ||
Utgitt | 1984 | ||
Nyeste versjon | 29.4 (22. juni 2024)[1] | ||
Kodelager | https://git.savannah.gnu.org/cgit/emacs.git | ||
Operativsystem | GNU/Linux BSD Microsoft Windows macOS GNU/Hurd Unix-liknende multiplattform | ||
Skrevet i | Emacs Lisp[2] | ||
Skrivebordsmiljø | X Athena Widgets, GTK | ||
Lisens | GPL-3.0+[3] | ||
Nettsted | www.gnu.org (en)[4] | ||
Forgjenger | Emacs | ||
Etterfølger | Nemacs, XEmacs, Remacs, Aquamacs, SXEmacs, Meadow | ||
GNU Emacs på Commons |
GNU Emacs (også kalt GNUMACS og StallMACS[5]) er en fri og åpen teksteditor som utvikles av GNU-prosjektet. Det er den mest populære utgaven av teksteditoren Emacs (Editor MACroS), og er også den utgaven som er blitt portert til flest plattformer.
GNU Emacs er plattformuavhengig, og har blitt portert til blant annet MS-DOS, Microsoft Windows, OpenVMS, Unix-liknende operativsystemer som GNU/Linux, GNU Mach/GNU Hurd, macOS, derivater av BSD, kommersielle Unix-avarter som HP-UX, SunOS, Solaris, IRIX og mobile operativsystemer for smarttelefoner og nettbrett (deriblant Android, Maemo og iOS).
Teksteditoren kan utvides ved å benytte det turingkomplette programmeringsspråket Emacs Lisp, og dens slogan er «den utvidbare og selvforklarende teksteditor». GNU Emacs har blitt kalt «den mest kraftige teksteditor som er tilgjengelig i dag»,[6] og kan vise filer med forskjellige tegnsett. Siden 1999 eller før har teksteditoren også vært istand til å vise de fleste naturlige språk.
GNU Emacs ble skapt av GNU-prosjektets grunnlegger Richard Stallman (f. 1953). Editoren har vært en sentral komponent i GNU-prosjektet, og et flaggskip for bevegelsen som promoterer fri og åpen programvare.[7][8] Arbeidet med teksteditoren begynte i januar 1984. Den første versjonen fikk versjonsnummeret 13.8, og ble lansert 20. mars 1985. Siste versjon er 28.2 og ble lansert den 12. september 2022.
Historie
Fra TECO og E til Emacs
Arbeidet med Emacs (Editor MACroS) startet i 1974, og den første versjonen av Emacs så dagens lys høsten 1976.[9] Arkitekten bak Emacs var Guy Lewis Steele Jr. (f. 1954), og blant hans medarbeidere var Richard Matthew Stallman og David A. Moon. Emacs ble laget for operativsystemet Incompatible Timesharing System (ITS) mens de jobbet ved MIT Artificial Intelligence Laboratory (MIT AI Lab). Maskinvaren var 36-biter minidatamaskinen PDP-10, og Emacs var en direkte etterfølger til teksteditoren TECO.[10][9]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Richard_Stallman_-_F%C3%AAte_de_l%27Humanit%C3%A9_2014_-_010.jpg/190px-Richard_Stallman_-_F%C3%AAte_de_l%27Humanit%C3%A9_2014_-_010.jpg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Space-cadet.jpg/250px-Space-cadet.jpg)
Ansatte ved Massachusetts Institute of Technology (MIT) benyttet på denne tiden space-cadet tastaturet på deres Lisp-maskiner.[11][12][13] Tastaturet inspirerte mye av sjargongen innen datidens informatikk, og grensesnittet til Emacs var påvirket av dette tastaturet.[14]
Emacs oppstod altså i et forskermiljø som forsket på kunstig intelligens. Emacs startet som et sett med makroer til TECO, og ble i begynnelsen ikke betraktet som en ny teksteditor. Disse makroene var inspirert av teksteditoren E, som var blitt laget av Fred Wright ved Stanford Artificial Intelligence Lab ved Stanford University. Stallman var imponert av E-editorens intuitive WYSIWYG-prinsipp (What You See Is What You Get), som senere har blitt standard i de fleste moderne teksteditorer og tekstbehandlere.[9]
Stallman besøkte Stanford AI Lab i 1972 eller 1974, og returnerte til MIT AI Lab, hvor Carl Mikkelsen hadde tilføyd en kombinert visnings- og redigeringsmodus til TECO. Ved hjelp av tastetrykkene Control-R
ble skjermen oppdatert hver gang brukeren trykket på en tast. Stallman implementerte denne modusen på nytt, slik at den kjørte mer effektivt. Han tilføyde også en makro slik at brukeren kunne omdefinere et hvilket som helst tastetrykk for å kjøre i TECO.[9]
TECO inneholdt inneholdt fasiliteter for tekstmanipulering, I/O og programmering, så nesten umiddelbart begynte mange brukere å implementere store samlinger av redigeringskommandoer, kraftfulle nok til å utføre enhver form for redigering. De mest kjente makroer var TECMAC, TMACS, MACROS, RMODE, Russ-mode og DOC.[9]
TECO manglet fortsatt mange kontroll- og programmeringskonstruksjoner – deriblant navngitte funksjoner og variabler, som gjorde programmer mer lesbare og vedlikeholdbare. Derfor var TECO vanskelig å vedlikeholde. Dette var igjen en årsak til at Emacs ble implementert.[9]
Utviklingen av Emacs tilføyde nye egenskaper til TECO i form av biblioteker og selv-dokumentasjon, en ny lesbar programmeringsstil og nye makroer som benyttet denne stilen. De nye makroene var inspirert av mange TECO-baserte editorer, og makroene ble også skapt slik at de mest anvendte operasjoner krevde færrest tastetrykk.[9]
Etter lanseringen av Emacs som en egen editor, ble TECO videreutviklet på basis av det arbeid Stallman og hans medarbeidere hadde gjort. Nye egenskaper ble tilføyd TECO, for å øke hastigheten på løkker i tabellsøking og S-uttrykk parsing eller for å muliggjøre nye former for I/O eller grensesnittoperasjoner.[9]
TECO ble senere portert til MS-DOS, Windows 95, Windows 98, Windows NT 3.1/3.5/3.51/4.0, Windows 2000, Windows XP, OS/2, GNU/Linux og OpenBSD.[15]
I 1977 hadde interessen for Emacs vokst så mye at Mike McMahon ved SRI International adopterte editoren til DECs operativsystem TOPS-20 (etterfølgeren til TENEX). I 1981 var Emacs i bruk på omkring hundre steder.[9]
Fra Gosling Emacs til GNU Emacs
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Emacs_Dired_buffers.png/250px-Emacs_Dired_buffers.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Colorsyntax.png/250px-Colorsyntax.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Cpp_in_GNU_emacs.png/250px-Cpp_in_GNU_emacs.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Screenshot_emacs-geben-helloworld.png/250px-Screenshot_emacs-geben-helloworld.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Emacs-screenshot-with-PNML.png/250px-Emacs-screenshot-with-PNML.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/GNU_Emacs_23.1.1.png/250px-GNU_Emacs_23.1.1.png)
I januar 1984 begynte Stallman å arbeide med et fritt alternativ til den proprietære teksteditoren Gosling Emacs. Sistnevnte ble laget i 1981 av James Gosling (f. 1955) i programmeringsspråket C.[16] I begynnelsen ble Gosling Emacs distribuert uten formelle restriksjoner.[17] I 1980 vedtok imidlertid kongressen i USA å innføre patentrettigheter på programvare,[18] og da Gosling Emacs den 6. mai 1983 ble solgt til UniPress opphørte den frie distribusjonen av programvaren.[19]
Dette var igjen foranledningen til den første formelle lisensen for Emacs, som 25. februar 1989 ble til GNU General Public License (GPL). Versjon 13.8 var den første offisielle utgaven av GNU Emacs, og det første programmet som ble utgitt av det nydannede GNU-prosjektet. Den ble lansert den 20. mars 1985. Versjon 15.34 ble utgitt 7. mai 1985, og var den første versjonen med større utbredelse.[20]
De første versjonene av GNU Emacs benyttet kommandotolken Mocklisp fra Gosling Emacs. Den 15. juli 1985 ble versjon 16.56 av GNU Emacs lansert. Der var Mocklisp erstattet av en ekte LISP-kommandotolk, og dette gjorde at nesten hele koden ble omskrevet.[20]
GNU Emacs er skrevet i programmeringsspråket C og tilbyr Emacs Lisp (som også er implementert i C) som et utvidende programmeringsspråk.
Utviklingen videre
Da versjon 16.60 ble lansert den 19. september 1985, ble GNU Emacs portert til Unix System V.[20]
Versjonen tilbød flere egenskaper enn Gosling Emacs, spesielt med Lisp som sitt utvidelsesspråk, og ganske snart erstattet den Gosling Emacs som en de facto Emacs-editor på Unix. I versjon 17.36 som ble lansert 20. desember 1985, hadde brukermanualene støtte for det typografiske systemet TEX.[20]
Versjon 18.24 ble lansert 2. oktober 1986, og var en betaversjon og ikke offisiell versjon. Den innførte mange nyheter. Kommandoen emacs -nw
innførte støtte for konsollapplikasjoner i xterm. GNU Emacs ble i stand til å åpne TCP/IP, og innførte en servermodus. Kommandoen M-x disassemble
ble også innført.[20]
Hackeren Markus Hess, som spionerte for KGB, utnyttet en sikkerhetsfeil i E-post-subsystemet til GNU Emacs i 1986. Dette ga han urettmessig tilgang som superbruker i Unix-datamaskiner som var tilknyttet USAs forsvar via ARPANET og MILNET.[21]
Richard Stallman har flere ganger markert seg som en motstander av overvåkning, utført av regjeringer og kommersielle korporasjoner.[22][23][24] I henholdsvis 2013 og 2014 ga han uttrykk for støtte til whistleblowere som Julian Assange (f. 1971)[25] og Edward Snowden (f. 1983).[26]
Versjon 18.52 av GNU Emacs, som ble lansert 17. august 1988, innførte spook.el
, et bibliotek som tilføyde enkelte «distraher NSA» nøkkelord (UNCPCJ Emergency management JITEM PEM bullion MSCJ Airplane SLIP rogue Gatt Ammonium nitrate Trafficking embassy Emergency TELINT) for hver melding man sendte over datanett.[27]
Versjon 19.28 ble lansert 1. november 1994 og innførte støtte for flere rammer under vindussystemet X. VC (et nytt grensesnitt for versjonskontroll) ble innført, og det ble også innført font-lock modus og hexl-modus for heksadesimal redigering.[20]
Versjon 19.30 ble lansert 24. november 1995. Blant nyhetene var støtte for flere rammer på Microsoft Windows, menylinjen tilgjengelig på tekstbaserte dataterminaler, pakken pc-select
emulerer vanlige tastaturkombinasjoner på Microsoft Windows og Macintosh.[28]
Versjon 19.31 ble lansert 25. mai 1996. I denne versjonen kunne GNU Emacs åpne rammer i vindussystemet X som standard, det ble støtte for rullefelt i Windows 95 og Windows NT, og støtte for underprosesser i Windows 95. Kommandoen recover-session
kunne gjenopprette multiple datafiler etter datahavarier, og noen av egenskapene i doctor.el
ble fjernet for å tilpasse seg Communications Decency Act i USA (lovgivning mot pornografi).[28][29]
Versjon 20.1 ble lansert 17. september 1997 og innførte støtte for mange naturlige språk.[20]
Versjon 21.1 ble lansert 20. oktober 2001. Blant nyhetene var støtte for fargevisning og andre egenskaper på dataterminaler, innebygd horisontal rulling, støtte for lyd, støtte for datamus med hjul, forbedret utseende av menylinjen, støtte for bilder, verktøyslinje og tooltip. Denne versjonen hadde støtte for Unicode.[20]
Versjon 22.1 ble lansert 2. juni 2007. Blant nyhetene var støtte for widget verktøyet GTK+, støtte for dra og slipp på vindussystemet X, og støtte for programmeringsgrensesnittet Carbon i Mac OS X (bakoverkompatibilitet med Mac OS 8 og Mac OS 9). org-mode versjon 4.67d ble også innlemmet.[30]
Versjon 22.2 ble lansert 26. mars 2008. Blant nyhetene var ny støtte for versjonskontrollsystemene GNU Bazaar, Mercurial, Monotone og Git. Nye store modi var å redigere datafiler for CSS, OpenVera, Verilog og . Denne versjonen hadde også forbedret støtte for rulling i bildemodus.
Versjon 22.3 ble lansert 5. september 2008. Blant nyhetene var bedre støtte for GTK+, datamus, Unicode, og dra og slipp under vindussystemet X. Det ble innført et nytt system for tastaturmakroer. Mange nye modi og pakker ble innført, deriblant et grafisk brukergrensesnitt til GNU Debugger, Python-modus, det matematiske verktøyet Calc, og systemet Tramp (Transparent Remote (file) Access, Multiple Protocol) for redigering av fjerne filer.[31]
Versjon 23.1 ble lansert 29. juli 2009. Blant nyhetene var bedre støtte for kantutjevnende fonter i vindussystemet X gjennom Xft,[32] bedre støtte for Unicode, Doc-view modus og nye pakker for å vise filer i formatene PDF og PostScript, forbindelse til prosesser gjennom D-Bus (dbus), forbindelse til GNU Privacy Guard (EasyPG), nXML-modus for å redigere XML-dokumenter, Ruby-modus for redigering av programmer i programmeringsspråket Ruby. Bruken av Carbon i Mac OS X, ble erstattet av det mer moderne grensesnittet Cocoa.
Versjon 23.2 ble lansert 8. mai 2010. Blant nyhetene var nye verktøy for å bruke GNU Emacs som et integrert utviklingsmiljø, deriblant navigasjon over et prosjekt og automatisk generering av makefiler. Nye større modi for å redigere kildekode i JavaScript. I grafiske brukergrensesnitt, blir markøren skjult mens brukeren skriver.
Versjon 23.3 ble lansert 10. mars 2011, og inneholdt forbedret funksjonalitet for å bruke GNU Emacs i versjonskontrollsystemer.
Versjon 23.4 ble lansert 29. januar 2012, og fikset en sikkerhetsfeil.[33]
Versjon 24.1 ble lansert 10. juni 2012. Blant nyhetene var Emacs Lisp Package Archive (ELPA), støtte for nye fargetemaer, GTK+3 som opsjon, støtte for toveis innmatning, støtte for leksikalsk prosjektramme i Emacs Lisp.[34]
Versjon 24.3 ble lansert 10. mars 2013. I denne versjoner ble generaliserte variabler en del av kjernen i Emacs Lisp, en oppdatinger for emuleringsbiblioteket Common Lisp, og en ny stor modus Python.[35]
Versjon 24.4 ble lansert 20. oktober 2014. Denne versjonen fikk støtte for aksesskontrollister og digitale signaturer i Emacs Lisp-pakker. Andre nyheter var forbedret støtte for fullskjerm og flere skjermer, støtte for å lagre og gjenopprette tilstanden til rammer og vinduer, forbedret menystøtte på tekstbaserte dataterminaler, enda en innebygd nettleser (M-x eww
), en ny modus for rektangulær merking (C-x SPC
) og støtte for datafilvarsling.[36]
Versjon 25.1 ble lansert 17. september 2016. Denne versjonen fikk støtte for lasting av delte og dynamisk lenkede biblioteker, validering av TLS/SSL-sertifikater, en ny mindre modus electric-quote-mode
for å bruke buede sitater, støtte for tegnbretting i isearch.el
, støtte for innbakte widgeter i Emacs-buffere og nye og forbedrede fasiliteter for å innsetting av Unicode-tegn.[37]
Versjon 26.1 ble lansert 28. mai 2018. Denne versjonen innførte begrenset form for parallellprosessering med Lisp-tråder, støtte for visning av linjenummer i bufferet, og dobbel buffering for å redusere flimmer i vindussystemet X. Programmet Flymake var blitt fullstendig omskrevet, og TRAMP fikk en ny forbindelsesmetode for Google Drive. Det var kommet en ny horisontal rullemetode for enkeltlinje-modus. En brukerfil for systemd var inkludert, og det var blitt støtte for 24-biters farger på dataterminaler.[38]
Versjon 26.2 ble lansert 12. april 2019. Emacs-moduler kunne nå bygges på utsiden av kilde-treet til GNU Emacs, og det var blitt støtte for Unicode versjon 11.0. Versjon 26.3 ble lansert 28. august 2019. Denne versjonen innførte en ny GPG-nøkkel for signatursjekking for GNU ELPA (Emacs Lisp Package Archive).
Versjon 27.1 ble lansert 10. august 2020. Blant nyhetene var innebygd støtte for heltall av arbitrær størrelse, tekstforming med HarfBuzz, støtte for JSON-parsing, og bedre støtte for tegning av fonten Cairo (fra Macintosh). Portabel dumping benyttes i stedet for unexec, og det ble støtte for XDG-konvensjoner for initfiler. Denne versjonen tilføyde en tidlig-init initialiseringsfil. Leksikalsk binding er blitt standard, og det var nå innebygd støtte for fanefelt og fanelinje. Denne versjonen ga støtte for endring av størrelsen på og rotering av bilder uten ImageMagick.
Versjon 27.2 ble lansert 25. mars 2021 og inneholdt en del feilrettinger.
Versjon 28.1 ble lansert 4. april 2022. Blant nyhetene var native kompilering av Lisp-filer, tekstforming med HarfBuzz og tegning med Cairo, støtte for loading Secure Computing filtre, forbedret visning av Emoji og Emojisekvenser, mode-spesifikke kommandoer og vising av matchende parenteser som standard.
Verson 28.2 ble lansert 12. september 2022 og inneholdt en del feilrettinger.
Selv om brukere vanligvis sendte oppdateringer og kode i Emacs Lisp til diskusjonsgruppen net.emacs
(omdøpt til com.emacs
27. januar 1987),[20] var deltagelsen i utviklingen av GNU Emacs relativt begrenset inntil 1999. Dette ble i oktober 1999 brukt som eksempel på en «katedral-utvikling» i boken The Cathedral and the Bazaar av Eric Steven Raymond (f. 1957). Prosjektet har senere adoptert en alment tilgjengelig e-postliste for utvikling og en anonym tilgang til Concurrent Versions System (CVS). Utviklingen fant sted i en enkel CVS-stamme frem til 26. mars 2008, da det tok i bruk distribuert versjonskontroll i versjonskontrollsystemet Git.[39]
Richard Stallman er fortsatt den grunnleggende vedlikeholder av GNU Emacs, men han har trådt tilbake fra denne rollen til tider. Stefan Monnier og Chong Yidong har hatt ansvar for vedlikeholdet siden 2008.[40] Den 21. september 2015 kunngjorde Monnier at han ville trekke seg tilbake som når egenskapene til Emacs 25 var frosset.[41] Den langvarige bidragsyter John Wiegley ble ny vedlikeholder den 5. november 2015.[42]
Norske bidrag
Den norske programmereren Erik Naggum (1965–2009) var en bidragsyter til GNU Emacs i nesten et tiår.[43]
Han bidro til mange patcher til GNU Emacs fra versjon 19.26 (lansert 7. juli 1994) til versjon 20.4 (lansert 12. juli 1999).[44]
Erik Naggum var en forsvarer av ANSI-standarden Common Lisp, og prøvde å utvikle Emacs Lisp i retning av Common Lisp.[43]
I denne forbindelse forfattet han hyperspec.el
(Common Lisp Hyperspec), et HTML-dokument som ga en gjengivelse av spesifikasjonen til Common Lisp.[45]
Like etter årtusenskiftet syslet han med planene om å lage en Common Lisp Emacs som skulle erstatte Emacs Lisp, noe som fremgår av diskusjoner på diskusjonsgruppen comp.lang.lisp
.[46][47]
I sitt innlegg Re: RFC: Lisp/Scheme with less parentheses through Python-like significant indentation?
skrev han på comp.lang.lisp
den 11. august 2000: «"De som ikke kjenner til Lisp er dømt til å finne det opp på nytt", er en Emacs-innstilling. Dette er et Lisp-miljø, så jeg burde kanskje si: "De som ikke kjenner til Emacs er dømt til å oppfinne det på nytt."»[43]
En annen ting som opptok Naggum var overgangen fra ASCII til flere tegnsett. ASCII er en 7-biters kode med 128 mulige tegn. I oktober 1991 ble første versjon av Unicode lansert, som støttet 7,129 tegn. I versjon 15.0, som ble lansert i september 2022, hadde dette vokst til 161,149 tegn, som innbefattet 186 moderne og historiske skriftsystemer. UCS-2 som er en implementasjon av Unicode, bruker 16 biter til å fremstille tegn, og det arbeides også med UTF-32, som bruker 32 biter.
Emacs var tidlig ute med støtte for flere tegnsett, faktisk forut for Unicode. Implementasjonen i Emacs kalles MULtilingual Enhancement (MULE), og støtter minst 42 tegnsett, 53 kodesett, 128 innmatingsmetoder og 58 språk. Implementasjonen i Emacs er på mange måter mer avansert enn Unicode, og gjør det mulig å ha flerspråklige tekster i ulike språk i et og samme buffer.[48] MULE ble opprinnelig lansert på Nemacs, en japansk versjon av Emacs som ble lansert i 1987. Det ble deretter implementert i XEmacs og i versjon 20.1 av GNU Emacs den 17. september 1997.
Erik Naggum arbeidet på støtten for flere tegnsett i Emacs i flere år. Han sluttet etter introduksjonen av MULE, på grunn av de «semantiske kollisjoner» dette medførte i versjonskontrollsystemet CVS. I denne forbindelse laget han et «multi-byte survival kit» for brukere av Emacs 20 som ønsket å bevare adferden til tegnsettet i Emacs 19. Programvareselskapet Red Hat inkluderte dette programvareverktøyet i Red Hat Linux 5.0 «Hurricane» den 1. desember 1997.[44]
Versjonsnummereringen
Tidligere versjoner av GNU Emacs var nummererte «1.x.x», der første siffer betegner versjonen av GNU C. Tallet «1» ble sløyfet etter versjon 1.12 fordi man trodde at det store versjonsnummeret aldri ville forandres. Et nytt tredje versjonsnummer ble tilføyd for å representere mindre forandringer som var gjort av brukersider. Versjon 20.0 var f.eks. en ny versjon, mens versjon 20.0.1 hadde endringer som var foretatt av andre brukere.[49] I den nåværende nummereringsmodellen, brukes et tall med to komponenter for å angi en lansert versjon (f.eks. 22.1), mens utviklingsversjoner har tre komponenter. Versjon 23.0.50 var f.eks. en utviklingsversjon som til slutt ble til versjon 23.1.[50]
Lisensiering
Vilkårene i GNU General Public License (GPL) sier at kildekoden til Emacs, inkludert både C- og Emacs Lisp-komponentene, er fritt tilgjengelig for undersøkelse, modifisering og redistribusjon.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/59/Emacs_512.png/190px-Emacs_512.png)
Eldre versjoner av dokumentasjonen til GNU Emacs hadde en ad-hoc-lisens som krevde inkludering av bestemt tekst i enhver modifisert kopi. I GNU Emacs-brukerhåndboken inkluderte dette for eksempel instruksjoner for å skaffe seg GNU Emacs og Richard Stallman's essay GNU Manifesto. XEmacs-manualene har samme lisens. Nyere versjoner av dokumentasjonen bruker GNU Free Documentation License med «uforanderlige seksjoner» som krever at de samme dokumentene inkluderes og at manualene proklamerer at de er GNU-manualer.
Signifikante kodebidrag aksepteres bare hvis opphavsmannen avsier seg rettighetene til koden og sjenker den til Free Software Foundation. Feilrettinger og mindre kodebidrag på færre enn 10 linjer er unntatt fra regelen. Dette er for at FSF kan forsvare programvaren i retten dersom dens copyleft-lisens er krenket.
Den 29. juli 2011 kom det frem at GNU Emacs med uhell hadde utgitt enkelte binærfiler uten samsvarende kildekode i to år, i strid med ånden til GPL.[51][52][53] Richard Stallman beskrev dette som «en svært alvorlig feiltagelse»,[54] og feilen ble rettet øyeblikkelig. FSF saksøkte ingen distributører som uvitende hadde krenket GPL ved å distribuere disse filene.
Bruken av Emacs
Kommandoer
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Emacs-screenshot.png/250px-Emacs-screenshot.png)
emacs-snapshot-gtk
.I vanlig redigeringsmodus oppfører GNU Emacs seg som andre teksteditorer. Man setter inn tegn med tilhørende taster og flytter redigeringspunktet med piltastene. Brukeren trykker på modifiseringstaster, sammen med vanlige taster for å påkalle funksjoner fra Emacs Lisp. Modifiseringstastene som brukes er:[55]
Escape
[55]Control
(Ctrl) og/ellerMeta
(på enkelte tastaturer)[55]Alt
ellerSuper
(på noen tastaturer)[55]
Nedenfor har vi vist en del vanlige kommandoer. Mange av disse kombinerer flere modifiseringsnøkler.[55]
Starte og lukke GNU Emacs
emacs
. Denne kommandoen starter GNU Emacs i Unix-liknende operativsystemer. I Microsoft Windows og Mac OS startes programmet ved å taste på dets ikon.[55]C-x C-c
ellersave-buffers-kill-emacs
lagrer alle buffere og avslutter GNU Emacs.[55]C-x C-z
ellersuspend-emacs
, suspenderer GNU Emacs i Unix-terminologien (stanser programmet og plasserer det i bakgrunnen). Hvordan programmet restartes avhenger av skallet (mest sannsynlig via kommandoenfg
)[55]
Modifisering av datafiler
![](http://upload.wikimedia.org/wikipedia/commons/a/ad/Command-line-completion-example.gif)
C-x C-f
ellerfind-file
. Denne kommandoen leser en datafil inn i et buffer for redigering. Når du utfører denne kommandoen, vil GNU Emacs be deg om navnet på datafilen. Deretter sjekkes det om du allerede redigerer denne datafilen i et buffer; dersom du gjør det svitsjer den til dette bufferet og leser ikke datafilen igjen. Dersom du ikke gjør det, skapes et nytt buffer, som er oppkalt etter datafilen, og initialisert med en kopi av filen. I begge tilfeller svitsjer vinduet til å vise dette bufferet.[55]C-x C-s
ellersave-buffer
lagrer en datafil ved å skrive en kopi av bufferet til harddisken, og overskrive bufferets fil, samtidig som den håndterer sikkerhetskopier.[55]C-x s
ellersave-some-buffers
. Denne kommandoen lagrer alle buffere som besøker datafiler, med spørsmål og opsjoner for hver enkelt.[55]
Manipulering av databuffere
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Emacs23.3.1-screenshot-minibuffer.png/250px-Emacs23.3.1-screenshot-minibuffer.png)
Følgende kommandoer brukes til å manipulere datafiler:[55]
C-x b
ellerswitch-to-buffer
. Ber om et buffernavn og bytter til bufferets nåværende vindu. Vinduskonfigurasjonen endres ikke. Denne kommandoen skaper også et nytt vindu hvis du skriver et nytt navn; det nye bufferet vil ikke besøke noen datafil[55]C-x C-b
ellerlist-buffers
. Åpner et nytt vindu med liste over alle buffere, viser hvorvidt de er modifisert, viser også deres størrelse i bytes, deres store modus og datafilen som bufferet besøker[55]C-x k
ellerkill-buffer
. Ber om et buffernavn og fjerner hele datastrukturen for dette bufferet fra GNU Emacs. Hvis bufferet er modifisert, vil du få mulighet til å lagre det (dette fjerner ikke den assosierte datafilen).[55]C-x C-q
ellervc-toggle-read-only
. Skrivebeskytter et buffer slik at dets innhold bare kan leses, eller gjør det skrivbart hvis det er skrivebeskyttet. Hvis filene er under versjonskontroll, vil kommandoen også sjekke filene for deg.[55]
Manipulering av vinduer
C-v
ellerscroll-up
. Kommando som ruller fremover en skjerm av gangen.[55]M-v
ellerscroll-down
. Kommando som ruller bakover en skjerm av gangen.[55]C-x o
ellerother-window
. Svitsjer til et annet vindu og gjør det aktivt. Gjentatte bruk av denne kommandoen beveger seg gjennom alle vinduer, fra venstre til høyre og fra toppen til bunnen, og sirkulerer deretter gjennom alle igjen.[55]C-x 1
ellerdelete-other-windows
. Lukk alle andre vinduer enn det som er aktivt. Kommandoen sletter ikke bufferene eller datafilene som er assosiert med vinduene.[55]C-x 0
ellerdelete-window
. Sletter det nærværende vindu, og endrer størrelsen på de andre.[55]C-x 2
ellersplit-window-vertically
. Deler et vindu i to, vertikalt. Det skaper et nytt vindu, men ikke et nytt buffer, for det samme buffer vil nå vises i to vinduer. Slik kan man se to deler av samme buffer samtidig.[55]C-x 3
ellersplit-window-horizontally
. Deler et vindu i to, horisontalt.[55]C-M-v
ellerscroll-other-window
. LiksomC-v
, men ruller fremover til neste vindu. Hvis det er mer enn to vinduer, vil neste vindu være det somC-x o
svitsjer til.[55]
Hjelpefunksjoner
C-h a
ellercommand-apropos
. Ber om et nøkkelord og lister deretter alle kommandoer med dette nøkkelordet i lange navn.[55]C-h k
ellerdescribe-key
. Ber om en tast og beskriver kommandoer knyttet til denne tasten.[55]C-h i
ellerinfo
. Ber om hypertekst-dokumentleseren Info.[55]C-h m
ellerdescribe-mode
. Beskriver den gjeldende store modus og dens spesielle bindinger til taster.[55]C-h p
ellerfinder-by-keyword
. Kjører en interaktiv emneorientert leser av Emacs-pakker[55]C-h t
ellerhelp-with-tutorial
. Kjører en opplæring i GNU Emacs.[55]
Modifisering av eksterne programmer
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Emacs_statusline.png/530px-Emacs_statusline.png)
Enkelte kommandoer påkaller et eksternt program, slik som ispell
for stavekontroll eller GNU Compiler Collection (gcc) for kompilering, parsing og visning av resultatet i GNU Emacs. Emacs støtter også «underordnede prosesser» — langvarige prosesser som samspiller med et Emacs-buffer. Dette brukes for å implementere shell-mode, hvor Unix-skallet er en underordnet prosess. Det brukes også i moduser med read–eval–print løkker (REPL) for ulike programmeringsspråk. Støtten for eksterne prosesser, gjør GNU Emacs attraktiv for interaktiv programmering i tråd med prinsippene i Interlisp eller Smalltalk.[56]
De som foretrekker taster som er i stil med IBM Common User Access kan bruke cua-mode. Dette var opprinnelig en tredjeparts tilføyelse, og ble inkludert i GNU Emacs i versjon 22.1 i 2007.
Minibuffer
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Pantallazo_Emacs.png/250px-Pantallazo_Emacs.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Eww_GNU_Emacs_24.4.png/250px-Eww_GNU_Emacs_24.4.png)
Emacs benytter et «minibuffer», vanligvis linjen i bunnen, til å presentere status- og kommandoinformasjon. Dette er funksjoner som vanligvis utføres av dialogbokser i de fleste grafiske brukergrensesnitt. Minibufferet holder informasjon slik som filnavn når man søker etter navnet på en datafil som skal leses eller skrives. Kommandolinjeavslutning er tilgjengelig ved å trykke Alt
eller tabulatoren.
Filhåndtering og visning
GNU Emacs holder tekst i datastrukturer kjent som databuffere. Slike buffere kan vises på skjermen, og egenskapene til bufferene er både tilgjengelig for et program skrevet i Emacs Lisp og for brukergrensesnittet.[57] Brukeren kan skape nye buffere, og forkaste uønskede, og mange buffere kan eksistere samtidig. Det er ingen øvre grense på antall buffere, bortsett fra grensen i datamaskinens minne. Avanserte brukere kan samle hundrevis av åpne buffere av forskjellige typer mens de arbeider.[58] GNU Emacs kan konfigureres til å lagre listen av åpne buffere når programmet avsluttes, og gjenåpne denne listen når det startes på nytt.[59]
Enkelte buffere inneholder tekst som er lastet fra tekstfiler, som brukeren kan redigere og lagre permanent. Slike buffere kalles «besøkende datafiler». Buffere kan også vise andre data, slik som utmatningen av Emacs-kommandoer, kataloglistinger ved hjelp av dired, tekststrenger med dokumentasjon fra biblioteket «hjelp» og meldinger og beskjeder som andre teksteditorer viser i en dialogboks. Noen av disse meldinger vises kort i minibufferet, og GNU Emacs har et eget buffer (*Messages*
) som holder historien om de mest nylige meldinger av denne type. Når minibufferet brukes for utmatninger av GNU Emacs, kalles det «ekko-området».[60] Lengre meldinger vises i egne buffere. Den maksimale lengden på meldinger som viser i minibufferet er konfigurerbart.
Buffere kan tjene som områder for innmatning og utmatning av en ekstern prosess, slik som et skall eller miljøer med en read–eval–print løkke (REPL). Buffere som GNU Emacs skaper selv har typisk et navn merket med asterisker på slutten, for å skille dem fra brukerbuffere. Også listen over åpne buffere vises i et buffer.
De fleste tastekombinasjoner er funksjonelle i et hvilket som helst buffer. Ctrl-s
isearch
, kan for eksempel brukes til å søke etter et filnavn i flere dired-buffere, og fil-listen kan lagres i en tekstfil på samme måte som i ethvert annet buffer. Modusen til dired-buffere kan byttes slik at de blir skrivbare, og slik at filnavnene og attributtene kan redigeres som tekst; når bufferet blir lagret, blir endringene skrevet til filsystemet. Dette gjør det mulig for mange datafiler å bli omdøpt, ved å bruke søke- og erstatt-funksjonene i GNU Emacs. I slike tilfeller viser GNU Emacs bildefilene i bufferene. GNU Emacs er binærtrygg og 8-biters ren.[61]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6e/Parabola_GNU%2BLinux-libre%2BGNOME%2BEmacs.png/250px-Parabola_GNU%2BLinux-libre%2BGNOME%2BEmacs.png)
GNU Emacs kan splitte redigeringsområdet inn i flere separate ikke-overlappende seksjoner kalt «vinduer». Denne egenskapen har vært tilgjengelig siden 1975, og går forut for de grafiske brukergrensesnitt som idag er i vanlig bruk. I Emacs-terminologien tilsvarer «vinduer» det som i HTML kalles «rammer» og i vindussystemer kalles «panerte vinduer». Dette er rektangulære deler av programmets skjermbilde som kan oppdateres og som man har interaksjon med uavhengig av hverandre. Hvert Emacs-vindu har en statuslinje («moduslinje») som vises i bunnen av vinduet. Emacs-vinduer er tilgjengelige både som tekst-terminaler og i grafisk modus og tillater flere buffere, eller flere deler av et buffer, å vises samtidig. Vanligvis viser et dired-buffer alle datafilene i den nåværende katalogen (det er også spesielle moduser som lar filbufferet følge datafilen som er fremhevet i dired). Kildekoden til et program kan vises i et annet vindu, mens et tredje vindu kan vise et skall-buffer med resultatet av å kompilere programmet. I et fjerde vindu kjøres en avluser sammen med et skall-buffer som kjører programmet. I et femte vindu kan det vises frem en man-side eller annen dokumentasjon (som også kan lastes ned via internett ved å bruke en av GNU Emacs sine innebygde nettlesere). Det er også mulig å vise flere datafiler for redigering samtidig, slik som en filheader sammen med dens implementasjon i et C-basert programmeringsspråk. follow-mode
er en mindre modus hvor vinduer lenkes sammen for å vise ikke-overlappende deler av et buffer. I follow-mode
kan en enkelt datafil vises i flere vinduer side-om-side som oppdateres når de rulles. GNU Emacs støtter også «innsnevring» av et buffer for å vise bare deler av en datafil, mens toppen/bunnen av bufferet navigerer funksjonelt og kalkulasjoner av bufferstørrelsen bare reflekterer det valgte område.
Emacs-vinduer er flislagte og kan ikke opptre «over» eller «under» et annet vindu. GNU Emacs kan starte flere «rammer» som vises som individuelle vinduer i et grafisk brukergrensesnitt. På en tekstbasert dataterminal vises flere rammer på en stakk som fyller hele terminalvinduet, og man kan svitsje mellom dem med standard Emacs-kommandoer.[62]
Store modi
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Guixsd-xfce-icecat-emacs.png/250px-Guixsd-xfce-icecat-emacs.png)
GNU Emacs kan vise eller redigere forskjellige typer tekst og kan oppføre seg i henhold til de programvareutvidelsene som kalles «store modi». Det finnes mange store modi for forskjellige hensikter. Eksempler er redigering av ordinære tekstfiler, såvel som av kildekoden til mange markeringsspråk og programmeringsspråk, visning av nettsider, mapper og annen systeminformasjon. Hver stor modus involverer et program skrevet i Emacs Lisp, som utvider egenskapene til GNU Emacs. Store modi sørger vanligvis for noen eller alle av følgende egenskaper:
- Syntaksfremheving (font lock): Kombinering av fonter og farger («faces»)[63] som skiller mellom reserverte ord og kommentarer i et dataprogram
- Automatiske innrykk for å opprettholde konsistent formatering i en datafil
- Automatisk innsetting av åpenrom, linjeskift og paranteser
- Spesielle redigeringskommandoer, slik som kommandoer for å hoppe til begynnelsen eller slutten av en funksjon mens man redigerer et dataprogram eller kommandoer for å validere dokumenter eller sette inn avsluttende koder når man arbeider med markeringsspråk som XML
Mindre modi
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Guix-edit%2Bevince.png/250px-Guix-edit%2Bevince.png)
«Mindre modi» åpner for videre tilpasninger. Et buffer kan bruke bare en stor modus av gangen, men flere mindre modi kan operere samtidig. De kan operere direkte på dokumenter, på samme måte som den store modus for programmeringsspråket C definerer en separat mindre modus for hver enkelt av dens innrykkstiler, eller de kan endre redigeringsmiljøet. Eksempler på det siste inkluderer en modus som tilføyer muligheten til å angre på endringer i vinduskonfigurasjonen og en som utfører syntakssjekking under kjøring. Det er også en stor modus som tillater flere store moduser å brukes i en enkelt datafil, for enkelthets skyld når du redigerer et dokument hvor flere programmeringsspråk er innbakt.
Batchmoduser
GNU Emacs støtter muligheten for å bruke Emacs Lisp som en kommandotolk uten å vise teksteditoren i brukergrensesnittet. I batchmodus blir brukerkonfigurasjonen ikke lastet, og teksten som redigeres blir ikke vist til stdout
gjennom kommandoene prin1
, princ
eller print
(eller stderr
ved feil). Interrupt-tegnene C-c
og C-z
vil ha deres vanlige effekt å avslutte et program eller suspendere utførelsen istedet for å påkalle Emacs-tastebindinger. GNU Emacs har kommandolinje-opsjoner som spesifiserer enten en fil som skal lastes og utføres, eller en Emacs Lisp-funksjon som kan sendes inn fra kommandolinjen. GNU Emacs vil starte opp, utføre den innsendte datafil eller funksjon, skrive ut resultatet, og så avslutte.[64] Shebang-linjen #!/usr/bin/emacs --script
kan skape frittstående skript i Emacs Lisp.[65] Batchmodus er ikke en Emacs-modus per se, men beskriver en alternativ utførelse for Emacs-programmet.
Manualer
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Emacs-logo_green.svg/250px-Emacs-logo_green.svg.png)
I tillegg til innebygd dokumentasjon, finnes brukermanualen GNU Emacs Manual, som er skrevet av Richard Stallman. Den følger med GNU Emacs og kan vises med programvareverktøyet info i Unix og Unix-liknende operativsystemer.
Manualen til XEmacs ligner på GNU Emacs Manual; førstnevnte ble nemlig skapt på samme tid som XEmacs oppstod som en fork av GNU Emacs.
To tilleggsmanualer er også inkludert: Emacs Lisp Reference Manual av Bil Lewis, Richard Stallman og Dan Laliberte og An Introduction to Programming in Emacs Lisp av Robert Chassell (1946–2017). Alle tre manualene er også utgitt i bokform av Free Software Foundation.
Internasjonalisering
GNU Emacs støtter mange alfabeter, skriftsystemer og kulturelle konvensjoner. Stavekontroll er også tilgjengelig for mange språk ved å bruke eksterne programmer som ispell. Fra versjon 24.1 ble det mulig å lese skrift både fra høyre mot venstre, og fra venstre mot høyre, for å støtte skriftsystemer for språk som arabisk, hebraisk og persisk.
Siden 1999 eller før har teksteditoren også vært istand til å vise de fleste naturlige språk.[66]
GNU Emacs støtter mange tegnsett, deriblant UTF-8. Siden versjon 23.1 har programmet benyttet UTF-8, mens tidligere versjoner hadde et eget internt tegnsett og konverterte til unicode under lasting og lagring. Det interne tegnsettet til XEmacs kan ligne på det som ble brukt av GNU Emacs, men er likevel forskjellig.
Brukergrensesnittet til GNU Emacs oppstod i den engelsktalende verden. Med unntak av opplæringsprogrammet, er brukergrensesnittet ikke oversatt til noe annet språk.
Tilleggsprogrammet Emacspeak gjør det mulig for svaksynte og blinde å kontrollere editoren gjennom akustisk tilbakekobling.
Utvidbarhet
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Emacs%2BAucTeX.png/250px-Emacs%2BAucTeX.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Gnus-reading-news.png/250px-Gnus-reading-news.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Erc-screenshot.png/250px-Erc-screenshot.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Org-mode-show-all.png/300px-Org-mode-show-all.png)
Oppførselen til GNU Emacs kan modifiseres og utvides nesten uten grenser ved å inkorporere Emacs Lisp programmer som definerer nye kommander, nye buffermodi, nye tastaturoppsett, tilføyde kommandolinjeopsjoner,[67] og så videre. Mange utvidelser som gir brukersynlig funksjonalitet definerer en stor modus (enten for en ny filtype eller for å lage et nytt brukergrensesnitt); andre utvidelser definerer bare kommander eller mindre modi, eller sørger for funksjoner som forbedrer en annen utvidelse.
Mange utvidelser følger med GNU Emacs-installasjonen; andre kan nedlastes som løse datafiler (diskusjonsgruppen gnu.emacs.sources
var en tradisjonell distribusjonskilde). Det har blitt utviklet pakker for nedlasting siden versjon 24, med et innebygd pakkesystem (i seg selv en utvidelse) til å nedlaste, installere og holde dem oppdatert. Listen av tilgjengelige pakker blir i selv vist i et Emacs-buffer satt i en stor modus til package-mode
.
Eksempler på utvidelser er:
- AUCTeX, verktøy for å redigere og prosessere dokumenter i formatene til TEX- og LATEX
- dired, en filhåndterer
- Dissociated press, en Racter-lignende tekstgenerator
- Doctor, en implementasjon av ELIZA (dataprogram for naturlige språk)
- Dunnet, et program for Interactive fiction
- Emacs Web Wowser (eww), en nettleser.
- Emacs Speaks Statistics (ESS) modus for å redigere statistiske språk som R og SAS
- ERC, en IRC-klient for fildeling på internett[68]
- Eshell (Emacs shell) , et kommandolinjeskall skrevet i Emacs Lisp. Dette gir nærmere integrasjon med Emacs enn standardskall som bash eller PowerShell, som også finnes for Emacs. I
Eshell
er Elisp-funksjoner tilgjengelige som skallkommandoer og utmatningen fra Unix-kommandoer kan omdirigeres til et Emacs-buffer. - Exwm, en vindusbehandler for vindussystemet X som lar X11-applikasjoner kjøre i et Emacs-vindu.[69]
- Gnus, en nyhetsleser og e-postklient og et tidlig bevis på Zawinski's Lov
- MULtilingual Enhancement (MULE) for redigering av tekst i mange språk på en måte som har analogier til Unicode
- Org-mode for å skrive notater, vedlikeholde forskjellige typer av lister, planlegge og vurdere prosjekter, og å skape dokumenter i mange formater (deriblant PDF, HTML og OpenDocument). Org-mode brukes av generatorer av statiske nettsider, så vel som utvidelsen Babel, som kan brukes for litterat programmering.[70]
- Planner, en personlig informasjonshåndterer
- rcirc, en IRC-klient for fildeling på internett[68]
- Superior Lisp Interaction Mode for Emacs (SLIME) utvider GNU Emacs til å bli et utviklingsmiljø for Common Lisp. Med SLIME (skrevet i Emacs Lisp) kommuniserer GNU Emacs editoren med et Common Lisp system (som bruker SWANK som backend) over en kommunikasjonsprotokoll og sørger for read–eval–print løkker, en datainspektør og en avluser.
- Texinfo (Info), en online hjelpeleser
- Zone, en display hack-modus som inkorporerer forskjellige teksteffekter.
Ytelse
GNU Emacs har ofte kjørt betydelig saktere enn rivaliserende teksteditorer på systemer hvor den først ble implementert. Dette skyldes overhead og forsinkelser knyttet til lastingen av den Lisp-baserte kommandotolken. Moderne datamaskiner er kraftfull nok til å kjøre GNU Emacs uten forsinkelser, men versjoner forut for 19.29 (utgitt i 1995) kunne ikke redigere datafiler som var større enn 8 Mb. Grensen for filstørrelsen ble økt i etterfølgende versjoner, og i 32-biter versjon etter GNU Emacs 23.2 kan redigere filer som er opp til 512 Mb i størrelse. GNU Emacs som er kompilert på en 64-biter datamaskin kan håndtere mye større buffere.[71]
Plattformer
GNU Emacs er den mest populære utgaven[72] av teksteditoren Emacs, og er også den utgaven som er blitt portert til flest plattformer.
GNU Emacs er et av de mest porterte ikke-triville dataprogrammer, og kjører på et mangfold av operativsystemer, deriblant MS-DOS, Microsoft Windows og OpenVMS.[73][74][75] Støtte for enkelte «foreldede plattformer ble fjernet i Emacs 23.1», deriblant VMS og de fleste kommersielle Unix-varianter.[76] GNU Emacs er tilgjengelig for de fleste Unix-liknende systemer, deriblant Linux, ulike derivater av BSD (FreeBSD, OpenBSD, NetBSD, DragonFly BSD, etc.), SunOS/Solaris, AIX, HP-UX, IRIX og macOS,[77][78] og er ofte inkludert i disse systemenes installasjonspakker. Det finnes også porteringer av GNU Emacs til Android[79] og Maemo fra Nokia.[80]
GNU Emacs kjører både på tekstbaserte terminaler og på systemer med grafiske brukergrensesnitt. På Unix og Unix-liknende systemer, kan GNU Emacs bruke vindussystemet X til å lage sitt eget brukergrensesnitt, enten direkte ved å bruke X Athena Widgets eller ved å benytte widgetverktøyer som Motif, LessTif eller GTK+. GNU Emacs benytter også de grafiske systemene til macOS og Microsoft Windows for å sørge for menylinjer, verktøylinjer, rullefelt og pop-up menyer, for å tilpasses utseendet til disse plattformene.
Forker
XEmacs
Utdypende artikkel: XEmacs
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Xemacs-21.5.b29.png/250px-Xemacs-21.5.b29.png)
Lucid Emacs, som var basert på en tidlig versjon av GNU Emacs 19, ble utviklet i begynnelsen av 1991 av Jamie Zawinski (1968–) og andre ved Lucid Inc. Den er en av de mest kjente forker av fri programvare som fant sted da kodebasen for de to Emacs-versjonene divergerte og de separate utviklingsteamene ikke prøvde å slå dem sammen igjen til et enkelt program.[81]
Etter at Lucid Inc. gikk konkurs, ble Lucid Emacs omdøpt til XEmacs. Utviklingen av XEmacs stanset opp; den siste stabile versjonen er 21.4.22 som ble utgitt i januar 2009, mens GNU Emacs på sin side har implementert mange tidligere egenskaper ved XEmacs. Dette har ført til antagelsen om den snarlige døden til XEmacs.[82]
Andre forker av GNU Emacs
Andre forker av GNU Emacs, inkluderer blant annet:
- Nemacs, forgjengeren til Lucid Emacs
- Meadow, en japansk versjon for Microsoft Windows[83]
- SXEmacs, Steve Youngs' fork av XEmacs[84]
- Aquamacs, en versjon som fokuserer på integrasjon med brukergrensesnittet til Apple Macintosh
- Remacs, en portering av GNU Emacs til programmeringsspråket Rust.[85]
Versjonshistorie
Endringer i hver versjon av GNU Emacs er opplistet i en NEWS-fil som distribueres sammen med GNU Emacs.[86] Forandringer som er gjort ved nedgradering til en tidligere versjon er opplistet i en «Antinews»-fil, ofte med korte kommentarer om hvorfor dette er ønskelig. For å ta et eksempel: «For de brukerne som lever bakover i tid, her er informasjon om nedgradering til Emacs versjon 24.5. Vi håper at du vil like den større forenkling som resulterer i fraværet av mange Emacs 25.2-egenskaper».[87]
Versjon [20] | Lansert [20] | Signifikante endringer[88] |
---|---|---|
13.8 | 20. mars 1985 | Første versjon. Magnetbåndet VAXSIG VAX85b DECUS har versjon 13.8 med filer datert 19. juni 1985 og RCS-filer datert 31. mars 1985. Versjon 13.9 er referert til i news-filen.[89] Versjon 13.8 må derfor ha vært første versjon, ettersom ingen annen versjon av 13.x er nevnt. |
15.10 | 11. april 1985 | |
15.34 | 7. mai 1985 | Første versjon med større utbredelse |
16.56 | 15. juli 1985 | Første GNU Emacs 16-versjon. Emacs-lisp-mode skilles fra lisp-mode ,[89] og eliminering av all kode fra Gosling Emacs på grunn av patentrettigheter.[20] |
16.57 | 16. september 1985 | |
16.58 | 17. september 1985 | |
16.59 | ||
16.60 | 19. september 1985 | Denne versjonen innlemmet blant annet patcher for å få GNU Emacs til å kjøre på UNIX System V. |
17.36 | 20. desember 1985 | Inkluderte en brukermanual som støttet TeX. Den første offisielle versjon som kjørte på UNIX System V uten patcher. |
17.43 | 25. januar 1986 | Andre offisielle utgave av versjon 17 |
17.45 | 30. januar 1986 | |
17.46 | 4. februar 1986 | |
17.48 | 10. februar 1986 | Lansert 9. februar på net.emacs |
17.49 | 12. februar 1986 | |
17.55 | 18. mars 1986 | |
17.57 | 27. mars 1986 | |
17.58 | 4. april 1986 | |
17.61 | 12. april 1986 | Lansert 22. april 1986 på net.emacs |
17.63 | 7. mai 1986 | |
17.64 | 12. mai 1986 | |
18.24 | 2. oktober 1986 | En betaversjon. Tjenermodus,[90] M-x disassemble , Emacs kan åpne TCP/IP forbindelser, emacs -nw for å åpne Emacs som en konsollapplikasjon i xterm. |
18.41 | 22. mars 1987 | |
18.45 | 2. juni 1987 | |
18.46 | 8. eller 9. juni 1987 | |
18.47 | 10. eller 18. juni 1987 | |
18.48 | 30. august eller 3. september 1987 | |
18.49 | 16. eller 18. september 1987 | |
18.50 | 11. eller 13. februar 1988 | |
18.51 | 6. eller 7. mai 1988 | |
18.52 | 17. august 1988 | Innførte spook.el , et bibliotek som tilføyde enkelte «distraher NSA» nøkkelord (UNCPCJ Emergency management JITEM PEM bullion MSCJ Airplane SLIP rogue Gatt Ammonium nitrate Trafficking embassy Emergency TELINT) for hver melding man sendte over datanett.[27] |
18.53 | 23. eller 24. februar 1989 | |
18.54 | 26. april 1989 | |
18.55 | 18. eller 23. august 1989 | |
18.56 | 16. eller 17. januar 1991 | |
18.57 | 25. januar 1991 | |
18.58 | 18. februar 1991 | |
18.59 | 30. eller 31. oktober 1992 | |
19.7 | 22. mai 1993 | Første betautgave |
19.28 | 1. november 1994 | Første offisielle utgave av versjon 19. Støtte for flere rammer under vindussystemet X; VC (et nytt grensesnitt for versjonskontroll) ble innført, font-lock modus og hexl-modus for heksadesimal redigering |
19.29 | 19. juni 1995 | [91] |
19.30 | 24. november 1995 | Støtte for flere rammer på Microsoft Windows, menylinjen tilgjengelig på tekstbaserte dataterminaler, pakken pc-select emulerer vanlige tastaturkombinasjoner på Microsoft Windows og Macintosh.[28] |
19.31 | 25. mai 1996 | GNU Emacs åpner rammer i vindussystemet X som standard, rullefelt i Windows 95 og Windows NT, støtte for underprosesser i Windows 95. Kommandoen recover-session gjenoppretter multiple datafiler etter et datahavarier, noen av egenskapene i doctor.el ble fjernet for å tilpasse seg Communications Decency Act i USA.[28][29] |
19.32 | 31. juli 1996 | |
19.33 | 11. august 1996 | |
19.34 | 21. august 1996 | Utgave med feilrettinger som ikke var synlig for brukeren[28] |
19.34b | 6. september 1996 | |
20.1 | 17. september 1997 | Støtte for mange naturlige språk. |
20.2 | 19. eller 20. september 1997 | |
20.3 | 19. august 1998 | |
20.4 | 12. juli 1999 | På comp.emacs 27. juli 1999 |
20.5 | 4. desember 1999 | |
20.6 | 26. februar 2000 | |
20.7 | 13. juni 2000 | |
21.1 | 20. oktober 2001 | Støtte for fargevisning og andre egenskaper på dataterminaler, innebygd horisontal rulling, støtte for lyd, støtte for datamus med hjul, forbedret utseende av menylinjen, støtte for bilder, verktøyslinje og tooltip. Støtte for Unicode. |
21.2 | 16. mars 2002 | |
21.3 | 19. mars 2003 | |
21.4a | 17. februar 2005 | |
22.1 | 2. juni 2007 | Støtte for widget verktøyet GTK+, støtte for dra og slipp på vindussystemet X, støtte for programmeringsgrensesnittet Carbon i Mac OS X (bakoverkompatibilitet med Mac OS 8 og Mac OS 9), org-mode versjon 4.67d innlemmet[30] |
22.2 | 26. mars 2008 | Ny støtte for versjonskontrollsystemene GNU Bazaar, Mercurial, Monotone og Git. Nye store modi for å redigere datafiler for CSS, OpenVera, Verilog og . Forbedret støtte for rulling i bildemodus. |
22.3 | 5. september 2008 | Bedre støtte for GTK+, datamus, Unicode, og dra og slipp under vindussystemet X. Et nytt system for tastaturmakroer. Mange nye modi og pakker, deriblant et grafisk brukergrensesnitt til GNU Debugger, Python-modus, det matematiske verktøyet Calc, og systemet Tramp (Transparent Remote (file) Access, Multiple Protocol) for redigering av fjerne filer.[31] |
23.1 | 29. juli 2009 | Støtte for kantutjevnende fonter i vindussystemet X gjennom Xft,[32] bedre støtte for Unicode, Doc-view modus og nye pakker for å vise filer i formatene PDF og PostScript, forbindelse til prosesser gjennom D-Bus (dbus), forbindelse til GNU Privacy Guard (EasyPG), nXML-modus for å redigere XML-dokumenter, Ruby-modus for redigering av programmer i programmeringsspråket Ruby. Bruken av Carbon i Mac OS x, ble erstattet av det mer moderne grensesnittet Cocoa. |
23.2 | 8. mai 2010 | Nye verktøy for å bruke GNU Emacs som et integrert utviklingsmiljø, deriblant navigasjon over et prosjekt og automatisk generering av makefiler. Nye større modi for å redigere kildekode i JavaScript. I grafiske brukergrensesnitt, blir markøren skjult mens brukeren skriver. |
23.3 | 10. mars 2011 | Forbedret funksjonalitet for å bruke GNU Emacs i versjonskontrollsystemer. |
23.4 | 29. januar 2012 | Fikset en sikkerhetsfeil.[33] |
24.1 | 10. juni 2012 | Emacs Lisp Package Archive (ELPA), støtte for nye fargetemaer, GTK+3 som opsjon, støtte for toveis innmatning, støtte for leksikalsk prosjektramme i Emacs Lisp.[34] |
24.2 | 27. august 2012 | Utgave med feilrettinger.[92] |
24.3 | 10. mars 2013 | Generaliserte variabler blir en del av kjernen i Emacs Lisp, en oppdatinger for emuleringsbiblioteket Common Lisp, og en ny stor modus Python.[35] |
24.4 | 20. oktober 2014 | Støtte for aksesskontrollister og digitale signaturer i Emacs Lisp-pakker. Forbedret støtte for fullskjerm og flere skjermer. Støtte for å lagre og gjenopprette tilstanden til rammer og vinduer. Forbedret menystøtte på tekstbaserte dataterminaler. Enda en innebygd nettleser (M-x eww ). En ny modus for rektangulær merking (C-x SPC ). Støtte for datafilvarsling.[36] |
24.5 | 10. april 2015 | Hovedsakelig en utgave med feilrettinger.[93][94] |
25.1 | 17. september 2016 | Støtte for lasting av delte og dynamisk lenkede biblioteker. Validering av TLS/SSL-sertifikater. En ny mindre modus electric-quote-mode for å bruke buede sitater. Støtte for tegnbretting i isearch.el . Støtte for innbakte widgeter i Emacs-buffere. Nye og forbedrede fasiliteter for å innsetting av Unicode-tegn.[37] |
26.1 | 28. mai 2018 | Begrenset form for parallellprosessering med Lisp-tråder. Støtte for visning av linjenummer i bufferet. Emacs bruker nå dobbel buffering for å redusere flimmer i vindussystemet X. Programmet Flymake var blitt fullstendig omskrevet. TRAMP har en ny forbindelsesmetode for Google Drive. En ny horisontal rullemetode for enkeltlinje-modus. En brukerfil for systemd er inkludert. Støtte for 24-biters farger på dataterminaler.[38] |
26.2 | 12. april 2019 | Emacs-moduler kunne nå bygges på utsiden av kilde-treet til GNU Emacs. Støtte for Unicode versjon 11.0. |
26.3 | 28. august 2019 | Ny GPG-nøkkel for signatursjekking for GNU ELPA (Emacs Lisp Package Archive) |
27.1 | 10. august 2020 | Innebygd støtte for heltall av arbitrær størrelse. Tekstforming med HarfBuzz, støtte for JSON-parsing, og bedre støtte for tegning av fonten Cairo (fra Macintosh). Portabel dumping benyttes i stedet for unexec. Støtte for XDG-konvensjoner for initfiler. Tilføyde en tidlig-init initialiseringsfil. Leksikalsk binding er blitt standard. Innebygd støtte for fanefelt og fanelinje. Støtte for endring av størrelsen på og rotering av bilder uten ImageMagick. |
27.2 | 25. mars 2021 | Versjon med feilrettinger |
28.1 | 4. april 2022 | Native kompilering av Lisp-filer. Tekstforming med HarfBuzz og tegning med Cairo. Støtte for loading Secure Computing filtre. Svært forbedret visning av Emoji og Emojisekvenser. Mode-spesifikke kommandoer. Emacs viser matchende parenteser som standard. |
28.2 | 12. september 2022 | Versjon med feilrettinger |
Referanser
- ^ Stefan Kangas (22. juni 2024). «Emacs 29.4 released» (engelsk). Besøkt 22. juni 2024.
- ^ «The emacs Open Source Project on Open Hub: Languages Page». Open Hub. Besøkt 5. september 2018.
- ^ Free Software Directory, Free Software Directory ID emacs, Wikidata Q2470288, https://directory.fsf.org
- ^ Free Software Directory, Free Software Directory ID emacs, besøkt 11. august 2020[Hentet fra Wikidata]
- ^ «GNUMACS».
- ^ «"Learning GNU Emacs, Third Edition": A Guide to the World's Most Extensible, Customizable Editor».
- ^ «The Linux Programmer's Toolbox».
- ^ «Learning GNU Emacs».
- ^ a b c d e f g h i Richard M. Stallman: EMACS: The Extensible, Customizable Display Editor, 1981, gjengitt på gnu.org, 11. januar 1998
- ^ EmacsHistory, emacswiki.org, 1. mars 2019
- ^ https://raw.githubusercontent.com/mietek/mit-cadr-system-software/master/src/lmdoc/kbdpro.3
- ^ «Re: Pretty-lambdas».
- ^ «I know this is another "neckbeard" comment (Love that term), but anyone who ever... | Hacker News».
- ^ Learning GNU Emacs, 2nd Edition. Sebastopol, CA: O'Reilly. 1996. s. 408–409. ISBN 1-56592-152-6.
- ^ Text Editor and COrector, almy.us/teco.html, mai 2017
- ^ Stallman, Richard (28. oktober 2002), My Lisp Experiences and the Development of GNU Emacs, https://www.gnu.org/gnu/rms-lisp.html
- ^ Sam Williams. «6. The Emacs Commune». Free as in freedom. ISBN 0-596-00287-4.
- ^ Sam Williams. «9. The GNU General Public License». Free as in freedom. ISBN 0-596-00287-4.
- ^ Jamie Zawinski: Emacs Timeline, wikiwix.com, 8. mars 1999, oppdatert 29.oktober 2007
- ^ a b c d e f g h i j k l «Xemacs Internals». Arkivert fra originalen 12. oktober 2020. Besøkt 10. oktober 2020.
- ^ Stoll, Clifford (1988). «Stalking the wily hacker». Communications of the ACM. 31 (5): 484–497. doi:10.1145/42411.42412.
- ^ Facebook is surveillance monster feeding on our personal data, Richard Stallman, Russia Today Youtube Channel.
- ^ Stallman, Richard M. (14. oktober 2013). «Stallman: How Much Surveillance Can Democracy Withstand?». Wired. ISSN 1059-1028.
- ^ Stallman, Richard (3. april 2018). «A radical proposal to keep your personal data safe | Richard Stallman». The Guardian (engelsk). ISSN 0261-3077.
- ^ «'Join fight for privacy now!' Stallman on Snowden & how to escape surveillance». RT News. 17. juli 2013. Besøkt 17. juli 2014.
- ^ «Richard Stallman: surveillance is incompatible with democracy». Livemint.com. 22. januar 2014. Besøkt 27. mars 2015.
- ^ a b «NEWS.18».
- ^ a b c d e «NEWS.19».
- ^ a b «Emacs Timeline».
- ^ a b Free Software Foundation Inc (2007). «Emacs News version 22.1». Besøkt 29. desember 2013.
- ^ a b Zawodny, Jeremy (15. desember 2003). «Emacs Remote Editing with Tramp». Linux Magazine. Besøkt 1. februar 2010. «Tramp [...] stands for "Transparent Remote (file) Access, Multiple Protocol."»
- ^ a b «emacs-fu: emacs 23 has been released!». Emacs-fu.blogspot.com. 28. juli 2009. Besøkt 8. november 2009.
- ^ a b Yidong, Chong (9. januar 2012). «Security flaw in EDE; new release plans». Besøkt 23. februar 2012.
- ^ a b Yidong, Chong (1. juni 2012). «Emacs release candidate 24.1». Besøkt 1. juni 2012.
- ^ a b Morris, Glenn (10. mars 2013). «Emacs 24.3 released». Besøkt 16. mars 2013.
- ^ a b Morris, Glenn (20. oktober 2014). «Emacs 24.4 released». Besøkt 22. oktober 2014.
- ^ a b «Emacs 25.1 released». lists.gnu.org. Besøkt 17. september 2016.
- ^ a b «Emacs 26.1 released». lists.gnu.org. Besøkt 29. mai 2018.
- ^ «Re: GNU EMACS». GNU. Besøkt 16. november 2014. ]
- ^ «Re: Looking for a new Emacs maintainer or team». gnu.org Mailing List. Besøkt 23. februar 2008. ; see also "Stallman on handing over GNU Emacs, its future and the importance of nomenclature"
- ^ «Feature freeze». lists.gnu.org.
- ^ «Emacs gets new maintainer as Richard Stallman signs off».
- ^ a b c «I have contributed to GNU Emacs just short of a decade […]» http://groups.google.com/group/comp.lang.lisp/msg/e239591cbc9eb18d
- ^ a b Erik Naggum, Emacs Wiki, sist endret 24. august 2013
- ^ Common Lisp Hyperspec, Emacs Wiki, sist endret 13. mars 2019
- ^ Common Lisp Emacs, Emacs Wiki, sist endret 27. september 2013
- ^ Re: CL-Emacs (was Re: Multiple LISP's?), comp.lang.lisp, 27. september 2001, 13:58:59 GMT
- ^ "Open source software research activities in AIST towards secure open systems", by Kazuhito Ohmaki, in Proceedings of the 7th IEEE International Symposium on High Assurance Systems Engineering (HASE'02), p. 37-, 2002 ISBN 0-7695-1769-2. IEEE Computer Society, Washington, D.C.
- ^ «NEWS.1-17».
- ^ «GNU Emacs FAQ».
- ^ Brockmeier, Joe (29. juli 2011). «Say what? GNU Emacs violates the GPL». Network World. Besøkt 19. januar 2016.
- ^ License revoked: Applying Section 4 of the GPL and the lessons of Best Buy to Google’s Android Arkivert 27. januar 2016 hos Wayback Machine. Arkivert 2016-01-27 hos Wayback Machine by Edward J. Naughton (Aug 8, 2011)
- ^ Emacs Has Been Violating the GPL Since 2009 on slashdot.org (2011)
- ^ Re: Compiled files without sources???? på lists.gnu.org by Richard Stallman (Jul 28, 2011)
- ^ a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å aa Waclena 2009
- ^ Halme, Heikki; Heinänen, Juha (1988). «GNU Emacs as a dynamically extensible programming environment». Software: Practice and Experience. 18 (10): 999–1009. doi:10.1002/spe.4380181006.
- ^ Spinellis, Diomidis; Gousios, Georgios (15. januar 2009). Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design. ISBN 9780596554392.
- ^ Heiberger, Richard M.; Holland, Burt (23. desember 2015). Statistical Analysis and Data Display: An Intermediate Course with Examples in R. ISBN 9781493921225.
- ^ «Saving Emacs Sessions».
- ^ «Echo Area».
- ^ «A Tutorial Introduction to GNU Emacs».
- ^ «Frames - GNU Emacs Manual». «However, it is still possible to create multiple “frames” on text terminals; such frames are displayed one at a time, filling the entire terminal screen»
- ^ Cameron, Debra; Rosenblatt, Bill; Raymond, Eric S. (1996). Learning GNU Emacs. In a Nutshell Series (2 utg.). O'Reilly Media, Inc. s. 533. ISBN 978-1-56592-152-8. Besøkt 2. november 2010. «A face is a font and colour combination.»
- ^ «Initial Options».
- ^ «BatchMode».
- ^ «Alphabet Soup: The Internationalization of Linux, Part 1 Linux Journal March 1999». «With the availability of fonts and, where necessary, internationalized terminal emulators, Emacs can simultaneously handle most of the world's languages.»
- ^ «Command Line Arguments».
- ^ a b Stallman, Richard (3. juni 2007). «Emacs 22.1 released». Besøkt 31. juli 2011.
- ^ Feng, Chris (27. november 2017). «exwm: Emacs X Window Manager» – via GitHub.
- ^ «Babel: Introduction».
- ^ «6.1 Does Emacs have problems with files larger than 8 megabytes?».
- ^ «"Learning GNU Emacs, Third Edition": A Guide to the World's Most Extensible, Customizable Editor».
- ^ B, Ramprasad (24. juni 2005). «GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000». Besøkt 27. september 2006.
- ^ Borgman, Lennart (2006). «EmacsW32 Home Page». Arkivert fra originalen 6. mars 2007. Besøkt 27. september 2006. «Arkivert kopi». Arkivert fra originalen 6. mars 2007. Besøkt 4. november 2020.
- ^ «GNU Emacs on Windows». Franz Inc. 2006. Besøkt 27. september 2006.
- ^ «Emacs machines list».
- ^ «Carbon Emacs Package». Besøkt 10. juni 2012.
- ^ «Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X». Besøkt 27. september 2006.
- ^ «Emacs on Android». EmacsWiki.
- ^ «CategoryPorts». EmacsWiki.
- ^ Stephen J., Turnbull. «XEmacs vs. GNU Emacs». Besøkt 2. oktober 2012.
- ^ «XEmacs is Dead. Long Live XEmacs!».
- ^ «FrontPage - Meadow Wiki». 16. februar 2012. Arkivert fra originalen 16. februar 2012. «Arkivert kopi». Arkivert fra originalen 16. februar 2012. Besøkt 3. november 2020.
- ^ «SXEmacs Website». Sxemacs.org. 11. oktober 2009. Besøkt 8. november 2009.
- ^ «Remacs». The Remacs github repository. Besøkt 22. februar 2017.
- ^ «NEWS.24.5». «GNU Emacs NEWS -- history of user-visible changes.»
- ^ «Antinews».
- ^ Emacs Timeline. Jwz.org, besøkt 17. juli 2013
- ^ a b «NEWS.1-17».
- ^ «NEWS.18». «Programs such as mailers that invoke "the editor" as an inferior to edit some text can now be told to use an existing Emacs process instead of creating a new editor.»
- ^ «GNUs Flashes».
- ^ Yidong, Chong (27. august 2012). «Emacs release candidate 24.2». Besøkt 11. november 2012.
- ^ «GNU Emacs NEWS -- history of user-visible changes.». 10. april 2015. Besøkt 11. april 2015.
- ^ Petton, Nicolas (10. april 2015). «Emacs 24.5 released». Arkivert fra originalen 11. april 2015. Besøkt 11. april 2015. «Arkivert kopi». Arkivert fra originalen 11. april 2015. Besøkt 15. oktober 2020.
Kilder
Nettsteder
- Waclena, Keith (2009). A Tutorial Introduction to GNU Emacs. The University of Chicago Library, 3. februar 2009, 23:37:14 CST.
Litteratur
- Richard M. Stallman, EMACS Manual for ITS Users, Artificial Intelligence Lab memo 554, 1980.
- Richard M. Stallman, EMACS Manual for TWENEX Users, Artificial Intelligence Lab memo 555, 1980.
Eksterne lenker
- (en) Offisielt nettsted
- (en) Emacs – kategori av bilder, video eller lyd på Commons
- (en) Unofficial Emacs wiki