Les nouveautés dans Emacs 23

Posté par  (site web personnel) . Modéré par Pascal Terjan.
Étiquettes :
15
1
avr.
2009
GNU
GNU Emacs est un éditeur de texte souple, extensible, personnalisable et auto-documenté. Il est disponible sur toutes les plate-formes courantes (GNU/Linux, *BSD, Unix, Mac OS, MS DOS, MS Windows...). Pour ceux qui ne le connaissent pas encore, GNU Emacs est une des briques logicielle historique du projet GNU offrant une plate-forme très complète d'édition de texte en tout genre (code source, rapport, notes, mails, ...). Cependant la conception d'Emacs permet d'étendre ses fonctionnalités en de véritables applications à part entière. Une des plus connues est sûrement le lecteur de news & mails Gnus.

La version 22, qui est en réalité une version 1.22, est sortie le 2 juin 2007. Cette version était très attendue et à connue depuis deux nouvelles révisions (le 28 mars et le 5 septembre 2008) dont des détails sont donnés en seconde partie de la dépêche.

Chong Yidong, mainteneur avec Stefan Monnier depuis le 22 février 2008, a également annoncé le troisième pretest 23.0.92. Cette prochaine version majeure contient des modifications importantes avec notamment une nouvelle gestion des polices de caractères et le mode multi-tty décrit en seconde partie. Principaux changement dans Emacs 22.2 et 22.3
  • Des nouveaux modes pour l'édition css, les styles bibtex (bst), vera, verilog, et socks.
  • Évolution du module de gestion de version de fichier (VC) avec la complétion des noms de révisions et le support de Mercurial, Monotone, bazaar et Git en plus de Subversion, RCS, CVS, SCCS. Il y a également la possibilité d'ajouter un sous-menu spécifique au backend utilisé.
  • Passage à la GPL version 3 ou ultérieure.
  • Support de GNU/FreeBSD.
  • Abandon du support de nombreuses architectures matérielles et systèmes d'exploitation disparus ou devenus marginaux.
  • Mise à jour et corrections variées (semantic, dired, ...).

Évolution dans Emacs 23

Emacs 23 est depuis quelque temps en gel des fonctionnalités ("features freeze") ce qui veux dire qu'il n'y aura pas de nouvelles fonctionnalités introduites jusqu'à la sortie officielle. Cette version comprend de nombreux changements. Sans doute, les deux plus attendus étaient le support des polices avec anti-aliasing ainsi que le mode multi-tty.

  • Police non-aliasées
    Pour la gestion des polices anti-aliasées, leurs dispositions et leurs formes, Emacs utilise dorénavant les bibliothèques Freetype, xft, otf et m17n. Fontconfig permet à Emacs d'accepter les spécifications de polices comme "monospace-12:bold" ou encore "Monospace Bold 12". Le clic gauche avec shift (S-down-mouse-1 pour les connaisseurs) ouvre un menu permettant de spécifier les attributs des polices. Avec le nouveau mode mineur global « Text Scale », de nouvelles commandes, dans l'esprit des navigateurs internet, permettent de changer la taille de la police (C-x C-+ ou C-x C-= pour augmenter. C-x C-- pour diminuer. C-x C-0 pour la taille par défaut). Il faut remarquer qu'Emacs gérait l'anti-aliasing sur les platformes win32 et carbon avant la version 23.
  • Le mode Multi-tty et daemon
    Voilà un gros chantier qui peut se résumer ainsi (tiré du NEWS): « Emacs now supports using both X displays and ttys in one session » soit en français « Emacs supporte dorénavant à la fois des affichage sur terminal virtuel et serveur X dans la même session ». Pour comprendre cela il faut connaître emacsclient.

    Jusqu'à maintenant, pour éviter de lancer une nouvelle session emacs à chaque édition de fichier, il était possible de donner la directive (server-start) lors d'un premier lancement. Une fois cette première session lancée il suffisait d'appeler emacsclient (généralement mis en variable EDITOR) a la place d'emacs lui-même. Emacsclient se chargeait alors de contacter la session serveur et le fichier était ouvert dans un nouveau cadre de la première instance.

    Cette approche possède deux limitations qui n'existent plus. Il fallait tout d'abord lancer une première instance complète en avant plan. Ensuite si la première session emacs en serveur était lancée en mode console, les nouveaux cadres ne pouvaient pas être des fenêtres X et inversement. La solution à la deuxième limitation a d'ailleurs fournit la solution à la première.

    Voilà avec Emacs 23 comment les choses se passent dorénavant :
    emacsclient -c
    ouvre une fenêtre X si vous êtes sous X ou un cadre emacs dans la console. Si vous voulez récupérer la main sur le terminal vous pouvez ajouter l'option -n.
    emacsclient -t
    ouvre un cadre emacs dans la console. On peut également préciser un éditeur alternatif si une première session emacs n'est pas lancée
    emacsclient -c -a (emacs|nano|vim|ed...)

    Et enfin il est possible de lancer emacs en tâche de fond dans .bashrc ou encore .xinitrc avec
    emacs --daemon
    qui vous rend la main directement. Des scripts qui enrobent ces directives peuvent déjà être trouvés sur le net. Le plus répandu consiste à lancer plusieurs démons nommés (exemple : edit, mail ou proj1) dans des écrans et de s'y connecter en fonction du besoin. On peut trouver ces scripts dans le README de l'auteur original Károly Lörentey


Changements mineurs

Cette version contient bien sûr tout un lot de mise à jours des modules et de corrections. De nombreuses nouveautés sont en fait l'intégration de modules tiers dans la version officielle. On peut citer, par exemple, la prise en compte des spécifications Xembed pour embarquer Emacs dans une application graphique tierce, une amélioration du support unicode, le support de d-bus ou encore du standard d'image SVG.

En conclusion, tout ceci, en plus de discussions sur les futures fonctionnalités d'Emacs, confirment la bonne santé de ce projet vieux de plus de vingt ans. Les développeurs montrent également que malgré un héritage de code énorme, ils sont près à des évolutions majeures pour une meilleure expérience utilisateur moderne.

Aller plus loin

  • # Trop gros

    Posté par  . Évalué à 10.

    Dire qu'emacs peut éditer des textes, c'est un poisson un peu gros.

    Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

    • [^] # Re: Trop gros

      Posté par  . Évalué à 8.

      Pour la version 24, ils prévoient d'intégrer le noyau Linux dedans, c'est le dernier truc qui manquait pour en faire un OS.
      • [^] # Re: Trop gros

        Posté par  . Évalué à 10.

        s/Linux/Hurd/
        • [^] # Re: Trop gros

          Posté par  . Évalué à 4.

          Non, ils ont dits qu'ils abandonnaient les OS morts.

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Trop gros

      Posté par  . Évalué à 10.

      Les nouveautés dans Emacs 23

      précision : on dit GNU/Emacs.
      Emacs c'est le noyau, GNU les composants qu'il y a autour.

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

    • [^] # Re: Trop gros

      Posté par  . Évalué à 7.

      C'est en effet très restrictif. L'édition de texte, c'est juste un effet de bord.

      CdM
  • # La missing-feature d'Emacs

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

    J'utilise GNU Emacs en version 23 depuis quelques semaines (ou mois ?) maintenant. Et honnêtement, il ne lui manque plus qu'une seule chose : un bon support natif de plusieurs mode majeurs en même temps.

    Les mmm-mode mumamo et compère sont vraiment pas terrible je trouve, et ce qui serait vraiment bien c'est quelque chose dans le même esprit que TextMate ou Gedit : pouvoir dire directement dans une description de syntaxe "entre ça et ça c'est tel mode".

    Bon mais c'est qu'un détail, Emacs est déjà parfait comme il est :-p. En plus j'ai découvert aujourd'hui twitter.el... Et puis c'est le seul éditeur à avoir la commande M-x butterfly :-D
    • [^] # Re: La missing-feature d'Emacs

      Posté par  . Évalué à 1.

      J'utilise GNU Emacs 23 depuis des mois, dans sa version dispo dans toutes les bonnes distribs, et c'est super stable (pour ceux qui hésiteraient à unmasker le package).
  • # C'est parceque c'est le premier avril, c'est ça ?

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

    Non sérieusement, pourquoi ne pas utiliser GNU screen pour le passage entre un tty et X11 ?
    • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

      Tu fais comment avec screen pour avoir une même appli qui s'affiche sur plusieurs terminaux tout en ayant une fenêtre X11 ouverte ?
      • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

        Je vois pas où est le problème, afficher une même appli sur plusieurs terminaux, c'est une fonctionnalité de base de screen.

        Au démarrage de ma session j'ai même mis ceci :

        # Recupere un caractere unique
        getc ()
        {
        stty raw -echo
        tmp=`dd bs=1 count=1 2>/dev/null`
        eval $1='$tmp'
        stty cooked
        }

        # On demande si screen doit être lancé
        # mais uniquement si on est pas déjà dans une session de screen
        if [ -z "`echo "$TERM" |grep "screen"`" ];then
        echo "Faut-il lancer screen [O|n]?"
        getc start_screen
        if [ `echo "$start_screen" | grep "n"` ];then
        echo "Screen ne sera pas lancé."
        # Si oui, on vérifie la présence d'une éventuelle
        # session à récupérer ou on en crée une
        else
        screen -xRR
        fi
        fi


        Donc quand je démarre un shell, si je ne presse pas «n», je retrouve ma session de screen (ou j'en crée une).

        Après pour avoir la même chose sous X11, il suffit de lancer un émulateur de terminal.

        Peut être que j'ai pas compris la problématique, mais je vois vraiment pas ce que ça permet de plus par rapport à l'utilisation de screen.
        • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

          Salut, je pense qu'il y a plusieurs réponses. Tout d'abord si tu ne cherches qu'à ouvrir une session existante puis au sein d'emacs ouvrir le fichier, la solution avec des screens est ok. Si tu veux ouvrir un fichier avec "emacsclient -t fichier" directement, avec un simple appel, ce n'est plus possible (je crois mais je connais mal screen).

          Ensuite cela permet également de pouvoir donner emacsclient comme éditeur à tout un tas de soft (sylpheed, firefox, EDITOR...), et on ouvrira toujours la même instance, quelque soit le type et le nombre de login.

          Ensuite la solution avec des screens ne permet pas d'ouvrir un cadre totalement graphique (avec primitives X), ce que sait faire emacs. Donc pas d'images dans les buffers, pas de polices différentes dans un même buffer, support limiter de la souris, pas de gtk (cocoa, winforms, ...).

          Pour finir, c'est une solutions qui fonctionne même si il n'y a pas screen d'installé (par exemple sur les autres systèmes).

          Depuis plusieurs année maintenant il existe des solutions d'enrobage à ce problèmes (entre autre avec des screens). Aucune ne proposait une solution aussi souple que dorénavant.

          En espérant avoir été clair...
          • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

            Pour ce qui est de l'ouverture de fichier textes depuis une autre application, oui, pourquoi pas, bien que j'ignorais que firefox pouvait changer d'éditeur (si c'est bien de la saisie dans des boites de texte dont tu parles). Du coté de vi il y a http://www.yzis.org/ qui tente de faire quelque chose de bien intégrable.

            Pour les cadres graphiques, les images et les polices différentes ce n'est pas une fonctionnalité que j'attends d'un éditeur de texte. Pour un traitement de texte, pourquoi pas, mais emacs se présente comme un éditeur de texte il me semble.
            • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

              « si c'est bien de la saisie dans des boites de texte dont tu parles »

              Oui c'est l'extension "it's all text". Pour thunderbird y'a "external editor".

              Pour le reste c'est comme tu veux.
            • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

              Posté par  . Évalué à 2.

              Pour les cadres graphiques, les images et les polices différentes ce n'est pas une fonctionnalité que j'attends d'un éditeur de texte. Pour un traitement de texte, pourquoi pas, mais emacs se présente comme un éditeur de texte il me semble.

              Quand tu crées un document LaTeX sous emacs (avec AucTeX-mode roxx), et que tu utilises le mode "preview" qui remplace dynamiquement les formules mathématiques que tu insères par leur "vrai rendu" (des images donc), c'est tellement plus agréable à relire pour repérer les erreurs que tu es bien content d'avoir un éditeur de texte qui sait afficher des images.
              • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

                un éditeur de texte qui sait afficher des images.

                Ce n'est donc plus un éditeur de texte.

                Je ne dis pas que ce n'est pas bien, si cela fait ce que l'utilisateur attends, c'est au contraire très bien. Il faudrait juste arrêter de présenter ce logiciel pour ce qu'il n'est pas. C'est un environnement de développement intégré, pas un éditeur de texte, et même plus encore.

                Nano, gedit, notepad ou vim sont des éditeurs de textes. Bien sûr la limite n'est pas net sur ce qui relève de l'édition de texte. Par exemple, quid de la correction orthographique ? Moi j'aurais tendance à dire qu'elle ne devrait pas plus être intégré qu'un débbogueur : on devrait pouvoir automatiser le saut et la correction vers l'erreur, voir la marquer visuellement, en utilisant le résultat passé par le logiciel externe, mais pas l'incorporer à l'éditeur.

                Chacun aura sa préférence entre l'approche «plein de logiciels qui ne font qu'une chose» et «un logiciel qui fait tout». Chaque approche à ses avantages et inconvénient.
                • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

                  >>un éditeur de texte qui sait afficher des images.
                  > Ce n'est donc plus un éditeur de texte.

                  Tu as probablement une définition d'éditeur de texte différente de la mienne, mais pour moi, un éditeur de texte, c'est un truc qui sert à éditer des fichiers textes. Ça n'a rien de contradictoire avec le fait d'afficher des images (typiquement, latex-preview).

                  Ça s'appelle comment, dans ton monde, Emacs + latex-preview ?
        • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

          D'une part, tu auras deux fois le même affichage dans les deux instances de screen, alors qu'un emacsclient te permet de faire des choses différentes dans des terminaux différents.

          Et surtout, oui, si ta notion de « sous X11 », c'est « dans un xterm qui tourne sous X11 », effectivement, tu peux tout faire sous X11. M'enfin, en général, quand on te parle d'application X11, c'est pas limité aux emulateurs de terminaux ...
          • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

            Pour tout ce qui est édition de texte, les outils en ligne de commande me semble ce qu'il y a de mieux a plus d'un titre. Non un émulateur de terminal c'est pas ce qu'il y a de plus pratique pour faire de la retouche d'images, c'est sûr (sauf pour des choses basiques à faire en traitement par lots), mais ce n'est pas le sujet ici.

            Et dans screen tu n'as pas nécessairement le même affichage sur les différents terminaux, c'est le cas seulement si tu affiches la même fenêtre de la même session.

            Maintenant je dis pas que ça a aucun intérêt, ça permet certainement une meilleur intégration avec les environnements de bureau comme expliqué ci-dessus. Moi je trouve cette approche de tout intégrer dans l'éditeur de texte trop usine à gaz, mais c'est que mon avis.
            • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

              Posté par  . Évalué à 8.

              Moi je trouve cette approche de tout intégrer dans l'éditeur de texte trop usine à gaz

              on parle d'emacs en même temps .... /o\
            • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

              Ce genre de fonctionnalité permet d'éditer un même fichier à deux endroits différents dans deux fenêtres différentes, ce qui peut être pratique. On peut même envoyer l'emacs sur un autre X, et alors travailler à deux en même temps sur le même fichier (mais gobby est tout de même plus adapté à cette problématique).

              Ensuite, les images et les polices de taille variables peuvent avoir un certain avantage dans un éditeur de texte, et n'est pas permis par un émulateur de terminal. Un exemple est preview-latex, qui permet d'afficher le rendu d'une formule mathématique, d'un tableau ou d'une figure dans ton éditeur : http://www.gnu.org/software/auctex/img/preview-screenshot.pn(...)

              Après, c'est vrai qu'emacs fait peut-être beaucoup de chose. Je n'irai pas jusqu'a dire que c'est un OS (il ne fait pas interface entre le matériel et le logiciel), mais je pense qu'on peut dire que c'est un environnement de bureau, comme Gnome, KDE et XFCE ;-)
            • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

              > Et dans screen tu n'as pas nécessairement le même affichage sur les différents
              > terminaux, c'est le cas seulement si tu affiches la même fenêtre de la même session.

              Je connais mal screen, mais il y a _vraiment_ un moyen de faire afficher des trucs différents dans des terminaux différents par _la même appli_ sans support de l'application en question ?

              Si c'est le cas, je veux bien voir les commandes qui le font.
              • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

                Non, pas par la même appli, «une fenêtre» screen à toujours le même contenu on est d'accord. Tu peux me donner un exemple d'usage utile ? Je n'arrive pas à voir l'intérêt de la chose. Si c'est juste pour basculer entre l'affichage de plusieurs fichiers dans un même éditeur de texte, il suffit d'utiliser les tampons, non ?
                • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

                  Deux xterm différents avec le même Emacs, c'est très pratique quand EDITOR=emacsclient, depuis n'importe quel xterm, une appli qui lance un éditeur va se connecter à ton Emacs existant sans le perturber (là, il y a aussi une faiblesse d'Emacs, c'est qu'un Emacs configuré à mort met deux plombes à démarrer, donc en dehors du fait de partager la liste des buffers et autres, emacsclient permet surtout de démarrer quasi-instantanément. On aurait été sous vi ça aurait été moins génant de démarer une nouvelle instance).

                  Un Emacs graphique et un autre en mode texte, j'utilise ça tous les jours : je préfère un Emacs graphique (plus de couleurs différentes disponibles que dans un xterm, donc plus joli à mon goût, des fois copier-coller à la souris, et les menus pour les modes que je ne connais pas bien pour chercher les commandes), mais quand je suis chez moi et que je me connecte au labo, je préfère le mode texte (plus réactif via la liaison ADSL), mais j'apprécie de me connecter au même Emacs quand même.
                  • [^] # Re: C'est parceque c'est le premier avril, c'est ça ?

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

                    Ok. Moi je préfères vim (c'est à dire que c'est le seul éditeur puissant que j'ai jamais appris), par contre j'ai jamais vraiment essayé gvim.

                    Comme tu le dis, vi(m) démarre instantanément (mon vimrc fait un peu plus de 150 lignes, ce qui est pas énorme mais pas minuscule non plus).

                    Pour le copier(/sélectionner) coller, pas de problème, je dirais même que je le trouve mieux que la plupart des applis, car selon comment tu configures la variable mouse, tu peux cliquer n'importe où dans ton vim pour faire ton coller au lieu d'avoir à viser.

                    Pour la connexion distante, je fait du ssh sur tuxfamily de temps en temps de manière fluide, j'ai jamais eu de problème.
  • # arf

    Posté par  . Évalué à 10.

    GNU Emacs est un éditeur de texte souple, extensible, personnalisable et auto-documenté.

    Tous les ans, je me fais avoir au même type de sottise...
    • [^] # Re: arf

      Posté par  . Évalué à 10.

      GNU Emacs est un éditeur de texte souple, extensible
      ... qui nécessite des doigts souples et extensibles eux aussi pour pouvoir être pleinement utilisé ... (4 mains de 10 doigts minimum)
    • [^] # Re: arf

      Posté par  . Évalué à 4.

      C'est vrai qu'on dirait la définition de vim.

      (bon, ben, je vais y aller moi...)
  • # GNU/FreeBSD ???

    Posté par  . Évalué à 3.

    A quoi ça sert de faire des trolls GPL vs BSD si c'est pour faire des hybrides transgéniques ensuite ?

    BeOS le faisait il y a 20 ans !

  • # Un petit easter egg sympa

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

    Tout (ou presque) est dans le titre.
    Ajout d'une commande «M-x butterfly».
    Pour les incultes : http://xkcd.com/378/

Suivre le flux des commentaires

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