La nouvelle version de GNU Emacs vient de sortir en version 24 ce 10 juin. Cette version apporte son lot de nouveautés, dont certaines étaient plus attendues que d’autres comme la gestion des paquets simplifiée ou l’intégration à GTK+ 3.

Pour ceux qui l’auraient oublié ou à ceux qui ne le savent pas, Emacs est le père de la famille des Emacsen. Il a vu le jour dans les années soixante-dix au MIT des mains de Richard Stallman. Son nom signifie « Editing MACroS ». Le GNU de son nom, ne lui fut préfixé qu’en 1984.

Emacs est un Éditeur de MACroS un peu particulier puisqu’il est écrit en Lisp tout en étant son propre interpréteur. C’est de là que vient tout la force de ce logiciel phare qui fait bien plus que de l’édition de texte.

Dans la suite de cette dépêche sera présenté une liste, non exhaustive, des nouveautés apportées par la vingt-quatrième version de ce logiciel par rapport à la précédente. Les nouveautés sont regroupées par lots plus ou moins détaillés.

Sommaire

Nouveautés

Amélioration de l'édition

Emacs étant d'abord un éditeur de texte, il est normal de s'intéresser aux changements intervenus dans la gestion de l'édition de texte.

On notera l'arrivée d'une fonction count-word-region (M - =) qui permet de compter le nombre d'entités séparées par des espaces au sein de la sélection. Le nombre total de mots est calculé avec count-word .

Uniformisation des commandes C-y et M-y

C-y, commande utilisée pour coller la dernière chose copiée sur « l'anneau de collage » (ou « l'anneau unique tueur » ou tout simplement le « kill ring » en V.O.), voit maintenant son comportement être le même lors d'une recherche isearch (C-s).

De même pour M-y, qui fait tourner l'anneau, le fait aussi dans isearch.

Le comportement précédent de C-y dans isearch était de coller le reste de la ligne comprise entre le point et la fin de la ligne. Comportement quelque peu étrange. Pour les inconditionnels de ce mode de fonctionnement, cette fonction est maintenant activable avec M-s C-e.

Gestion de la sélection

Sous X, il est possible de sélectionner du texte de deux manières différentes. L'une d'elle, la plus connue, garde les informations dans le presse-papier. Typiquement, on fait appel à elle avec le copier/coller habituel.

La seconde manière est de simplement mettre le texte à sélectionner en surbrillance. On peut le coller simplement en appuyant sur la roulette de la souris. Ce type de sélection est dit primaire.

Ainsi, Emacs suit maintenant le comportement par défaut des application nées sous X : sélectionner une région avec la souris (ou en maintenant SHIFT appuyée) devient une sélection primaire, alors que sélectionner du texte avec C-SPC, par exemple, utilise le presse-papier par défaut.

Cela signifie donc que C-w et M-w utiliseront donc le presse-papier par défaut.

Meilleure intégration à GTK3

Emacs peut être compilé de manière à améliorer l'intégration avec GTK3 grâce à l'option --with-x-toolkit=gtk3 lors de la phase de configuration. Ceci apporte quelques changements qui améliorent la cohérence de l'interface d'Emacs dans les environnements GTK comme GNOME :

La barre de défilement est désormais placée à droite par défaut. (comportement changeable grâce à la fonction set-scroll-bar-mode )

) La couleur de la région (la zone de texte sélectionnée) est désormais tirée du thème GTK utilisée.

Les infobulles (tooltips) GTK sont utilisées par défaut.

Les barres d'outils GTK peuvent êtres placées sur n'importe quel bord d'un cadre (haut, bas, gauche et droite).

Autres changements graphiques

D'autres modifications graphiques ont eu lieu comme la suppression des tirets dans la ligne de mode. (Exemple avant/après pour un fichier *.org)



Le thème peut maintenant être simplement choisi avec customize-themes . En outre, Emacs propose maintenant un module de thème propre nommé deftheme . Vérifiez que votre thème a bien été adapté à deftheme pour continuer à l'utiliser.

Des changements sur la gestion du défilement

Avant la version 24, il n'existait pas de commande pour faire défiler l'écran ligne par ligne. À présent, les commandes scroll-up-line et scroll-bottom-line le permettent.

Internationalisation

Emacs supporte désormais l'édition de texte de droite à gauche pour des langages comme l'arabe, le farsi ou l’hébreu. Le tutoriel a ainsi été également traduit en hébreu.

De plus, la détection du sens d'écriture est automatique et conforme à l'algorithme prescrit par Unicode (Unicode Bidirectional Algorithm).

Ce comportement automatique peut être désactivé grâce à la variable bidi-display-reordering .

Pour améliorer encore l'internationalisation, de nouvelles méthodes d'entrée sont disponibles : farsi , farsi-translit et bulgarian-alt-phonetic .

Gestionnaire de paquets

Tout utilisateur d'Emacs sait qu'installer un paquet n'est pas une sinécure, bien que certains soient installables grâce au gestionnaire de paquet de votre distribution linux.

Mais tout cela est maintenant du passé grâce au gestionnaire de paquets intégré ! (Emacs Lisp Package Archive - ELPA)

Pour l'utiliser, rien de plus simple : M-x list-packages

Il suffit d'en sélectionner un pour qu'Emacs le télécharge et l'installe automatiquement. En outre, il se charge aussi de l'activer au démarrage ; plus besoin de l'ajouter dans votre .emacs !

Vous pouvez obtenir une description du paquet sur lequel le point se trouve en tapant RET ou en cliquant sur le nom du paquet ou encore avec C-h P .

Il suffit de marquer un paquet avec i pour le sélectionner en vue de l'installer ; x lance le processus d'installation. Les paquets seront installés dans ~/.emacs.d/elpa/.

Bien sûr, il est possible de continuer à charger les paquets via le fichier .emacs en changeant la valeur de package-enable-at-startup et en spécifiant la liste des paquets à charger nommée package-load-list .

Par défaut, Emacs affichera la liste des paquets présents au sein du dépôt officiel et qui respectent, au niveau de la licence, la GPLv3. Il est toujours possible d'ajouter un autre dépôt dans la liste comme Marmalade ou MELPA :

( require 'package ) ( add-to-list 'package-archives ' ( "marmalade" . "http://marmalade-repo.org/packages/" ))

Changements divers

Porte lexicale d'Emacs-lisp

Emacs-lisp offrait, jusqu'à maintenant, une portée dynamique en terme d'espace de noms. Il est maintenant possible de travailler en portée lexicale si lexical-binding est actif. Néanmoins, les variables globales (celles qui sont nées d'un setq ) restent dynamiques.

Rappelons qu'une portée lexicale signifie que le nom d'une variable est limité à un lexique, c'est-à-dire une variable créée explicitement et dont le nom est local, astreint à une fonction par exemple.

Amélioration de l’auto-complétion

L'auto-complétion tend à se standardiser grâce à la fonction complete-at-point qui est maintenant utilisée par la majorité des modes d'éditions d'Emacs. Celle-ci devient ainsi plus simple à mettre en place, mais, et surtout, son comportement est empreint d'une cohérence unificatrice.

EmacsWiki se meurt, vive WikEmacs !

EmacsWiki est une source importante d'informations pour les utilisateurs d'Emacs. Il n'est pas parfait et peut même être assez brouillon. C'est ainsi que le 20 mars 2012, Bozhidar écrit un article intitulé « Die EmacsWiki, Die! ». L'auteur y parle de l'histoire d'EmacsWiki mais surtout des problèmes qu'il y voit :

pas de modération de contenu ;

plus qu'un wiki, c'est un dépotoir de fichier *.el et certains logiciels ne sont pas distribués autrement ;

la documentation est redondante avec celle présente sur les sites des projets ;

les discussions se font au sein même de la page.

Cet article attira les foudres de nombres de personnes entre-mêlées de commentaires approbateurs. Kensanata, l'auteur d'EmacsWiki depuis 2001, était de la partie.

Cependant, le plus gros reproche fait à cet article est son ton pompeux et l'absence de solutions concrètes proposées.

Le lendemain, après le flot très important de commentaires à propos de son article, l'auteur récidive avec un article intitulé « All Hands on Deck! (or the Action Plan for a New Emacs Community Wiki) » dans lequel il propose de changer le moteur de wikis, de payer pour l'hébergement du site dans un premier temps et de prendre du temps pour garder les pages d'EmacsWiki qui en valent la peine.

C'est ainsi que, cinq jours plus tard, WikEmacs naquit. Le faire-part de naissance était intitulé « WikEmacs - the Other Emacs Wiki ». L'article commence par une modération des précédents propos, car certains aiment le format actuel d'EmacsWiki.

L'auteur défini quelques lignes de conduite quant au nouveau WikEmacs :

les articles ne concerneront que les versions récentes d'Emacs (23 et 24) ;

les informations fournies ne devront pas être une copie de celles présentes sur le site d'Emacs ou du module concerné ;

les articles proposeront, principalement, des liens vers les sites officiels et leur documentation ainsi que quelques astuces introuvables ailleurs ;

enfin, les commentaires et les discussions auront lieu sur la page idoine.

Avec le temps, WikEmacs s'étoffera tout en offrant un espace plus clair et plus concis sur Emacs et ses modules.

Forks d'Emacs

Emacs, comme de nombreux logiciels libres d'envergure, a été forké de multiples fois. Voici quelques nouvelles de certains d'entre eux.

XEmacs

XEmacs semble toujours actif, bien que la dernière version stable date du 30 janvier 2009. L'ajout principal, sa gestion des paquets, n'est maintenant plus un attribut de différenciation.

µEmacs

µEmacs est une version allégée, plus ou moins libre d'Emacs. Connue car utilisée par Linus Torvald.

GNU Zile

GNU Zile est une autre version allégée, toujours maintenue, d'Emacs. En février 2012, une version expérimentale a été lancée ; elle fonctionne sous Guile, l'interpréteur Scheme bien connu. Elle est nommée Zile-on-Guile. Ceci est peut-être un pas de plus dans le projet, réellement lancé en 2010, de changer l'interpréteur Emacs Lisp d'Emacs par Guile.

Remerciements

J'aimerais remercier, par ordre alphabétique, bastien, Enjolras, farvardin, pixels et teoB pour leurs contributions à cette dépêche.

J'en profite aussi pour dire merci aux chasseurs de fautes pre et post publication de cette dépêche.

Aller plus loin