Emacs, petite présentation
Le 25 oct 2022
Présentation rapide de l'éditeur de texte Emacs
Ç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 enEmacs 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:
Une fois personnalisé, voici à quoi ressemble Emacs
sur mon ordinateur:
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:
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:
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:
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.
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
.