GNU Emacs 26.1

Posté par  . Édité par ZeroHeure, Davy Defaud et Nils Ratusznik. Modéré par ZeroHeure. Licence CC By‑SA.
53
7
juin
2018
GNU

Et voici une nouvelle version majeure pour notre éditeur de texte préféré. La fonctionnalité la plus attendue est certainement le prise en charge d’une forme native de concurrence pour le langage Emacs Lisp, qui devrait permettre la disparition d’actions bloquantes pour l’utilisateur.

Pour celles et ceux ne vivant pas dans Emacs, on rappellera que ce n’est pas un simple éditeur de texte. D’abord, cette version d’Emacs est le bébé de Richard Stallman, ensuite, c’est surtout une machine virtuelle qui tourne en Emacs Lisp. On peut écrire des extensions avec un vrai langage de programmation, pour à peu près tout faire, y compris un éditeur de texte ou le café.

Emacs comptant une longue histoire, ses raccourcis clavier peuvent dérouter le débutant, qui devra passer par une phase d’apprentissage (alt-x help-with-tutorial) et appréciera certainement des Kits de démarrage comportant une configuration complète par défaut (les populaires étant Prelude et Spacemacs, orienté édition modale, avec une excellente émulation de vim, evil-mode, et une bonne aide interactive avec which-key-mode).

Emacs et son écosystème (voir les extensions sur elpa (officiel) ou melpa) comporte quelques « killer‐apps », telles que Org-mode ou Magit, dont on profite pour parler un petit peu plus bas.

Sommaire

Améliorations

Org-mode 9.1

Emacs est livré avec Org-mode v9.1 par défaut. On peut bien sûr mettre à jour Org-mode indépendamment.

Org-mode est un outil inégalé d’Emacs, à l’instar de Magit (vidéo sur C’est la Z). Org-mode vous permet de noter « votre vie en texte brut ». C’est non seulement un langage de modèles (à la Markdown), mais un outil de gestion de tâches, de planning, de temps, de rédaction (exportations en LaTex, PDF, HTML, ODS…) et bien plus encore.

Cf. une vidéo d’introduction et la série de tutoriels en trois parties présentée ici‐même.

Copie d’écran d’Org-mode

Améliorations à Dired, le navigateur de fichiers

Dired est le gestionnaire de fichiers en mode texte d’Emacs, que l’on obtient lorsque l’on ouvre un répertoire (C-x C-f répertoire/ RET). On peut effectuer tout un tas d’opérations, avec les commandes d’édition de texte habituelles de notre configuration Emacs.

N’oubliez pas de regarder les menus pour vous repérer au début.

Dired a reçu plusieurs améliorations, par exemple dans le mode wdired (writable-dired), si l’on met une ou des plusieurs obliques (slashes) dans un nom de fichier, les répertoires correspondants seront créés.

Une nouvelle commande sur le W (browse-url-of-dired-file) permet d’ouvrir le fichier dans son navigateur Web (utile pour les HTML).

Dans image-dired, entre autres améliorations, la génération de vignettes (thumbnails) est maintenant asynchrone.

Ajout d’une forme de concurrence avec les fils d’exécution

Arrivée d’une couche plutôt bas niveau pour donner de la concurrence native au code Emacs Lisp. L’objectif est de rendre certaines opérations non bloquantes du point de vue utilisateur, et de manière plus intégrée pour le développeur que les extensions actuelles. Sous le capot, on se rapproche assez de Python, avec un verrou (GIL) et les fils d’exécution (threads) qui s’exécutent chacun leur tour de manière coopérative. L’avenir nous dira ce qui émerge de ces fondations.

Plein de couleurs pour le terminal

Les couleurs codées sur 24 bits sont maintenant pleinement utilisées dans les terminaux adéquats. Pour les n00bs, sachez qu’Emacs est d’abord un logiciel avec des fenêtres graphiques. ;)

Générateurs pour Emacs Lisp

Emacs Lisp acquiert des générateurs [bon article].

Rafraîchissement graphique par double tampon vidéo…

… et sous le gestionnaire X.Org, afin de supprimer les effets de clignotement (flickering) lorsque l’on redimensionnait des fenêtres.

Nouvelle option mouse-drag-and-drop-region

Cette nouvelle option permet de glisser‐déposer des régions de texte à la souris. Pour manipuler des régions de texte on aime bien move-text.

Tramp peut se connecter à Google Drive

Cette fonctionnalité est basée sur le système de fichiers virtuel GVFS de GNOME.

Tramp permet de se connecter à des systèmes de fichiers distants (par exemple, se connecter à son serveur distant en SSH) et d’éditer les fichiers distants sous son Emacs habituel.

Par ailleurs, Tramp peut maintenant envoyer un signal d’interruption SIGINT à un processus distant.

Flymake, le vérificateur de syntaxe à la volée, a été complètement réécrit

Flymake est le mode par défaut qui effectue les vérifications de syntaxe à la volée, pour tout langage de programmation. Il est en concurrence avec Flycheck, actuellement très bien pris en charge.

Il gère maintenant plusieurs back‐ends simultanés, il peut annoter des régions de texte et pas uniquement des lignes, il permet de définir des types de notification autres que « erreur » et « alerte » (warning), et son interface utilisateur a été revue.

Il a été réécrit par João Tavora, auteur notamment du système de modèles Yasnippet et de l’EDI Common Lisp Sly.

Nouveau mode pour les numéros de ligne

L’extension linum-mode faisait le boulot, mais on a maintenant un mode réécrit en C et donc plus efficace. Pour l’activer globalement : M-x global-display-line-numbers-mode.

Fichier unité systemd

systemctl --user enable emacs

Certainement utile pour emacs-server ou pour ceux qui utilisent emacs comme gestionnaire de fenêtres (ewnctl).

Initialisation des variables locales

On peut définir des variables spécifiques à un fichier ou à un répertoire (dans un fichier .dir-locals).

Elles sont maintenant initialisées à chaque fois que leur mode majeur est activé, pas uniquement à la lecture du fichier ou répertoire. De plus, un second fichier est accepté : .dir-locals-2.el [doc].

La fonction « occur » fonctionne sur une région

On aime également helm-swoop :
mode Helm-swoop dans Emacs

Détection de fichier modifié améliorée

Emacs ne demande plus de sauvegarder un fichier quand il n’a en fait pas été modifié. Au lieu de se baser uniquement sur la date de modification, Emacs regarde maintenant le contenu du fichier.

Mode compilation amélioré pour CMake

Les messages de CMake sont maintenant reconnus et le nombre d’erreurs, d’alertes et d’infos est affiché sur la mode‐line en temps réel suivant la compilation.

EWW, Emacs Web browser

EWW reçoit son lot d’améliorations :

  • M-RET, pour ouvrir le lien dans un nouveau tampon ;
  • s, pour choisir un tampon eww avec le mini-tampon ;
  • C, pour basculer l’usage des couleurs ;
  • les images sont chargées de manière asynchrone.

Tutoriel : http://ergoemacs.org/emacs/emacs_eww_web_browser.html.

Ispell comprend d’autres moteurs de correction orthographique

Ispell, le vérificateur d’orthographe, peut utiliser pour base d’autres logiciels comme Voikko, Hspell ou AppleSpell.

Conclusion

Si vous n’avez jamais essayé, sachez que compiler Emacs n’est pas bien long. C’est avec cette nouvelle version que l’on pourra profiter de nouveaux paquets bien cools tels que, par exemple, eglot, une interface généraliste au Language Server Protocol ou elbank, un gestionnaire de finances personnelles.

Aller plus loin

  • # Compiler

    Posté par  . Évalué à 6.

    En fait, pour compiler Emacs (5min pas plus):

    sudo apt-get install build-essential
    sudo apt-get build-dep emacs # n'a pas marché pour moi
    git clone https://github.com/emacs-mirror/emacs.git
    cd emacs
    ./autogen.sh
    ./configure
    make -j4
    # Install (optional)
    sudo make install
    

    L'exécutable est dans src/emacs.

    • [^] # Re: Compiler

      Posté par  . Évalué à 1. Dernière modification le 08 juin 2018 à 09:36.

      make -j4
      

      La valeur de j ne dépend pas du nombre de cœurs dans le processeur ? La page qui illustre la compilation de Krita recommande la valeur nombre de cœurs + 1.

      • [^] # Re: Compiler

        Posté par  (site web personnel) . Évalué à 4.

        Je recommande à tout le monde de tester au moins une fois la compilation d'un gros projet C++ avec make -j sans préciser le nombre de jobs maximum.

    • [^] # Re: Compiler

      Posté par  (site web personnel, Mastodon) . Évalué à 10.

      ./configure
      […]
      sudo make install

      Configurer avec le préfixe par défaut (/usr/local), et surtout installer en root est le meilleur moyen de pêter un jour son système. C'est fortement déconseillé.
      De manière générale, il n'y a absolument aucune raison de faire quoi que ce soit avec les droits d'administrateur quand on compile un programme (bien sûr, hormis les quelques cas spéciaux de logiciels qui ont besoin de droits d'admin pour par exemple ajouter un setuid, ou logiciels très bas niveau, ou autre; je doute qu'emacs soit un de ces cas particuliers, sauf erreur), malgré les nombreux tutos qui pullulent sur le sujet et qui se recopient les uns les autres sans réfléchir.
      En fait sous Linux, on peut (et on a toujours pu) installer des logiciels sans le moindre droit admin (encore une fois, sauf exceptions)!

      Donc, déjà s'il y a une option générique des autotools à connaître, c'est --prefix qui permet de choisir un préfixe d'installation perso. Dans mon cas, je prends souvent $HOME/.local. Ainsi l'appel devient:

      ./configure --prefix=$HOME/.local/

      Puis au moment de l'installation, un simple:

      make install

      Pas de sudo nécessaire! Vous avez tous les droits d'accès dans votre $HOME.
      Bien sûr, il est fort probable que votre système ne met pas les variables d'environnements appropriés pour trouver un logiciel dans $HOME/.local (quoique j'ai déjà vu cela, ce préfixe est assez classique car il est parent de $XDG_DATA_HOME). Je conseille de rajouter cela dans votre ~./.bashrc:

      export PATH=$HOME/.local/bin:$PATH
      export LD_LIBRARY_PATH="$HOME/.local/lib:$HOME/.local/lib64:$LD_LIBRARY_PATH

      Et voilà!

      Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

      • [^] # Re: Compiler

        Posté par  (site web personnel) . Évalué à 4.

        Je conseille de rajouter cela dans votre ~./.bashrc:

        Plutôt dans le ~/.profile qui a l'avantage de fonctionner même pour ceux qui n'utilisent pas bash, voire dans le ~/.xprofile qui vaut aussi pour l'environnement graphique (mais qui peut dépendre des distrib)…

      • [^] # Re: Compiler

        Posté par  . Évalué à 1.

        Merci; dans ce cas make install avec ou sans sudo est optionnel, sans ça on obtient quand même l'exécutable emacs dans src/.

        • [^] # Re: Compiler

          Posté par  (site web personnel) . Évalué à 2.

          Certes, c'est optionnel, mais je vois pas bien quel serait l'intérêt de se passer de make install. Une fois que tu as compilé ton binaire, je vois pas bien comment tu veux l'exécuter facilement plus tard.

          • [^] # Re: Compiler

            Posté par  . Évalué à 2.

            re (en retard),

            le binaire compilé se trouve dans le dossier src, il suffit de l'appeler par son chemin: .src/emacs, tout simplement.

  • # Bébé de RMS ?

    Posté par  . Évalué à 3.

    Salut,

    je n'ai pas trop compris cette histoire de version qui serait "le bébé de RMS". Certes je ne regarde plus trop la liste emacs-dev depuis des mois mais je suis un peu le développement et je n'ai rien vu de spécial. Alors en quoi cette version plus qu'une autre ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.