Quelques années d'Emacs
Si vous cherchez ma configuration, vous en trouverez une copie en ligne ici: https://source.cipherbliss.com/tykayn/scripts/src/branch/master/assets/org/config.org C'est fou comme le temps passe vite, on est en 2026 et j'ai commencé ce texte en 2022. Petit retour d'expérience.
Comment je suis tombé dans ce traquenard en 2021 ?
La faute de passages dans des GULLs, dans le Chapril, et suite à la lecture de quelques articles parlant d'orgmode, dont celui de Madix sur la méthode GTD dans le mode Orgmode d'Emacs. Je m'y suis intéressé en entant parler d'orgmode qui semblait faire des choses intéressantes rapidement en matière de gestiondeprojet et prise de notes.
"Tu devrais essayer Emacs si tu veux remplacer ton IDE par un outil vraiment libre, on peut quasiment tout faire avec une dizaine de raccourcis clavier"
Ainsi parla Cpm. J'étais moyen convaincu, mais c'était le moment de tester, je n'ai pas grand chose à perdre, surtout qu'avec les confinements à répétitions on a le temps de rester chez soi à lire des trucs. Enfin, quand on a des enfants autonomes qui ne nous foutent pas la misère, hein :D
J'ai fini par installer le bouzin avec un simple coup de ligne de commande et snap, la version apt n'était pas assez récente pour les tutos que j'avais lu chez Snapcraft.
snap install emacs --classiclire des documentations, des posts de blog, chercher des captures d'écran de ce qu'on peut obtenir comme résultat, voir des vidéos live entièrement faites avec, et tenter de commencer par un objectif pas trop méchant: écrire des posts de blog avec, et faire la migration de ma gestion de projets anciennement avec plein d'outils différents et du Getting Things Gnome vers des fichiers Orgmode. Surtout un seul fichier org pour commencer: tasks.org.
Script d'installation de ma config
Pour que vous n'ayez pas a expérimenter des tas de frustrations vous pouvez utiliser mon script d'installation qui va aller chercher la version la plus récente d'Emacs, ainsi que mon fichier de configuration rempli de documentation lisible en Français, qui est interprétée et éxécutée au démarrage, avec quelques fichiers de structure de base pour vous aider.
cd ~/Téléchargements
curl -s https://source.cipherbliss.com/tykayn/scripts/raw/branch/master/install_emacs_tk.sh | bashLa personnalisation étant très importante pour convenir vraiment à vos besoins, il ne faudra pas hésiter à modifier tout cela. Bon fun!
Un logiciel et une documentation frustrante au départ
Mon objectif principal était de faire de la gestion de tâches avec orgmode, j'ai commencé par lire des tutos et des vidéos sur le sujet. Mais les tutos vidéo c'est souvent hyper long pour trouver les quelques informations dont on a besoin. Dédicace à la vidéo "comment avoir une configuration basique avec Emacs" qui dure 1h30.
hey mais, pourquoi Ctrl+c Ctrl+v ne fait pas copier coller?
En cherchant de l'aide auprès d'utilisateurs chevronnés, certains me disaient qu'il suffisait de faire tel ou tel raccourci pour faire ce que je veux, mais ils ne se rappelaient pas que pour ça ils avaient du trifouiller leur config et que ce n'était pas le fonctionnement de base. Premier obstacle: C'est tellement la base de ne pas utiliser la version de base qu'on l'oublie. Mais au final c'est assez simple d'utiliser des morceaux de configurations d'autres gens, il suffit généralement de copier un bout de texte dans un fichier par défaut, celui dans notre dossier utilisateur, le fichier caché `.emacs`.
La comparaison avec un IDE ou rien qu'avec Libreoffice Writer est difficile au premier abord. Il faut deviner un tas de choses car on peut trouver assez peu d'informations en fouillant les menus, et la documentation utilise des concepts datés en faisant comme si c'était normal de ne pas les expliquer, et s'attarde sur des choses curieuses, sur comment se déplacer au clavier avec des raccourcis utilisant `Control` au lieu de mentionner les touches de flèches directionnelles.
Les raccourcis de base ne sont pas ceux dont j'ai eu l'habitude. Depuis mes premiers jours à interagir avec un clavier, il y a plus de vingt ans, la touche Meta se nommait Alt. Qui aujourd'hui pourrait s'attendre à ce que des gens qui découvrent Emacs sachent ce genre de truc? Des barbus qui étaient là il y a 3000 ans, oui.
La somme de choses à débroussailler semble donc plus grande que nécessaire: on dirait qu'il faut réapprendre à faire autrement un simple copier coller de texte, ou a annuler avec Ctrl + Z.
La version "GUI client" comporte quelques menus et boutons, mais c'est nettement moins abouti qu'un PhpStorm ou VSCodium, et ses multitudes de configurations recherchables depuis le menu de paramètres, avec ses plugins et ses thèmes sélectionnables facilement. Vous voulez ouvrir un fichier, voir un explorateur de fichier, lire l'aide, découvrir des valeurs de trucs configurés, ne comptez pas sur les menus de la GUI, il faut apprendre des raccourcis clavier pour tout ça.
Pour être abordable pour les moldus, des gens se sont organisés des distributions d'emacs. Mais ces distributions ne sont toujours pas pour le grand public, elles sont pour des gens qui ont l'habitude de "vim". Il existe pourtant des écrivains et autres gens qui font de la recherche scientifique sans savoir programmer des trucs, qui utilisent Emacs. Et qui ne saignent pas des yeux devant la version de base du logiciel. La marche d'entrée est juste hyper élevée.
En lisant un peu de documentation et en finissant par comprendre que l'on peut installer des plugin de plusieurs façons et de différentes sources, je comprends que la réputation d'outil difficile à aborder d'Emacs tient beaucoup au fait qu'il faut vite coder des choses en emacs-lisp si on veut que ça se passe d'une façon qui nous convient.
Et le Lisp, je savais que ça existait mais je n'en avais jamais pratiqué, mais en plus c'est une version spéciale du Lisp qui ne fonctionne que dans ce logiciel là. L'investissement d'apprentissage a donc l'air colossal. Et comme l'elisp ne sert qu'à Emacs, c'est carrément du vendor lock-in, mais en version libre :D
Hé oui, si j'utilise un éditeur de texte, ce n'est pas pour devoir moi même coder l'éditeur et chaque chose que je souhaite faire avec. Je peux faire ça dans un Atom ou un VScodium, bien plus accueillants en premier lieu et avec du Javascript.
Heureuement j'ai fini par tomber sur quelques paramètres à copier coller et qui fonctionnaient avec la version d'Emacs installée avec Snap, qui permettent de retrouver ses habitudes, et surtout, de quoi changer l'apparence avec un thème agréable à la vue, histoire de ne plus saigner des yeux, voir de rendre l'interface franchement jolie. Big up aux thèmes Doom, et particulièrment au Nord-doom. Commençons petit, on va donc tenter de faire de la gestion de tâches et un wiki.
La gestion de tâches avec Orgmode.
Je repère comment on crée une tâche de base, comment on les imbrique, comment on définit des tags, comment on définit une date d'échéance, quel est le format de la date et de l'heure, comment on note un paragraphe lié à la tâche… le tout dans un format texte tout simple, et donc syncronisable avec nextcloud, et qui ne dépend pas d'un format illisible.
Voici donc un exemple de fichier taches.org :
Après quelques essais tout bêtes je me lance dans la migration de mon gestionnaire de tâches existant qui contient environ 350 trucs que je comptais faire ou tout du moins songer à réfléchir à des choses sur ce qu'évoque la tâche, accumulés depuis quelques années. Un petit script plus tard, je peux extraire les tâches de Getting Things Gnome et de sa base de données en XML. Je récupère une bibliothèque qui parse du xml, j'en fais un objet en javascript, puis je le range et écris un fichier texte selon le format des tâches d'Orgmode. Après quelques ajustements j'ai donc un bon gros fichier de près de 300 tâches dans un seul fichier Org.
Une vitesse d'action incroyable
ça dépote quand on change nos notes de trucs à faire, tout est local et en format de texte simple. C'est tout simplement le moyen le plus rapide de gérer ses tâches.
Je saisis de quoi noter des choses à faire ou des notes de réunion avec une simple suite de touches, et avec un raccourci pour sauvegarder le tout c'est placé à un endroit qui fait sens dans mes fichiers d'organisation, et je peux continuer à utiliser l'éditeur de texte comme avant, le tout juste au clavier avec les raccourcis que je veux.
La personnalisation à foison
En listant moult posts de blogs et des configurations partagées par d'autres, j'ai fini par comprendre quelques trucs. Le tas de gens francophones sur Mastodon est assez utilisateur de ce genre de chose et toujours volontaire pour filer un coup de main. Je découvrai d'ailleurs qu'il existe des évènements dédiés à Emacs et Orgmode, que des tas de gens partagent leurs connaissances autour de ça, et qu'il existe des gens mordus de "self quantification" qui concurrencent Google quant à la collection des choses qu'ils mesurent sur leur propre activité.
C'est bien plus vaste qu'un simple éditeur de texte, c'est tout un Operating System. C'est tout un language de programmation embarqué dans un éditeur de texte, donc ce que peut faire le language, qui est plutôt bas niveau, on peut le faire en ayant cette interface d'éditeur de texte. L'avantage d'une interface minimale c'est aussi sa grande rapidité. Emacs signifiant Editing Macros, je peux attacher n'importe quelle maquereau à un raccourci clavier. #passionTraduction
Relier ses idées avec un wiki personnel
J'utilisais Zettlr pour faire un wiki personnel, j'ai converti tous ces fichiers markdown au fur et à mesure.
Choses choquantes au départ
Il y a fort longtemps, quand j'avais 15 ans, j'ai eu mes premières rencontres avec les logiciels permettant d'éditer du texte. J'ai écrit et codé des choses avec Notepad++, Frontpage, puis Netbeans, qui se rapproche beaucoup plus d'un Environnement de Développement Intégré moderne que ce qu'on voit la première fois qu'on ouvre Emacs et son fameux tutoriel super long qui n'explique pas les subtilités de son propre jargon. Quelle agression la première fois qu'on ouvre Emacs. Les typos moches, l'interface, beaucoup de choses manquantes que l'on retrouve dans n'importe quel logiciel libre permettant d'éditer du texte, notamment le très bon "Gedit" que l'on trouve sur Ubuntu de base:
- un menu pour ouvrir les fichiers récents
- des marges autour du texte
- les frames qui apparaissent sans que je comprenne comment elles se placent là où elles se placent.
- pas d'explorateur de fichiers intégré et visible
- Le fonctionnement des frames
- des raccourcis clavier super chelou, bien plus que 10 à apprendre pour avoir une utilisation fluide
- une doc qui décrit des touches qui n'existent plus depuis 30 ans sur les claviers
- une config rangée curieusement
- un language de programmation de plus à comprendre pour ne serait-ce que changer la police du texte
- un système de plugin inhabituel
- aucune aide visuelle pour les débutants
- plein de raccourcis clavier qwerty dignes de 1970 à apprendre
Vocabulaire à la noix
Emacs jargon Traduction moderne M-x Alt + x C-x Ctrl + x Frame Fenêtre Emacs Window Split/zone Buffer Bloc de texte/données contigus Point Position du curseur dans le buffer Active Region Texte sélectionné Region Plage de texte (pas surlignée par la sélection, qui se fait avec Ctrl+Espace) Face Propriétés de police, couleur et affichage
Choix de thème
https://emacsthemes.com/ Mettre dans la config le nom du thème. Après plusieurs essais de configuration j'ai opté pour la méthode Straight.el qui permet de déclarer les paquets et de documenter la configuration dans un fichier Org, traduit et interprêté au démarrage.
Comment j'organise le contenu de mes tâches et de mon wiki
Un seul fichier pour les notes c'est bien. Mais je ne suis pas toujours devant un ordi, j'utilise donc du papier et mon ordiphone avec les notes de Nextcloud pour prendre notre d'idées qui apparaissent forcément à des moments où mon attention n'est pas captive. ça me permet de les reporter ensuite dans ma liste de tâches. J'ai aussi des évènements dans mon agenda partagé avec ma moitié.
Je fais des révisions de mes tâches pas tous les jours mais presque, et de temps à autre des révisions de toutes mes tâches avec une vue personnalisée d'Agenda Orgmode.
J'utilise Org Roam pour relier plein de textes, et sa très sympathique interface en noeuds de réseau graphique: org-roam-ui. Si je dédiais des temps à des thématiques, je pourrai opérer vraiment des projets et les faire avancer d'avantage. Par exemple, me dire que "tel Lundi je le consacre à la glandouille, tel Jeudi à des choses hors ligne comme du sport, telle suite de jours je supprime les moyens de me contacter de façon rapide", définir des "gros galets" avec un créneau par semaine pour m'y consacrer, comme le "rendez-vous des tâches importantes" de l'April le Mercredi à 10h.
Ce qui m'importe c'est d'arriver à faire des choses par grappe, à ne pas oublier des choses importantes, à me motiver à sortir de la routine, prendre le temps de faire des choses plaisantes et à vraiment clarifier mes réflexions.
Où trouver de l'aide
A une tonne d'endroits, il existe d'ailleurs des gens qui font de la recherche académique ou qui écrivent des livres avec cet éditeur, alors qu'ils ne codent pas du tout.
- Le forum Emacs Doctor
- Dans des conférences de Pas Sage En Seine
- Sur invidious, proxy client à Youtube
- En demandant sur Mastodon
- Des canaux de discussion IRC / Matrix / XMPP
- Le wiki Emacs
- Le blog de Karl Voilt
- Le blog de Sacha Chua
- Aux gens qui disent GNU plus Linux
- Vous pouvez me contacter de plusieurs façons aussi:
https://www.cipherbliss.com/contact
Emacs est bien plus de choses qu'un simple éditeur de texte personnalisable, c'est quasiment un système d'exploitation de plus dans votre ordinateur, riche d'outils et d'une communauté qui a su lui faire traverser les âges. Certains s'en servent pour tout et n'importe quoi, et c'est tout le fun du truc.
D'autres utilisent neovim pour faire cela, et comme on peut tout personnaliser c'est assez vite tentant de tester des choses, cependant si on ne sait pas comment débugguer ça n'est pas évident de trouver ce qui fait tout péter.
C'est ce qui me sert à rédiger des tas de choses et à gérer mes projets, mais pas mes mots de passe. J'ai envisagé de l'utiliser comme IDE mais ça reste une configuration pas évidente pour retrouver ses habitudes de développement. Essayer un autre outil permet aussi de questionner son rapport aux habitudes que l'on prend à cause des outils précédents, et à quel point ceux-ci nous enferment dans des habitudes que l'on a pas choisir. Avec Emacs vous avez bien plus la main sur le résultat que dans n'importe quel IDE, y compris dans des environnements serveur headless. Je suis content d'avoir pu essayer plein de choses en m'inspirant des autres avec un simple copier coller de config et un relancement de programme. J'ai supprimé au fur et à mesure des packages dont je ne me servais pas, j'ai fouillé mes habitudes de raccourcis pris avec Netbeans il y a 20 ans de cela pour voir comment les remettre dans Emacs, et je me sers principalement de fichiers Org pour la gestion de mes tâches au quotidien, reliées sur mon mobile Android par Orgzly.
Commencez petit et vous verrez que vous n'avez pas besoin d'une configuration de ouf à rallonge pour faire votre café.
Havez fun!