K-7.ch
I'm back

Emacs, petite présentation

Le 25 oct 2022

Auteur: Plume Mécanique

Tags: emacs

Présentation rapide de l'éditeur de texte Emacs

Fenêtre d’Emacs, noir, sans boutons ni menu, et un thème sombre, affichant un extrait de code Python

Ça fait maintenant près de 10 ans que j’utilise Emacs au quotidien. Que ce soit pour écrire du code, prendre des notes, gérer mes taches, etc.

Comme je vais parler de plus en plus d’ Emacs sur ce blog, une petite présentation de ce logiciel serait une bonne idée.

Un éditeur de texte

Il existe plusieurs définitions de ce qu’est Emacs. Je vais en donner 2 qui me semblent aussi juste l’une que l’autre :

Emacs est un éditeur de texte où chaque fonctionnalité, chaque comportement, est personnalisable.

Emacs n’est pas un éditeur de texte, c’est un environnement vous permettant de créer votre éditeur de texte.

La bonne définition dépend de ce que vous cherchez: Utiliser un logiciel existant, en le personnalisant un peu, ou créer un tout nouveau logiciel en vous basant sur des fondations solides.

Dans les deux cas, vous aurez un logiciel vous permettant de lire et d’écrire du texte. Que ce soit pour prendre des notes, gérer des tâches, écrire un article (comme celui que vous lisez), écrire un logiciel, etc.

Mais Emacs peut faire bien plus.

Plus qu’un éditeur de texte

Si vous souhaitez faire quelque chose sur un ordinateur qui implique de lire et/ou d’écrire un texte, il est fort probable que vous puissiez le faire depuis Emacs.

En plus d’éditer des documents et d’écrire des logiciels, Emacs propose de nombreuses autres fonctionnalités :

  • Client e-mail
  • Messagerie instantanée
  • Navigateur de fichier
  • Émulateur de terminal

Et bien d’autres.

Car, en plus d’éditer du texte, Emacs peut également interagir avec d’autres logiciels, traiter les données échangées pour vous les afficher et vous demander ce que vous souhaitez faire.

Là, Emacs devient une interface unique pour faire de nombreuses choses. Et si ce que vous souhaitez faire n’est pas encore possible depuis Emacs, il suffit d’ajouter ce qu’il vous manque.

Personnalisation

Comme dit plus haut, avec Emacs, il est possible de personnaliser chaque fonctionnalité, chaque comportement. Il est aussi possible d’ajouter de nouvelles fonctionnalités, de personnaliser l’apparence du logiciel, voire même d’avoir des logiciels fonctionnant à l’intérieur d’ Emacs.

Pour cela, plusieurs possibilités :

  • Modifier les paramètres
  • Installer des paquets
  • Écrire vos nouvelles fonctionnalités

Comme tout logiciel, Emacs fournit une fenêtre vous proposant de modifier ses paramètres. De nombreux paramètres. Et pour ces paramètres, vous retrouverez une description, la possibilité d’appliquer vos modifications de façon permanente ou juste pour cette session et vous pourrez même à attacher une note personnelle pour votre vous du futur.

Il est aussi possible d’installer des paquets. Chaque paquet vous fournissant de nouvelles fonctionnalités, un ou plusieurs nouveaux thèmes ou même des logiciels complets.

Enfin, vous pouvez créer vos nouvelles fonctionnalités. Emacs est principalement écrit avec le langage Emacs Lisp. Une version simplifiée et adaptée du Lisp. Avec ce langage, vous pouvez écrire des fonctions qui peuvent interagir avec chaque élément d’ Emacs. Ces fonctions pourront également lancer des commandes et récupérer puis analyser le texte imprimé par cette commande. Vous pourrez également ouvrir des sockets et ainsi échanger des données entre Emacs et d’autres logiciels. Vous pourrez de même attacher votre fonction à une fonction déjà existante et décider si votre fonction doit s’exécuter avant ou après.

Et tout nouveau code écrit en Emacs Lisp peut être intégré à Emacs sans avoir besoin de le redémarrer. Ce qui rend la modification d’ Emacs très réactive.

Mais pour bien personnaliser Emacs, il faut le comprendre.

Documentation

Pour comprendre comment Emacs fonctionne et comment le modifier, il inclue avec une excellente documentation.

Pour commencer, un tutoriel est inclus dans Emacs. Vous pouvez y accéder dès le premier lancement du logiciel. Ce tutoriel vous guidera en vous apprenant les bases.

Ensuite, Emacs est fourni avec un manuel d’utilisation complet, en anglais. Il est consultable depuis Emacs, hors-ligne. Vous pouvez également le consulter en ligne si vous n’avez pas d’ Emacs sous la main. Ou alors acheter la version livre.

Emacs est également fourni avec 2 autres manuels:

  • Un manuel qui vous apprend à programmer avec Emacs Lisp
  • Un manuel de référence sur l’interaction avec Emacs depuis du code en Emacs Lisp

À tout moment, vous pouvez demander à Emacs des informations sur une de ses fonctions internes, ou sur une de ses variables.

Pour les fonctions, vous aurez:

  • Son nom
  • Sa signature
  • Une rapide description, voire une documentation
  • L’indication du paquet où elle est déclarée

L’indication de l’emplacement de la fonction est un lien que vous pouvez ouvrir. Ainsi, vous pourrez consulter le code source de cette fonction et voir comment elle fonctionne.

Et pour les variables, vous aurez:

  • Son nom
  • Sa valeur actuelle
  • Sa valeur par défaut
  • Une description, si elle existe
  • L’indication du paquet où elle est déclarée

Là aussi, l’indication de l’emplacement est un lien.

Comprendre c’est une chose, mais si l’apparence ne plaît pas ?

Apparence et thème

Il est possible de personnaliser l’apparence d’ Emacs. Que ce soit avec des thèmes ou en activant/désactivant des éléments de l’interface. Et des thème, il en existe plein. Je ne vais donc pas tous les lister.

La première fois qu’on lance Emacs, son apparence est simple et sobre: Fenêtre d’Emacs, couleur blanche, avec l’écran de bienvenu

Une fois personnalisé, voici à quoi ressemble Emacs sur mon ordinateur: Fenêtre d’Emacs, noir, sans boutons ni menu, et un thème sombre, affichant un extrait de code Python

Pour arriver à ce résultat, j’ai simplement désactivé les menus, les boutons et la barre de défilement. Ainsi, je garde une interface minimaliste. J’ai ensuite appliqué le thème Modus Vivendi.

Avoir un logiciel agréable à regarder, c’est bien. Mais où trouver de l’aide ?

Une communauté

Avec les années, une communauté s’est construite autour d’ Emacs. Communauté qui développe de nouvelles fonctionnalités, crée de nouveaux thèmes, aident les personnes qui ont des questions.

Comme Emacs pousse les gens à modifier leur éditeur de texte, les membres de cette communauté ont une bonne connaissance du fonctionnement d’ Emacs. Ainsi, même si Emacs n’est pas le plus utilisé des éditeurs de texte, son développement est toujours très actif et on trouve facilement une personne pouvant répondre aux questions les plus complexes.

Si vous avez des questions où si vous souhaitez participer au développement d’ Emacs, je vous conseille de vous abonner aux listes de diffusions officiels. help-gnu-emacs étant la porte d’entrée si vous cherchez de l’aide. Ces listes sont en anglais.

En français il existe la communauté Emacs-doctor.

Si vous souhaiter installer des paquets construits par la communauté, vous pouvez utiliser les dépôts inclus avec Emacs ou ajouter MELPA.

Quelques exemples d’utilisation

Org-mode

Org-mode ajoute à Emacs:

  • La prise de notes
  • La gestion des tâches
  • La planification de projet
  • L’écriture de documents (articles, rapports, livres, etc)
  • La programmation lettrée
  • Un système de base de données sous forme d’arbres

Le principe de programmation lettrée est le suivant : Au lieu d’écrire un logiciel sous la forme d’un code source avec des commentaires, on écrit à la place un texte en langage naturel (ex: français, anglais) dans lequel le code est présent sous forme de blocs. Ces blocs pourront ensuite être exécutés depuis le document et le résultat intégré au texte. On pourra également extraire le code du document vers un fichier de code source plus classique.

À titre personnel, je me sers d’Org-mode pour tous les usages cités plus haut. Il y aurait beaucoup à dire à ce sujet, mais je garde ça pour de futurs articles.

Elpy

De base, Emacs supporte de nombreux langages de programmation, dont le Python. Les fonctionnalités proposées pour Python sont adaptées à l’écriture de scripts. Mais si vous souhaitez une expérience se rapprochant de celle d’un IDE, je vous conseille d’installer Elpy.

Elpy viendra compléter les fonctionnalités de base avec :

  • La gestion de projet Python
  • Un moteur de complétion intelligent, analysant votre code ainsi que vos importations
  • La navigation dans le code (Ex: Sauter à la définition d’une fonction)
  • Vérification syntaxique plus complète
  • Affichage des signatures des fonctions et méthodes
  • Affichage de la documentation
  • Plus de fonctionnalité pour le débogueur
  • Détection et lancement des tests
  • Refactoring
  • Profiling
  • Interactions avec le framework Django

Magit

Magit est une interface utilisateur pour GIT.

Elle se présente sous la forme d’une fenêtre montrant le statut de votre projet. Depuis là, vous pouvez visionner toutes les différences non "commitées", préparer et effectuer votre commit.

Voici un exemple de Magit sur un projet avec des modifications non-commitées: Une fenêtre de status Magit, montrant quelques infos dont les modifications non commités

Depuis cette fenêtre, je peux facilement voir les modifications: En rouge les lignes qui ont été supprimés, en vert celles ajoutées. Je peux passer d’une modification à l’autre avec les raccourcis clavier N et P et je peux replier chaque différence avec TAB. Pour stage une différence, j’appuie sur s et pour effectuer un commit sur c.

La fenêtre de statut propose de nombreuses actions: Magit montrant la liste de ces actions avec le raccourcis associé

Les actions sont trop nombreuses pour que je les cite toutes, mais on retrouve :

  • Stage
  • Commit
  • Diff
  • Pull
  • Fetch
  • Log
  • Submodule
  • Rebase
  • Etc

La gestion des sous-modules et des rebase me sauvent la vie. Et tout est accessible depuis la fenêtre de statut, avec un simple raccourcis clavier d’une lettre (la plupart du temps).

mu4e

mu4e est un client e-mail pour Emacs. De base, Emacs vient déjà avec 2 clients e-mail, mais je préfère mu4e. Il est simple, rapide et facile à personnaliser.

mu4e repose sur le logiciel d’indexation d’e-mail nommé mu. Le principe est simple: Vous rapatriez vos e-mails localement, par exemple avec mbsync et mu s’occupera de les indexer. Vous pouvez ainsi accéder à vos e-mails hors-ligne et vous pouvez également lancer des recherches très rapide. mu4e fournira une interface depuis Emacs pour lister, rechercher et afficher vos e-mails.

Voici par exemple la fenêtre d’accueil de mu4e: Fenêtre montrant les princpales actions de mu4e avec leurs raccourcis clavier

Pour des raisons évidentes de confidentialité, j’ai ré-utilisé les images du site web officiel de mu4e. Leur propriété revient au propriétaire du site.

Depuis cette fenêtre, je peux facilement accéder à un dossier, lancer une recherche ou afficher les e-mails correspondant à un des marque-pages dynamiques. Je peux également lancer la synchronisation des e-mails entre ma boite e-mail et mon ordinateur.

mu4e permet également de lire les e-mails et propose même différentes actions. Comme visionner un e-mail au format HTML dans son navigateur web, ou appliquer sur un dépôt GIT des patchs reçu en pièce jointe. Et il est possible de créer ses propres actions.

mu4e montrant une liste de 3 e-mails et le contenu d’un e-mail

Cette image provient également du site web officiel.

Pour terminer cet article et commencer l’aventure

Emacs, de par sa conception simple et facile à modifier, est un logiciel polyvalent. On peut s’en servir pour de nombreuses activités.

C’est pour cela qu’un simple article d’introduction comme celui-ci est déjà bien long. Il est difficile de résumer rapidement ce qu’est Emacs, car Emacs est beaucoup de chose.

Si vous souhaitez l’utiliser, je vous conseille de l’installer et de commencer par lire le tutoriel intégré. Une fois les bases acquises, vous pouvez l’utiliser pour des tâches simples: Prendre des notes, écrire de petits documents ou de petits scripts. Une fois que vous aurez une bonne connaissance des bases, vous pouvez étudier comment ajouter telle ou telle fonctionnalité. Prenez le temps, pour chaque modification que vous faites, de tester les différentes possibilités et de vous familiariser avec ce que vous avez choisi.

Emacs est un logiciel qui s’apprend sur le long terme et qui vas vous accompagner pendant des décennies. Ce n’est pas grave si, dès le départ, vous ne savez pas comment tout faire. Ce savoir viendra avec le temps. Mais une fois que vous aurez de l’expérience, vous comprendrez pourquoi vous ne voudrez plus vous passer d’ Emacs.