Emacs 24
La future mouture d’EMACS, version 24, apporte de nombreux changements, en particulier au niveau de la standardisation en introduisant plusieurs fonctions génériques qui simplifient beaucoup les modes et unifient leur comportement.
Un outil d’auto-complétion pcomplete a été introduit. Il s’agit d’un moteur d’auto-complétion programmable, qui sera notamment utilisé dans shell-mode, avec un comportement comme celui de bash ou zsh. Pour les modes, completion-at-point est une commande générique d’EMACS permettant de standardiser les systèmes de complétion. En effet jusqu’ici, les différents modes majeurs avaient chacun leurs petites fonction d’auto-complétion plus ou moins bien codées, et surtout avec des comportements différents.
EMACS est désormais lié à gtk3 et propose une meilleure intégration au thème gtk de l’environnement. Ce n’est guère important pour ceux qui virent l’interface, mais c’est un pas en avant.
Changement intéressant, EMACS 24 incorpore un gestionnaire de paquets qu’on peut accéder avec M-x list-packages. Cela permet d’installer facilement des modes et d’autres outils. Seul bémol, le dépôt par défaut est celui du projet GNU qui nécessite une attribution de droit d’auteur, donc il n’y a pas beaucoup de paquets. Heureusement, des dépôts alternatifs ont déjà vu le jour.
Voici venir la fin d’une ère. L’illustre paquet color-theme voit en effet ses derniers jours dans EMACS 23 et sera remplacé par un système de thèmes intégré à l’éditeur. Ce système est non seulement plus léger, il enlève aussi certains bugs ennuyeux de color-theme (comme quand on change thème dans une même session par exemple).
cc-mode, le mode majeur pour C peut maintenant deviner le style de code du buffer. Cela évitera bien des griefs en modifiant le fichier de quelqu’un qui indente son code différemment.
Le développement d’EMACS est passé du vénérable CVS à bazaar il y a peu. En conséquence, le support des dvcs dans vc-mode a été amélioré.
De nouveaux modes font aussi leur apparition dans cette nouvelle version.
occur-mode permet de lister toutes les lignes correspondant à une regexp particulière dans un buffer à l’intérieur d’un buffer temporaire. On peut faire des changements dans ce buffer temporaire qui seront automatiquement appliqués au buffer original.
Les deux modes mineurs electric-pair-mode et electric-indent-mode ont été intégré. Leur but est de proposer plus de standardisation en evitant aux modes d’implémenter leur propres fonctions électrique.
Un mode de gestion de mot de passe qui se lie à Gnome-keyring ou KDE Wallet a été ajouté. Pratique quand on utilise tramp pour accéder à son code via FTP ou SSH.
EMACS s’intègre maintenant avec le système de notification du bureau. Pratique quand on reçoit un hl dans ERC ou dans jabber.el.
Enfin, un morceau particulièrement juteux, soap-client et soap-inspect ont été ajoutés. Ils permettent de se connecter à un serveur SOAP et le débugger les doigts dans le pif. Voici une fonction super utile pour moi .
Il y a bien sûr beaucoup beaucoup d’autres changements, mais je vous ai listé ceux qui m’intéresse en particulier. Vous pouvez jeter un oeil sur le blog qui m’a inspiré pour plus d’informations.
Ah et tant que j’y suis, voici la conversion de mon thème etenil-pastel pour EMACS 24:
(deftheme etenil-pastel "Theme for etenil") (custom-theme-set-faces 'etenil-pastel '(default ((t (:background "#111111" :foreground "#cccccc")))) '(cursor ((t (:background "#cccccc" :foreground "#111111")))) '(region ((t (:slant italic :background "#444444")))) '(mode-line ((t (:background "#444444" :foreground "#cccccc")))) '(mode-line-inactive ((t (:background "#444444" :foreground "#888888")))) '(fringe ((t (:background "#444444")))) '(minibuffer-prompt ((t (:foreground "#cccccc")))) '(font-lock-builtin-face ((t (:foreground "#88cc66")))) '(font-lock-comment-face ((t (:foreground "#555555")))) '(font-lock-constant-face ((t (:foreground "#cc6666" :weight bold)))) '(font-lock-function-name-face ((t (:foreground "#cccc66")))) '(font-lock-keyword-face ((t (:foreground "#88cc66")))) '(font-lock-string-face ((t (:foreground "#cc6688")))) '(font-lock-type-face ((t (:foreground "#66cccc" :underline t)))) '(font-lock-variable-name-face ((t (:foreground "#6688cc")))) '(font-lock-warning-face ((t (:foreground "#bb0000")))) '(isearch ((t (:background "#cd00cd" :foreground "#b0e2ff")))) '(lazy-highlight ((t (:background "#afeeee")))) '(link ((t (:foreground "#0000ff" :underline t)))) '(link-visited ((t (:foreground "#8b008b" :underline t)))) '(button ((t (:underline t)))) '(header-line ((t (:background "#444444" :foreground "#111111"))))) (provide-theme 'etenil-pastel) ;; Local Variables: ;; no-byte-compile: t ;; End: ;;; etenil-pastel-theme.el ends here