GNU Emacs

Fra Wikipedia, den frie encyklopedi
GNU Emacs
Skaper(e)Richard M. Stallman
Utvikler(e)GNU-prosjektet
Utgitt 1984
Nyeste versjon29.3 (24. mars 2024)[1]
Kodelagerhttps://git.savannah.gnu.org/cgit/emacs.git
OperativsystemGNU/Linux BSD Microsoft Windows macOS GNU/Hurd Unix-liknende multiplattform
Skrevet iEmacs Lisp[2]
SkrivebordsmiljøX Athena Widgets, GTK
LisensGPL-3.0+[3]
Nettstedwww.gnu.org (en)[4]
ForgjengerEmacs
EtterfølgerNemacs, XEmacs, Remacs, Aquamacs, SXEmacs, Meadow

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[rediger | rediger kilde]

Fra TECO og E til Emacs[rediger | rediger kilde]

Utdypende artikler: TECO og 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]

Richard M. Stallman (f. 1953) er grunnleggeren av GNU-prosjektet og opphavsmannen til GNU Emacs.
Grensesnittet til Emacs var påvirket av designet til space-cadet tastaturet fra Symbolics.

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[rediger | rediger kilde]

Redigering av flere Dired-buffere med brukerdefinerte farger i GNU Emacs.
Redigering av kildekode i programmeringsspråket C in GNU Emacs
Redigering og kompilering av C++-kode fra GNU Emacs
Avlusing av et PHP-skript under GNU Emacs
GNU Emacs 23.1.1 som kjører på GNU/Linux.
Skjermskudd av GNU Emacs 23.1.1.

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[rediger | rediger kilde]

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[rediger | rediger kilde]

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[rediger | rediger kilde]

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[rediger | rediger kilde]

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.

Logoen for GNU Emacs versjon 23

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[rediger | rediger kilde]

Kommandoer[rediger | rediger kilde]

Skjermbilde av GNU Emacs 22.0.91.1 fra Ubuntu's 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]

Nedenfor har vi vist en del vanlige kommandoer. Mange av disse kombinerer flere modifiseringsnøkler.[55]

Starte og lukke GNU Emacs[rediger | rediger kilde]

  • 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 eller save-buffers-kill-emacs lagrer alle buffere og avslutter GNU Emacs.[55]
  • C-x C-z eller suspend-emacs, suspenderer GNU Emacs i Unix-terminologien (stanser programmet og plasserer det i bakgrunnen). Hvordan programmet restartes avhenger av skallet (mest sannsynlig via kommandoen fg)[55]

Modifisering av datafiler[rediger | rediger kilde]

Kommandolinjeavslutning i Unix-skallet Bash. GNU Emacs støtter kommandolinjeavslutning i minibufferet.
  • C-x C-f eller find-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 eller save-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 eller save-some-buffers. Denne kommandoen lagrer alle buffere som besøker datafiler, med spørsmål og opsjoner for hver enkelt.[55]

Manipulering av databuffere[rediger | rediger kilde]

GNU Emacs 23.3.1 med minibuffer nederst.

Følgende kommandoer brukes til å manipulere datafiler:[55]

  • C-x b eller switch-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 eller list-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 eller kill-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 eller vc-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[rediger | rediger kilde]

  • C-v eller scroll-up. Kommando som ruller fremover en skjerm av gangen.[55]
  • M-v eller scroll-down. Kommando som ruller bakover en skjerm av gangen.[55]
  • C-x o eller other-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 eller delete-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 eller delete-window. Sletter det nærværende vindu, og endrer størrelsen på de andre.[55]
  • C-x 2 eller split-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 eller split-window-horizontally. Deler et vindu i to, horisontalt.[55]
  • C-M-v eller scroll-other-window. Liksom C-v, men ruller fremover til neste vindu. Hvis det er mer enn to vinduer, vil neste vindu være det som C-x o svitsjer til.[55]

Hjelpefunksjoner[rediger | rediger kilde]

  • C-h a eller command-apropos. Ber om et nøkkelord og lister deretter alle kommandoer med dette nøkkelordet i lange navn.[55]
  • C-h k eller describe-key. Ber om en tast og beskriver kommandoer knyttet til denne tasten.[55]
  • C-h i eller info. Ber om hypertekst-dokumentleseren Info.[55]
  • C-h m eller describe-mode. Beskriver den gjeldende store modus og dens spesielle bindinger til taster.[55]
  • C-h p eller finder-by-keyword. Kjører en interaktiv emneorientert leser av Emacs-pakker[55]
  • C-h t eller help-with-tutorial. Kjører en opplæring i GNU Emacs.[55]

Modifisering av eksterne programmer[rediger | rediger kilde]

Statuslinjen i GNU Emacs.

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[rediger | rediger kilde]

Redigering av spansk wikipedia under GNU Emacs.
Nettleseren Emacs Web Wowser (eww) i GNU Emacs viser Emacs-artikkelen i engelsk wikipedia. Skrivebordsmiljøet er KDE 4.13.2

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[rediger | rediger kilde]

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]

GNU Emacs på distribusjonen Parabola GNU/Linux-libre med skrivebordsmiljøet GNOME.

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[rediger | rediger kilde]

GNU Emacs sammen med GNU Icecat og Xtermskrivebordsmiljøet Xfce på distribusjonen GNU Guix System.

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[rediger | rediger kilde]

GNU Emacs sammen med en PDF-leser og Xtermskrivebordsmiljøet Xfce på distribusjonen GNU Guix System.

«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[rediger | rediger kilde]

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[rediger | rediger kilde]

Grønn versjon av Emacs-logoen.

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[rediger | rediger kilde]

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[rediger | rediger kilde]

GNU Emacs med AUCTeX, et sett med verktøy for å redigere dokumenter i formatene til TEX- og LATEX
Nyhetsleseren og e-postklienten Gnus 5.11 for Emacs på Fedora Core 6 «Zod».
IRC-klienten ERC som kjører på GNU Emacs 24.3.
Tekstfil som viser et tre i GNU Emacs org-mode.

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:

Ytelse[rediger | rediger kilde]

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[rediger | rediger kilde]

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[rediger | rediger kilde]

XEmacs[rediger | rediger kilde]

Utdypende artikkel: XEmacs

XEmacs 21.5 på GNU/Linux

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[rediger | rediger kilde]

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[rediger | rediger kilde]

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 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[rediger | rediger kilde]

  1. ^ Eli Zaretskii (24. mars 2024). «Emacs 29.3 released» (engelsk). Besøkt 28. mars 2024. 
  2. ^ «The emacs Open Source Project on Open Hub: Languages Page». Open Hub. Besøkt 5. september 2018. 
  3. ^ Free Software Directory, Free Software Directory ID emacs, Wikidata Q2470288, https://directory.fsf.org 
  4. ^ Free Software Directory, Free Software Directory ID emacs, besøkt 11. august 2020[Hentet fra Wikidata]
  5. ^ «GNUMACS». 
  6. ^ «"Learning GNU Emacs, Third Edition": A Guide to the World's Most Extensible, Customizable Editor». 
  7. ^ «The Linux Programmer's Toolbox». 
  8. ^ «Learning GNU Emacs». 
  9. ^ 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
  10. ^ EmacsHistory, emacswiki.org, 1. mars 2019
  11. ^ https://raw.githubusercontent.com/mietek/mit-cadr-system-software/master/src/lmdoc/kbdpro.3
  12. ^ «Re: Pretty-lambdas». 
  13. ^ «I know this is another "neckbeard" comment (Love that term), but anyone who ever... | Hacker News». 
  14. ^ Learning GNU Emacs, 2nd Edition. Sebastopol, CA: O'Reilly. 1996. s. 408–409. ISBN 1-56592-152-6. 
  15. ^ Text Editor and COrector, almy.us/teco.html, mai 2017
  16. ^ Stallman, Richard (28. oktober 2002), My Lisp Experiences and the Development of GNU Emacs, https://www.gnu.org/gnu/rms-lisp.html 
  17. ^ Sam Williams. «6. The Emacs Commune». Free as in freedom. ISBN 0-596-00287-4. 
  18. ^ Sam Williams. «9. The GNU General Public License». Free as in freedom. ISBN 0-596-00287-4. 
  19. ^ Jamie Zawinski: Emacs Timeline, wikiwix.com, 8. mars 1999, oppdatert 29.oktober 2007
  20. ^ 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. 
  21. ^ Stoll, Clifford (1988). «Stalking the wily hacker». Communications of the ACM. 31 (5): 484–497. doi:10.1145/42411.42412. 
  22. ^ Facebook is surveillance monster feeding on our personal data, Richard Stallman, Russia Today Youtube Channel.
  23. ^ Stallman, Richard M. (14. oktober 2013). «Stallman: How Much Surveillance Can Democracy Withstand?». Wired. ISSN 1059-1028. 
  24. ^ Stallman, Richard (3. april 2018). «A radical proposal to keep your personal data safe | Richard Stallman». The Guardian (engelsk). ISSN 0261-3077. 
  25. ^ «'Join fight for privacy now!' Stallman on Snowden & how to escape surveillance». RT News. 17. juli 2013. Besøkt 17. juli 2014. 
  26. ^ «Richard Stallman: surveillance is incompatible with democracy». Livemint.com. 22. januar 2014. Besøkt 27. mars 2015. 
  27. ^ a b «NEWS.18». 
  28. ^ a b c d e «NEWS.19». 
  29. ^ a b «Emacs Timeline». 
  30. ^ a b Free Software Foundation Inc (2007). «Emacs News version 22.1». Besøkt 29. desember 2013. 
  31. ^ 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."» 
  32. ^ a b «emacs-fu: emacs 23 has been released!». Emacs-fu.blogspot.com. 28. juli 2009. Besøkt 8. november 2009. 
  33. ^ a b Yidong, Chong (9. januar 2012). «Security flaw in EDE; new release plans». Besøkt 23. februar 2012. 
  34. ^ a b Yidong, Chong (1. juni 2012). «Emacs release candidate 24.1». Besøkt 1. juni 2012. 
  35. ^ a b Morris, Glenn (10. mars 2013). «Emacs 24.3 released». Besøkt 16. mars 2013. 
  36. ^ a b Morris, Glenn (20. oktober 2014). «Emacs 24.4 released». Besøkt 22. oktober 2014. 
  37. ^ a b «Emacs 25.1 released». lists.gnu.org. Besøkt 17. september 2016. 
  38. ^ a b «Emacs 26.1 released». lists.gnu.org. Besøkt 29. mai 2018. 
  39. ^ «Re: GNU EMACS». GNU. Besøkt 16. november 2014. ]
  40. ^ «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"
  41. ^ «Feature freeze». lists.gnu.org. 
  42. ^ «Emacs gets new maintainer as Richard Stallman signs off». 
  43. ^ a b c «I have contributed to GNU Emacs just short of a decade […]» http://groups.google.com/group/comp.lang.lisp/msg/e239591cbc9eb18d
  44. ^ a b Erik Naggum, Emacs Wiki, sist endret 24. august 2013
  45. ^ Common Lisp Hyperspec, Emacs Wiki, sist endret 13. mars 2019
  46. ^ Common Lisp Emacs, Emacs Wiki, sist endret 27. september 2013
  47. ^ Re: CL-Emacs (was Re: Multiple LISP's?), comp.lang.lisp, 27. september 2001, 13:58:59 GMT
  48. ^ "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.
  49. ^ «NEWS.1-17». 
  50. ^ «GNU Emacs FAQ». 
  51. ^ Brockmeier, Joe (29. juli 2011). «Say what? GNU Emacs violates the GPL». Network World. Besøkt 19. januar 2016. 
  52. ^ 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)
  53. ^ Emacs Has Been Violating the GPL Since 2009 on slashdot.org (2011)
  54. ^ Re: Compiled files without sources???? på lists.gnu.org by Richard Stallman (Jul 28, 2011)
  55. ^ 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
  56. ^ 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. 
  57. ^ Spinellis, Diomidis; Gousios, Georgios (15. januar 2009). Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design. ISBN 9780596554392. 
  58. ^ Heiberger, Richard M.; Holland, Burt (23. desember 2015). Statistical Analysis and Data Display: An Intermediate Course with Examples in R. ISBN 9781493921225. 
  59. ^ «Saving Emacs Sessions». 
  60. ^ «Echo Area». 
  61. ^ «A Tutorial Introduction to GNU Emacs». 
  62. ^ «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» 
  63. ^ 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.» 
  64. ^ «Initial Options». 
  65. ^ «BatchMode». 
  66. ^ «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.» 
  67. ^ «Command Line Arguments». 
  68. ^ a b Stallman, Richard (3. juni 2007). «Emacs 22.1 released». Besøkt 31. juli 2011. 
  69. ^ Feng, Chris (27. november 2017). «exwm: Emacs X Window Manager» – via GitHub. 
  70. ^ «Babel: Introduction». 
  71. ^ «6.1 Does Emacs have problems with files larger than 8 megabytes?». 
  72. ^ «"Learning GNU Emacs, Third Edition": A Guide to the World's Most Extensible, Customizable Editor». 
  73. ^ B, Ramprasad (24. juni 2005). «GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000». Besøkt 27. september 2006. 
  74. ^ 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. 
  75. ^ «GNU Emacs on Windows». Franz Inc. 2006. Besøkt 27. september 2006. 
  76. ^ «Emacs machines list». 
  77. ^ «Carbon Emacs Package». Besøkt 10. juni 2012. 
  78. ^ «Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X». Besøkt 27. september 2006. 
  79. ^ «Emacs on Android». EmacsWiki. 
  80. ^ «CategoryPorts». EmacsWiki. 
  81. ^ Stephen J., Turnbull. «XEmacs vs. GNU Emacs». Besøkt 2. oktober 2012. 
  82. ^ «XEmacs is Dead. Long Live XEmacs!». 
  83. ^ «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. 
  84. ^ «SXEmacs Website». Sxemacs.org. 11. oktober 2009. Besøkt 8. november 2009. 
  85. ^ «Remacs». The Remacs github repository. Besøkt 22. februar 2017. 
  86. ^ «NEWS.24.5». «GNU Emacs NEWS -- history of user-visible changes.» 
  87. ^ «Antinews». 
  88. ^ Emacs Timeline. Jwz.org, besøkt 17. juli 2013
  89. ^ a b «NEWS.1-17». 
  90. ^ «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.» 
  91. ^ «GNUs Flashes». 
  92. ^ Yidong, Chong (27. august 2012). «Emacs release candidate 24.2». Besøkt 11. november 2012. 
  93. ^ «GNU Emacs NEWS -- history of user-visible changes.». 10. april 2015. Besøkt 11. april 2015. 
  94. ^ 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[rediger | rediger kilde]

Nettsteder[rediger | rediger kilde]

Litteratur[rediger | rediger kilde]

  • 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[rediger | rediger kilde]