GNU Emacs est l’implémentation principale d’Emacs, un éditeur construit sur une plateforme entièrement modifiable grâce à un interpréteur Lisp interactif (REPL).
Emacs est parfois considéré comme un emblème de la philosophie du logiciel libre et de la culture hacker. Pour Richard Stallman, créateur d’Emacs et de la Free Software Foundation, l’idée clé est le contrôle du logiciel par l’utilisateur plutôt que l'inverse, et la possibilité de son adaptation intégrale à l'utilisateur. A cet effet, on peut lire dans le manuel qu'il est l’ Introduction du manuel GNU Emacs.
GNU Emacs, développé par Richard Stallman depuis 1984 dans le cadre du projet GNU, s’appuie sur le langage Emacs Lisp.
Développement
Histoire GNU Emacs fait partie du projet GNU. En 1984, Stallman commence le projet sur les systèmes Unix. Il veut une alternative libre à Emacs.
En 1991, à la suite de divergences d'opinion sur le développement, un fork dénommé Epoch produisit le logiciel Lucid Emacs, qui sera ultérieurement renommé XEmacs. À sa sortie, ce logiciel se distingue par une interface graphique et des fonctionnalités étendues. Le projet GNU continue à développer GNU Emacs. La plupart des fonctionnalités mises en avant dans XEmacs se retrouvent désormais dans GNU Emacs. Les deux projets se synchronisent régulièrement entre eux.
Après un long temps de développement, la première version d'Emacs de la branche 22, la version 22.1, est diffusée le . Le développement de cette version a été assuré par Richard Stallman. Cette version apporte un nombre important de fonctionnalités.
Le , Richard Stallman annonce sa volonté de se retirer de la maintenance d'Emacs. Il laisse la place à Stefan Monnier et Chong Yidong Stefan Monnier et Chong Yidong sont les nouveaux mainteneurs du projet depuis début 2008..
Son développement reste actif. La plupart de ses développeurs sont affiliés à la Free Software Foundation (FSF).
Droits sur le code
Jusqu’en 1999, le développement de GNU Emacs est relativement hermétique, au point qu’il servait d’exemple pour le style « Cathédrale » dans l’ouvrage La Cathédrale et le BazarLa Cathédrale et le Bazar Extrait traduit par Sébastien Blondeel. Depuis, le projet a adopté une liste de diffusion publique sur le développement, et ouvert un accès anonyme à CVS.
Comme pour tous les projets GNU, il subsiste une règle particulière pour l’acceptation d’une partie de code significative : le détenteur des droits sur le code proposé doit les céder à la FSF. Il existe toutefois une exception notable : le code de MULE (pour "MULtilingual Extension", « extension multilingue »)., car il appartient au gouvernement japonais et la cession du copyright n’était pas possible.
Cette règle ne s’applique pas aux contributions mineures ou aux corrections de bugs. Il n’existe aucune définition rigoureuse de ce qu’est une contribution mineure, mais il est habituel de considérer une contribution de moins de 15 lignes comme mineure http://www.gnu.org/software/emacs/CONTRIBUTE.
Cette règle est prévue pour faciliter le respect du copyleft, afin que la FSF puisse défendre le logiciel devant un tribunal le cas échéant. Une telle obligation est connue pour avoir des effets négatifs sur les contributions. Certains affirment qu’elle affecte même les performances ; par exemple, l’incapacité de GNU Emacs à prendre en charge des fichiers volumineux de façon efficace serait à mettre sur le compte de cette obligation, qui découragerait les développeurs les plus sérieux. Mais d’après Richard Stallman, il est plus important que GNU Emacs soit libre que performant.
Le respect scrupuleux de cette règle permet d’asseoir la confiance juridique que l’on peut accorder à la licence libre de GNU Emacs (la GPL), et au logiciel libre lui-même, qui constitue le travail intellectuel de nombreux détenteurs de droits potentiels et contributeurs.
Historique des versions
Historique des versions de GNU Emacs...
Version Date de sortie Principaux changements 13.0? 15.10 16.56 17.36 Fichiers de sauvegarde numérotés 18.24 19.28 Support de plusieurs fenêtres en utilisant X Nouvelle interface pour gérer les logiciels de gestions de versions (VC) 20.1 Support multilingue. 21.1 Nouvelle version majeure. Support du défilement horizontal Support du son Support des molettes de souris Amélioration de la disposition de la barre de menu Possibilité d’afficher des couleurs sur des terminaux 22.1 Nouvelle version majeure. Utilisation de la bibliothèque GTK+ Support du glisser-déposer dans X Support de l’Unicode Support de Mac OS X 22.2 Support pour logiciels de gestions de versions Bazaar, Mercurial, Monotone et Git. Nouveaux modes pour gérer le CSS, BibTeX… 23.1 Nouvelle version majeure avec notamment les ajouts suivant : Support amélioré pour Unicode (emploi d’UTF-8 en interne) Rendu des polices antialiasées employant Fontconfig et XFT, pouvant différer de tampon à tampon Amélioration du mode serveur pour gérer des fenêtres graphiques et des terminaux dans la même session Nouveaux modes pour visualiser des documents PostScript ou PDF, ou valider à la volée du code XML… Support du langage Ruby. 23.2 Intégration d’un nouveau mode pour JavaScript (js2-mode). 23.3 Correction de bugs et améliorations parmi lesquelles les modes VC et Rmail. 24.1 Intégration d’un gestionnaire de paquets (ELPA), &c. 24.2 Mise à jour mineure corrigeant des bugs 24.3 Nouveau mode majeur pour Python, mise à jour de la bibliothèque d'émulation Common Lisp 24.4 Intégration d’un navigateur web (M-x eww), support des menus en mode terminal, nom des buffers unique avec uniquify, &c. 24.5 Mise à jour mineure visant à corriger certains bugs 25.1 Chargement dynamique de module. Amélioration de la sécurité (validité de certificats TLS/SSL), amélioration de l'insertion de caractère Unicode. 25.2 Correction de bugs principalement.. 25.3 Correction d'un problème de sécurité dans le mode . 26.1 Nombreuses nouvelles fonctionnalités, dont : une nouvelle méthode de connexion à Google Drive pour TRAMP ; un support des couleurs encodées en 24 bits pour les terminaux le supportant ; une réécriture complète du package flymake. 26.2 Quelques nouvelles fonctionnalités : Les modèles d'Emacs peuvent désormais être compilés hors de la racine d'Emacs ; Emacs respecte la version 11.0 du standard Unicode ; Dans un buffer Dired, la commande 'Z' permet de compresser tous les fichiers du dossier. 26.3 Version de maintenance. 27.1 De nombreuses changements, dont : Support native des entiers de taille arbitraire ; Parseur natif de fichier JSON ; Ajout d'une étape de personnalisation utilisateur très tôt au démarrage () ; Support natif de manipulation d'images sans ImageMagick 27.2 Version de maintenance avec résolution de bogues sans nouvelle fonctionnalité. 28.1 Nombreux changements et nouvelles fonctionnalités parmi lesquelles : compilation native des fichiers Lisp, des commandes spécifiques à des modes, refonte de project.el Support du standard Unicode version 14.0 28.2 Version de maintenance avec résolution de bogues. 29.1 De nombreuses améliorations dont : le support du pure GTK l'ajout d'eglot, un client LSP natif l'ajout de l'utilitaire use-package pour la gestion de configuration le support de l'unicode 15 et du format d'image WebP le double buffering sous Windows 29.2 Version de maintenance avec résolution de bogues.29.324 mars 2024Mises à jour de sécurité.29.422 juin 2024Mises à jour de sécurité.30.123 février 2025 Compilation native des scripts LISP activée par défaut Mode JSON natif. Support des fichiers Editorconfig Intégration du paquet which-key. Meilleur support d'Android et des écrans tactiles Nombreuses améliorations de performance
Distribution GNU Emacs est un logiciel libre distribué selon les termes de la licence publique générale GNU.
Le code source ainsi que les fichiers binaires sont disponibles sur le serveur FTP du projet GNU (cf. infra) et sur la plate-forme collaborative GNU Savannah. Les développeurs peuvent récupérer les sources en utilisant GNU Bazaar, le système décentralisé de contrôle des versions du projet GNU EmacsLe répertoire Git est également disponible mais pas encore pas à jour..
GNU Emacs est par ailleurs intégré dans tous les systèmes libres, notamment GNU/Linux, FreeBSD. Il fonctionne également sur de nombreux systèmes propriétaires dans le but de convaincre leurs utilisateurs de migrer vers des solutions libres Section 1.1 de l’introduction de la FAQ GNU Emacs pour Windows, rédigée par Richard Stallman en septembre 2010..
GNU ELPA Emacs s’est défini dès l’origine comme un éditeur extensible. Si les modules d’extension les plus populaires se retrouvent souvent intégrés , la plupart sont disponibles sur Internet. Tous les paquets tiers sont désormais accessibles depuis Emacs via un dépôt de code source exclusivement destiné aux extensions Emacs Lisp. Baptisé GNU ELPA (de l’anglais « GNU Emacs Lisp Package Archive ») , le projet est en production depuis 2010 . Son nom vient d’une plateforme similaire initiée par le dénommé Tom Tromey et du gestionnaire de paquets « package.el » d’un certain Phil Hagelberg .
Utiliser GNU Emacs
Commandes
Dans son mode d'édition normal, GNU Emacs se comporte comme les autres éditeurs de texte et permet à l'utilisateur d'insérer des caractères avec les touches correspondantes et de déplacer le point d'édition avec les touches fléchées. Échapper aux séquences de touches ou appuyer sur la touche Ctrl et / ou la touche méta, la touche Alt ou les touches Super en conjonction avec une touche normale produit des séquences de touches modifiées qui invoquent des fonctions de l'environnement Lisp d'Emacs. Des commandes telles que save-buffer et save-buffers-kill-emacs combinent plusieurs frappes modifiées.
Certaines commandes GNU Emacs fonctionnent en invoquant un programme externe, tel qu'ispell pour la vérification orthographique ou GNU Compiler Collection (gcc) pour la compilation de programmes, l'analyse des résultats du programme et l'affichage du résultat dans GNU Emacs. Emacs prend également en charge les "processus inférieurs" - des processus de longue durée qui interagissent avec un tampon Emacs. Ceci est utilisé pour implémenter le mode shell, exécuter un shell Unix en tant que processus inférieur, ainsi que les modes lecture-évaluation-boucle d'impression (REPL) pour différents langages de programmation. La prise en charge des processus externes par Emacs en fait un environnement attractif pour la programmation interactive sur les lignes d'Interlisp ou de Smalltalk.
Les utilisateurs qui préfèrent les clés de type IBM Common User Access peuvent utiliser cua-mode, un package qui était à l'origine un module complémentaire tiers, mais qui a été inclus dans GNU Emacs depuis la version 22.
Minibuffer
Emacs utilise le "mini-tampon", normalement la ligne la plus basse, pour présenter le statut et demander des informations - les fonctions qui seraient généralement effectuées par des boîtes de dialogue dans la plupart des interfaces graphiques. Le mini-tampon contient des informations telles que le texte à cibler dans une recherche ou le nom d’un fichier à lire ou à enregistrer. Le cas échéant, l'achèvement de la ligne de commande est disponible à l'aide des touches de tabulation et d'espace. Gestion de fichiers et affichage