Sommaire
Nouveau site web, nouvelle icône
Suivant la mise à jour du site officiel, l'icône d'Emacs change :
Avant |
Après |
|
|
On peut toujours reconnaître un E et des cornes de GNU !
Intégration de Xwidgets
Si vous avez Gtk3 et webkitgtk3 d'installés, vous pouvez ouvrir un navigateur webkit dans Emacs avec la commande M-x xwidget-webkit-browse-url
. C'est le seul widget qu'on puisse utiliser pour le moment.
Exemple: aller sur youtube
Combiné à helm-dash, pour chercher le symbole sous le curseur:
Mais cela ne rend pas Eww, le navigateur en mode texte, caduc pour autant. Il a d'ailleurs subi quelques améliorations.
Enfin, il est a noter que l'intégration de Xwidget est encore expérimentale.
Amélioration de Eww, le navigateur en mode texte
Le html peut être rendu avec des fontes de largeur variable. La commande F
permet de les utiliser ou pas.
La nouvelle commande R
(eww-readable
) va essayer d'afficher uniquement les parties de texte intéressantes, donc de cacher les menus et autres. Il paraît que ça marche très bien et qu'on s'y habitue vite.
Le nouveau raccourci M-s M-w
permet de rechercher le texte sélectionné avec le moteur de recherche de la variable eww-search-prefix
.
On peut maintenant avoir plusieurs buffers eww en parallèle (en renommant le buffer).
La nouvelle commande S
permet de lister les buffers eww, et de s'en occuper.
Il y a encore d'autres apports sympas.
Prise en charge expérimentale de Cairo
Si vous compilez Emacs avec --with-cairo
, vous aurez droit à un support expérimental de Cairo, la bibliothèque de gestion de l'affichage 2D. Si, de plus, vous compilez pour GTK+, vous gagnez la prise en charge de l'impression.
Même s'il est encore trop tôt pour le dire, ceci pourrait permettre d'améliorer l'affichage d'images bitmaps et vectorielles, ou alors faire en sorte que l'affichage se fasse sur la carte graphique directement. N'hésitez-pas à tester, et à remonter les bogues !
Emacs peut charger des bibliothèques externes dynamiquement
… donc sans recompilation. On peut maintenant écrire des plugins compliqués dans un language natif. Je réfère à cette discussion.
Notez que les motivés peuvent écrire des extensions pour Emacs en Haskell.
Pour cela, le module doit fournir une fonction appelable depuis le C nommée emacs_module_init
chargée durant un load
ou require
d'Emacs. En outre, le symbole plugin_is_GPL_compatible
doit également être exporté, car Gnu/Emacs refuse tout module n'exportant pas ce symbole.
Bien entendu, ce que représente plugin_is_GPL_compatible
et la réalité va probablement diverger rapidement.
À noter que les modules externes peuvent également appeler des fonctions d'Emacs via une API idoine (emacs-module.h
).
Navigation dans le code : Xref veut remplacer etags
Emacs permet de naviguer dans le code, comme aller à la définition d'une fonction, grâce à un mécanisme de gestion d'une base de donnée de libellés : etags. etags était d'abord dédié à emacs lisp, puis est apparu ctags pour le C, puis gtags pour GNU, puis ctags s'est vu gérer les Universal tags, etc.
Bref, c'est devenu le chaos avec pleins de paquets permettant de faire plus ou moins la même chose, mais pas forcément bien.
C'est ainsi qu'est né Xref (à lire cross ref, pour référence croisée) en tant que cadriciel générique de gestion de libellés. Xref déprécie etags, et fournit des commandes génériques pour que plusieurs backends les implémentent.
etags a été converti en backend de Xref, et est donc le premier.
Plusieurs backends verront le jour, tel que xref-js2 pour le JavaScript.
Nouvelle méthode pour insérer des caractères unicodes
On peut le faire avec C-x 8
, on a la complétion par défaut.
Il paraît que helm-ucs
fait aussi bien le taf.
Améliorations du gestionnaire d'extensions
Depuis sa version 24, Emacs a package.el
pour installer des extensions (sans compter les moyens précédents, comme el-get
). Ce système reçoit de nombreux apports.
Si un paquet est présent dans plusieurs dépôts, par défaut seule sera montrée la version de notre dépôt marqué comme prioritaire.
On peut filtrer la liste des paquets (M-x package-list-packages
) avec deux nouveaux mots-clefs, arc:
pour l'archive et status:
pour le status.
Le téléchargement et l'installation de tout ça peut se faire de manière asynchrone.
Les paquets qui sont toujours les dépendances d'autres paquets ne peuvent pas être supprimés par défaut.
Nouvelle fonctionnalité : Project
Project est un paquet officiel qui, comme des extensions très populaires telles que Projectile, fournit quelques commandes pour travailler à l'intérieur d'un projet (par exemple défini comme un projet git). Notamment la commande project-find-file
ou project-find-regexp
. Encore une fois, Projectile fait cela très bien.
Gnu/Emacs a toujours été en retard sur ce point là, mais peut-être que cet effort-ci gagnera en popularité et en fonctionnalité dans le temps.
Seq.el et map.el
Ces deux bibliothèques font leur apparition grâce aux efforts de Nicolas Petton, par ailleurs l'auteur du nouveau site et la personne en charge des sorties d'Emacs.
Seq.el introduit une interface unifiée pour opérer sur les séquences (listes, vecteurs, chaînes de caractère). Il est possible de l'étendre pour gérer d'autres types de séquences (exemple: stream.el). Cela vient combler un gros vide dans l'écosystème Emacs. Jusqu'à maintenant de nombreux développeurs, utilisaient dash.el (disponible sur GNU ELPA) pour manipuler les listes. Seq.el va donc plus loin en permettant de manipuler plus de structures de données, mais dash a pour elle quelques fonctionnalités propres (les threading ou anaphoric macros par exemple).
De manière similaire map.el opère sur les dictionnaires (conteneurs de type clef/valeur). Les tables de hachages, tableaux et listes associatives sont gérés. De la même manière que seq.el, map.el est pensée pour être extensible.
Nicolas Petton a présenté ces deux bibliothèques lors du GNU Hackers Meeting de 2016 (lien vers la vidéo et source html/org). De nombreux exemples et cas d'utilisation y sont exposés.
Amélioration de l'historique de query-replace
Depuis la commande query-replace
, l'appui sur les touches M-p
, fait défiler l'historique de remplacement sous la forme "FROM SEP TO". "FROM" et "TO" correspondant respectivement au texte original et à son remplacement. "SEP" est un séparateur sous la forme d'une flèche. Il est possible de le modifier en personnalisant la variable query-replace-from-to-separator
.
Un exemple en image (source : http://endlessparentheses.com)
Autorevert dans le navigateur Dired
La liste de fichiers affichée par le navigateur Dired peut être automatiquement rafraichie en utilisant les notifications du système de fichiers (annonce). Dired a également reçu des améliorations.
Autres
Json
Les commandes json-pretty-print[-buffer]
maintiennent l'ordre des clefs.
Tramp
Tramp, pour accéder à des fichiers sur une machine distante, connaît maintenant la méthode de connexion "afp", pour MacOS. doc.
Comment tester
Les builds sont plus ou moins arrivés selon la plateforme. Les utilisateurs de Arch Linux sont servis, ceux d'Ubuntu ont un ppa, et Emacs 25 ne semble pas être arrivé dans Debian Sid. On peut télécharger Emacs sur un mirroir GNU.
Mais comment tester Emacs ? C'est une bête un peu sauvage au démarrage. Par conséquent quelques « kits de démarage » (starter kits), qui proposent une configuration de base plus poussée, plus sympa et modulaire, ont un certain succès :
-
Spacemacs allie Emacs avec l'édition modale, style Vim. On peut également essayer
evil-mode
sans Spacemacs. À noter que Spacemacs propose deux configurations, une simple et une complète (bien que lourde).
Annexe
- si vous ne connaissez pas Magit, la meilleur interface utilisateur à git, alors vous avez loupé un truc. Faites un rebase interactif en trois touches de frappe. Voyez aussi les outils Git dans Emacs, l'intégration de Github et de Gitlab.
-
org-mode est aussi un attrait spécifique à Emacs