Emacs

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Emacs
software
Siglă
Captură de ecran a Emacs (versiunea Alpha cu suport pentru bibliotecă GTK + și Xft cu anti-aliasing).
Captură de ecran a Emacs (versiunea Alpha cu suport pentru bibliotecă GTK + și Xft cu anti-aliasing ).
Tip Editor de text
Dezvoltator David A. Moon
Data primei versiuni 1976
Ultima versiune 27,1 (10 august 2020)
Sistem de operare WILDEBEEST
Microsoft Windows
macOS
TECO
Limba Lisp
TECO
C.
Licență GPLv3 +
( licență gratuită )

Emacs este un editor de text gratuit extrem de versatil , care este foarte popular printre programatori. Acesta a fost inițial dezvoltat de Richard Stallman începând cu luna septembrie anul 1984 [1] , ca un set de E ditor MAC ro S pentru TECO editor.

Emacs face parte din proiectul GNU și este în curs de dezvoltare activă. Mulți, deși nu toți, dezvoltatorii sunt afiliați la Free Software Foundation (FSF). Este un software multiplataforma, dintre care cele mai populare versiuni sunt două: GNU Emacs (scris și de Stallman) și ruda sa apropiată XEmacs . Cuvântul minuscul emacs poate fi folosit pentru a identifica acea clasă de editor care funcționează similar cu Emacs original.

Cuvântul Emacs (cu majuscule) este adesea folosit ca sinonim pentru GNU Emacs.

Istorie

Emacs a fost creat în laboratorul de inteligență artificială (AI) al MIT . Înainte de introducerea sa, editorul utilizat în mod obișnuit pe sistemul de operare ITS ( sistemul de operare al computerelor PDP-6 și PDP-10 prezente în laborator) era TECO . Spre deosebire de editorii de text moderni, TECO a separat sarcina de tastare a textului de editare, astfel încât editarea unui document necesită scrierea unui set de instrucțiuni pentru limbajul intern al TECO.

Această operațiune este similară cu programul și , încă folosită astăzi.

Carl Mikkelsen, unul dintre hackerii de la laboratorul AI al MIT, a adăugat un mod de editare-vizualizare la TECO, care a permis actualizarea ecranului prezentat de fiecare dată când utilizatorul a apăsat o tastă. Acest mod mult mai intuitiv, folosit de majoritatea editorilor de text moderni, a fost introdus cu editorul „E” dezvoltat la laboratoarele de inteligență artificială din Stanford . În 1974 , Richard Stallman (un alt hacker) a adăugat o funcționalitate macro la modul de vizualizare editare TECO. Acest lucru a permis utilizatorului să definească secvențe cheie asociate cu executarea programelor TECO, pentru a finaliza anumite sarcini, cum ar fi citirea sau scrierea fișierelor.

Utilizatorii din laboratorul AI au acumulat rapid o mare colecție de macro-uri personalizate. În 1976 , Guy Steele a încercat să unifice aceste seturi divergente de macro-uri. Proiectarea sa a fost completată de Stallman, care a scris și funcționalități pentru extindere și autodocumentare. Programul rezultat a fost numit EMACS . De fapt, deși a fost construit deasupra TECO, funcționarea sa a fost atât de diferită încât a trebuit să fie considerată un editor de text separat.

Ecran de întâmpinare afișat în versiunea grafică a GNU Emacs.

„EMACS” este contracția „Editorului MACroS”. Potrivit lui Stallman, numele Emacs a fost folosit „pentru că nu era folosit la acea vreme ca prescurtare pe ITS”. A fost subliniat faptul că „ Emack și a lui Bolio “ a fost numele unui foarte popular inghetata magazin în Boston , situat la distanță de mers pe jos de la MIT. Programul de formatare a textului utilizat pe ITS a fost numit BOLIO.

EMACS a devenit în curând editorul standard al ITS. De asemenea, a fost portat de ITS la sistemele de operare Tenex și TOPS-20 de către Stallman și Michael McMahon.

Mai mulți editori de tip Emacs au fost dezvoltați în anii următori, inclusiv EINE (EINE Is Not EMACS) și ZWEI (ZWEI Was EINE Initial) de Michael McMahon și Daniel Weinreb. În 1978 , Bernard Greenberg a scris Emacs pentru Multics la Honeywell 's Information Systems Lab din Cambridge . Acest editor a fost dezvoltat în MacLisp , un dialect al limbajului de programare Lisp (limbaj funcțional foarte popular, mai ales în acei ani, tocmai în domeniul inteligenței artificiale). Extensiile de program create de utilizator au fost întotdeauna scrise în Lisp. Alegerea de a utiliza Lisp a oferit o extensibilitate mai mare, o alegere apoi imitată de majoritatea emac-urilor ulterioare.

Gosling Emacs, primul editor de tip Emacs care rulează pe Unix , a fost scris de James Gosling în 1981 . Aceasta a fost scrisă în C și a folosit o versiune dezactivată a Lisp, cunoscută sub numele de Mocklisp , ca limbaj de extensie.

În 1984 , Stallman a început să scrie o nouă implementare emacs, GNU Emacs , care a devenit primul program al noului proiect GNU . GNU Emacs a fost scris și în C și a folosit Emacs Lisp pentru extensiile sale. Prima versiune larg distribuită a GNU Emacs a fost revizuirea 15.34, care a apărut în 1985 . La fel ca Gosling Emacs, GNU Emacs a rulat pe Unix; cu toate acestea, GNU Emacs avea mult mai multe funcționalități, mai ales o implementare completă Lisp ca limbaj de extensie. Drept urmare, în curând l-a înlocuit pe Gosling Emacs ca editor de facto Emacs pe Unix.

Începând din 1991 , Lucid Emacs a fost dezvoltat de Jamie Zawinski și alții de la Lucid Inc., bazat pe o versiune alfa a GNU Emacs 19. În curând cele două coduri de bază s-au divergut, iar grupurile de dezvoltare separate au încetat să încerce să le reintegreze într-un singur program. Până la lansarea Emacs 21.1 ( 1999 ), dezvoltarea Emacs a fost relativ închisă. Proiectul a adoptat de atunci o listă de discuții de dezvoltare publică și un acces CVS anonim. Ca în toate proiectele GNU, este o practică obișnuită în dezvoltarea Emacs să accepte contribuții semnificative la cod numai dacă contribuitorul atribuie drepturile de autor pentru cod către FSF, deși s-a făcut o excepție pentru codul MULE ( MUL tilingual E xtension) [1 ] ca titular al drepturilor de autor (guvernul japonez ) nu a permis această cesiune. Acest lucru nu se aplică rapoartelor de erori sau contribuțiilor minime de cod, unde contribuțiile minime sunt definite ca 10 linii de cod sau mai puțin. Acest sistem există pentru a facilita aplicarea copyleft-ului .

Descriere

Manualul GNU Emacs descrie acest mediu ca „editorul de afișare extensibil, personalizabil, auto-documentat și în timp real”. (editorul în timp real, extensibil, personalizabil, autodocumentat și vizual.)

Interfața cu utilizatorul

Emacs stochează text în obiecte numite tampoane . Utilizatorul poate crea noi tampoane și închide altele neutilizate, mai multe tampoane pot exista în același timp. Majoritatea bufferelor conțin text încărcat dintr-un fișier text pentru editare utilizator. În același timp, tampoanele pot fi utilizate în alte scopuri; de exemplu, utilizatorul ar putea crea tampoane goale pentru a stoca temporar text.

Fiecare ecran Emacs (care poate fi o singură „fereastră” într-un sistem de ferestre sau un ecran complet într-un terminal ) poate afișa unul sau mai multe buffere în același timp. Dacă sunt afișate mai multe buffere, zona ecranului este împărțită în mai multe secțiuni (la care se referă Emacs, creând confuzie, cum ar fi ferestrele sau ferestrele). Într-un sistem de ferestre, pot fi create mai multe ferestre Emacs (la care Emacs se referă ca cadre ).

Utilizatorul invocă comenzi pentru editarea textului apăsând apăsările de taste. În plus față de comenzile obișnuite pentru inserarea și ștergerea textului, Emacs oferă un set de comenzi mai exotice, cum ar fi mutarea punctului de editare la următoarea propoziție, deschiderea tuturor fișierelor dintr-un director și efectuarea operațiilor de căutare și înlocuire. Majoritatea acestor comenzi pot fi activate cu o combinație de taste. Versiunile mai recente ale Emacs oferă meniuri grafice pentru cele mai frecvente comenzi. (Majoritatea comenzilor, chiar si cel mai simplu ca a pentru introducerea caracterului, sunt apeluri de fapt funcții Emacs Lisp, descrise mai jos).

Emacs acceptă multe codificări de caractere , inclusiv UTF-8 . O versiune cu suport Unicode complet este în curs de dezvoltare. Pentru utilizatorii cu deficiențe de vedere există un subsistem numit Emacspeak care poate fi încărcat. Permite editorului să fie utilizat numai cu feedback sonor. Emacs are, de asemenea, propria sa politică de atribuire a cheilor funcțiilor care au evoluat din 1976 și care pot fi descrise în acest fel:

  • Comenzile sunt asociate cu secvențe de taste care sunt cât mai mnemonice posibil
  • În general , dacă o comandă apelată cu Control + lettera acționează la nivelul unei singure litere, atunci corespunzătoare Meta + lettera acționează la nivelul cuvântului și Control + Meta + lettera (dacă este definită) acționează la nivelul structurilor sintactice.
  • Cele mai frecvente comenzi sunt activate mai repede decât cele de utilizare mai mică
    • Cele mai frecvente sunt asociate cu Control + lettera , Meta + lettera și Control + Meta + lettera . Exemple se deplasează în text, șterge, copiază zone de text, transpune litere sau cuvinte ...
    • Comenzile de uz general utilizate mai puțin frecvent sunt declanșate prin prefixul Control + x (de exemplu, încărcați un fișier într-un buffer sau salvați conținutul unui buffer într-un fișier)
    • Comenzile tipice unui anumit tip de fișier sunt activate cu prefixul Control + c (compilarea unei surse, trimiterea unui mesaj de e-mail)
    • alte comenzi sunt invocate cu numele lor complet dând comanda Meta + x (de exemplu set-background-color, pentru a seta culoarea de fundal acolo unde sunt acceptate culorile).

(Notă: Meta fost o cheie prezentă pe tastaturile mașinilor disponibile în laboratoarele MIT AI și are o utilizare similară cu Shift și Control . Pe computerele actuale este de obicei mapată la tasta Alt sau la tastele de bandierina . Ca alternativă la utilizarea tasta Meta-lettera puteți utiliza tasta ESC urmată de lettera ).

Pentru a face viața mai ușoară pentru noii utilizatori, există totuși un pachet numit cua-mode care activează atribuțiile de chei conforme cu standardul CUA (tipic pentru GUI Motif / Windows / Mac), dar ceea ce oferă standardul CUA este doar un subset de ce pune la dispoziție Emacs.

Personalizare

Codul sursă de nivel scăzut al Emacs este scris în limbajul de programare C. Componentele scrise în acest limbaj sunt sistemul grafic și interpretul pentru Emacs Lisp (un dialect al limbajului LISP menționat mai sus), precum și toate acele părți care sunt critice pentru eficiență. Majoritatea codului pentru editarea textului este scris în Emacs Lisp. Când Emacs rulează, interpretul încarcă și evaluează (execută) acest cod Lisp.

Utilizatorul poate extinde și personaliza codul Lisp chiar de la Emacs. Emacs oferă mai multe instrumente care permit acest lucru, inclusiv comenzi pentru a citi documentația funcțiilor și variabilelor deja încărcate (aceasta reflectă definiția autodocumentării ). Prin evaluarea codului Lisp furnizat de utilizator, comportamentul Emacs poate fi schimbat „din mers”, fără a fi nevoie să recompilați programul sau să relansați editorul. Lisp este o alegere bună ca limbă în acest scop, deoarece permite funcțiilor să fie tratate ca date (adică este un limbaj funcțional ).

Rezultatul tuturor acestora este că este foarte ușor să adăugați funcționalități personalizate la Emacs. Emacs include mai multe extensii standard, cum ar fi Emacs / W3 (un browser web ), Gnus (un instrument pentru citirea discuțiilor prin e-mail și Usenet ), o implementare a jocului Tetris și Doctor, o implementare ELIZA care simulează psihoterapia Rogeriană . În plus, Emacs poate fi utilizat ca IDE , permițând programatorilor să își modifice, să compileze și să depaneze propriul cod printr-o singură interfață.

Dezavantajul designului Emacs este sarcina suplimentară a performanței cauzată de încărcarea și interpretarea codului Lisp. Două acronime jucăușe ale EMACS sunt Opt Megabytes and Constant Swapping (opt Megabytes and constant swapping), iar Emacs face un computer lent (Emacs face un computer lent). Computerele moderne au, în general, memorie și procesor adecvate în comparație cu sistemele pe care a fost implementat Emacs, atât de mult încât aceste glume nu mai contează. În ciuda acestui fapt, este un punct ridicat frecvent de detractorii Emacs în timpul așa-numitelor războaie ale editorilor .

Există alte două metode de personalizare a Emacs, deși nici una la fel de flexibilă ca scrierea codului Emacs Lisp. Una este abilitatea de a utiliza comenzi pentru a înregistra macrocomenzi , adică comenzi compuse din apăsări de taste. Cealaltă este utilizarea sistemului „Personalizare”, inclus în versiunile recente ale Emacs, care permite utilizatorilor să personalizeze cele mai comune variabile utilizând o interfață grafică.

Operare internă („buffer gap”)

Pictogramă lupă mgx2.svg Același subiect în detaliu: Spațiul tampon .

Conținutul bufferelor este stocat ca o secvență contiguă de caractere separate printr-un divizor ( spațiu ), unde este poziționat punctul de editare. Modificările sunt făcute în tampon prin mutarea divizorului sau prin modificarea caracterului care urmează divizorul. Această schemă permite operațiunilor de editare să fie foarte eficiente, deoarece nu se schimbă prea multă memorie. Un alt mod de stocare a documentelor este stocarea fiecărei linii a documentului într-un buffer mic.

Distribuție

Emacs este un software gratuit , distribuit în condițiile GNU GPL .

Codul sursă și binare sunt disponibile prin FTP de pe site-ul web al proiectului GNU (vezi mai jos). De asemenea, acestea sunt disponibile pe scară largă de pe alte site-uri de pe Internet . Diferiti furnizori Unix (atat gratuiti cat si proprietari) livreaza frecvent Emacs impreuna cu sistemul de operare .

Războiul editorilor

Pictogramă lupă mgx2.svg Același subiect în detaliu: Războiul editorilor .

Există un „război religios” (glumet) între cine spune că cel mai bun editor de text este Emacs și cine spune că există .

Printre altele, Emacs este capabil să emuleze vi de la sine , în timp ce pentru implementarea emac-urilor începând de la vi este necesar să utilizați scripturi shell .

Există, de asemenea, o (și mai jucăușă) „biserică din Emacs”, unde în principal (noi) ne batem joc de pasiunea pentru acest puternic instrument de lucru.

Acest lucru a dus la scrieri teologice glumete, cum ar fi acest post în alt.religion.emacs, în care Juliusz Chroboczek răspunde la Per Abrahamsen ( textul original ):

PA: „Pe de altă parte, se poate susține că Emacs este un sistem de operare, nu te poți apropia mult mai mult decât atât”.

JC: „Deși sunt de acord cu dvs. asupra ideii fundamentale, mă tem că această propoziție îl micșorează pe Editorul solo și trece cu vederea unul dintre misterele sale fundamentale; dacă nu am ști cu toții perfect ortodoxia voastră perfectă, acuzațiile de blasfemie ar fi ridicate.

Emacs (fie ca numele tău să fie onorat pentru totdeauna) nu este doar un sistem de operare, este un sistem de operare și un limbaj de programare (The Only Programming Language - vezi alt.religion.lisp) și un set de editori, unde programarea limbajului este personificarea legăturii dintre editori și sistemul de operare. Dacă Emacs este unul din trei sau trei în unul rămâne o întrebare teologică deschisă ".

Notă

Bibliografie

  • (EN) Debra Cameron, James Elliott; Marc Loy; Eric S. Raymond ; Bill Rosenblatt, Learning GNU Emacs , ediția a treia, O'Reilly Media, decembrie 2004, ISBN 0-596-00648-9 .

Elemente conexe

Alte proiecte

linkuri externe

Software gratuit Free Software Portal : accesați intrările Wikipedia care se ocupă cu software-ul liber