Emacs et Gnus sous environnement MS/Windows

Christophe Cuq


Table des matières

Introduction
Avertissement
Mise en garde
Remerciements
Installation de NTemacs
Récupération des binaires
Installation
Paramétrages de base
Installation de Gnus
Récupération du programme
Compilation
Configuration
Les ressources
Conclusion

Introduction

Emacs est un éditeur de texte très puissant, diffusé par la FSF (Free Software Foundation) et basé sur un langage particulier le LISP. Au départ conçu pour fonctionner sous Unix, il a été porté sous d'autres systèmes d'exploitation, dont Windows. Cet éditeur permet, entre autres, la coloration syntaxique des instructions dans les langages de programmation, de compiler en direct... Il existe par exemple des modes pour le C, le C++, le Perl, le VB (eh oui), le html, les css...

Il permet aussi, grâce à un module complémentaire (Gnus) de lire les News et le mail.

Avertissement

Emacs et Gnus ne sont pas des cliquodromes. Si vous ne souhaitez pas faire vous même vos fichiers de config à la main ni vous investir dans leur apprentissage, ne les installez pas et choisissez autre chose.

Les documents d'aide disponibles sur NTemacs étant pour la plupart en anglais, il est pratiquement indispensable de comprendre cette langue.

Cette Doc ne traite pas de Xemacs, mais le passage de l'un à l'autre n'est pas si compliqué (quelques options du fichier .emacs qui changent).

Mise en garde

Ce document est seulement une explication de la méthode que j'utilise lorsque je veux installer NTemacs/Gnus sur une nouvelle machine. Il est livré en l'état et sans aucune garantie. Il ne se veut pas non plus un manuel de NTemacs ni de Gnus.

Comme pour toute installation de quoi que ce soit, et surtout en environnement Microsoft, n'hésitez pas à faire une sauvegarde de vos données personnelles et/ou sensibles avant l'installation.

Vous aurez été prévenu.

Remerciements

Je voudrais remercier ici tous ceux qui m'ont permis de découvrir ce logiciel en mettant à disposition de tous des doc bien faites ou leurs fichiers de config commentés en français (en particulier Nicolas Chuche, Arnaud Gomes Do Vale, Soliman Hindy, A. Delcros, Éric Jacoboni, Nat Makarévitch...), ainsi que les participants de fr.comp.applications.emacs.

Des remerciements particuliers à Jean-Luc Cassel qui a bien voulu relire la première version de ce document et y apporter ses corrections.

Installation de NTemacs

Récupération des binaires

Les binaires sont disponibles à ftp.gnu.org sous plusieurs versions :

Version complète :

emacs-20.7-fullbin-i386.tar.gz (13 004 713 octets).

Version allégée ne comportant que les fichiers binaires et quelques paquetages de base :

emacs-20.7-bin-i386.tar.gz (8 963 432 octets).

Version très allégée :

emacs-20.7-barebin-i386.tar.gz (2 140 132 octets).

Les paquetages complémentaires non présents dans la version allégée :

emacs-20.7-lisp.tar.gz (5 302 393 octets).



Pour ceux qui voudraient utiliser aussi des langues nécessitant un alphabet différent il faut prendre aussi le paquetage emacs-20.7-leim.tar.gz (2 942 282 octets).

Personnellement je charge toujours la version complète pour être sûr d'avoir le maximum de choses, je ne sais donc pas exactement ce que contiennent les autres.

La dernière version en date au 30/08/2000 est NTEmacs 20.7.1 (même si la FAQ annonce fièrement que c'est la 20.4.1).

La FAQ en anglais est disponible .

Autre site donné par Jean-Luc Cassel : w3.trib.com.

La lecture de ces documents est vivement conseillée.

Installation

Décompacter à l'aide de Winzip (ou autre programme permettant de décompacter les .tar.gz) le fichier .tar.gz récupéré à l'étape précédente. Le chemin importe peu, du moment qu'on conserve la structure des répertoires des fichiers contenus dans l'archive (chez moi, je décompacte dans d:\emacs-20.7).

Après décompactage l'arborescence ressemble à ça = :

disque d:
        \emacs-20.7\
                \bin\
                \etc\
                \info\
                \lisp\


Il faut rajouter à la main le répertoire \site-lisp\ :

  • En utilisant l'explorateur, créer un dossier site-lisp dans le dossier emacs-20.7.

  • En utilisant la console windows :

      cd emac-20.7
      md site-lisp
    




Ce répertoire servira à installer tous les fichiers .el et/ou .elc que l'on ajoutera plus tard.

Normalement la version 21 de Emacs devrait installer cela correctement et rajouter un fichier dans ce répertoire qui permettra d'installer automatiquement les fichiers qui seront décompactés dans \site-lisp.

Créer un répertoire quelconque qui sera affecté à la variable $HOME et recevra les fichiers de config et les mail et news (on peut s'en passer, mais je pense que c'est une mauvaise idée).

Chez moi $HOME pointe sur d:\ccuq\ .

Ensuite la procédure dépend de l'OS :

  • Sous Windows 95/98 rajouter dans l'autoexec.bat : SET HOME=d:\le_répertoire.

    Redémarrez l'ordinateur pour que la modification soit prise en compte.

  • Sous Windows NT ou 2000 cela se règle dans les propriétés de l'utilisateur :

    • Winnt: Panneau de Config\Système -> Onglet Environnement

    • Win2000 : Panneau de Config\Système -> Onglet Avancé -> bouton Variables d'environnement



    Rajouter une Variable HOME Valeur d:\le_repertoire



Tant qu'on en est à modifier les variables d'environnement, rajouter le chemin vers emacs\bin dans le PATH.

Placez vous dans le répertoire contenant emacs et tapez :

addpm d:\emacs-20.7
afin d'installer tout ce qu'il faut dans la base de registres et d'avoir une icône qui pointe sur d:\emacs-20.7\bin\runemacs.exe.

Vous pouvez maintenant lancer Emacs.

Paramétrages de base

Emacs tel qu'installé est utilisable, mais vous allez sûrement vouloir le configurer à votre goût.

Avant tout, allez consulter la doc livrée avec Emacs, en commençant par le tutorial (C-h t (Ctrl+h puis t) puis par l'info (C-h i mEmacs RET).

C correspond à la touche Ctrl, M correspond à la touche Méta qui se trouve être aussi la touche Alt sur un clavier Windows. Par la suite, lorsque vous verrez M-x, cela correspondra à taper simultanément ALT+x.

La première chose à faire est de créer un fichier de config qui s'appellera .emacs (certains disent qu'il peut s'appeler _emacs, mais j'avoue que personnellement j'ai toujours utilisé .emacs et ça marche parfaitement).

Ce fichier ne peut pas être créé directement dans l'explorateur (limitation de Windows qui ne permet pas de créer des fichiers dont le nom est vide). Nous allons donc le créer directement dans Emacs.

Tapez Ctrl+X Ctrl+F puis, dans la mince fenêtre du bas ("minibuffer"), juste à droite de "Find file:", écrivez : ~/.emacs et appuyez sur Entrée (~/ correspond au répertoire $HOME).

Et dedans on tape les options que l'on veut.

Ci-dessous un extrait d'un.emacs (le mien) mais il y en a plein de disponibles sur le net, notamment dans la FAQ de NTEmacs. Les lignes commençant par «;» correspondent à des commentaires qui ne seront pas traités par emacs

Pour ceux que ça intéresserait, mon .emacs et mon .gnus seront dès que j'aurai eu le temps de les passer en html.

;; Paramètres d'affichage et Latin1

; Pour avoir l'affichage des italiques
; doit être positionné avant toute commande définissant les polices
(setq w32-enable-italics t)
(set-face-font 'italic "-*-Courier New-normal-i-*-*-12-*-*-*-c-*-iso8859-1")
(set-face-font 'bold-italic "-*-Courier New-bold-i-*-*-12-*-*-*-c-*-iso8859-1")
 
; Utilise la sélection normale des polices de windows
(setq w32-use-w32-font-dialog t)

;Affichage du nom du buffer/fichier dans la barre de titre
 
(setq frame-title-format '(buffer-file-name "Emacs: %b (%f)" "Emacs: %b"))

; Paramètres par défaut d'affichage, curseur boîte rouge, fond noir,
; police Courier New blanche taille 12
(setq default-frame-alist
               ' ((cursor-color . "red")
                  (cursor-type . box)
                  (foreground-color . "white")
                  (background-color . "black")
                  (font . "-*-Courier New-normal-r-*-*-12-*-*-*-c-*-iso8859-1")))
 
; la modeline dans une police plus petite afin d'avoir plus de choses
(set-face-font 'modeline "-*-Courier New-normal-r-*-*-11-*-*-*-c-*-iso8859-1")
 
; Accès aux caractères non inclus sur le clavier par C-x 8
(load-library "iso-transl")
 
; fonctionnement comme sous Win (shift+flèche, Ctrl+Home ...
(load-library "pc-mode")
(pc-selection-mode)
 
; encodage iso-8859-1 par défaut
(set-language-environment "Latin-1")
(standard-display-european t)
 
; la touche ^ fonctionne comme une touche morte
(define-key function-key-map [dead-circumflex] 'compose-circumflex-map) 
 
; touche F5 fait un goto n° ligne
(global-set-key [f5] 'goto-line)
 
; en fin de buffer la touche flèche ne crée pas une nouvelle ligne
(setq-default next-line-add-newlines nil)
 
; Touche <ALT> fonctionnement standard Windows (appel aux menus)
(setq w32-pass-alt-to-system t)
 
;; Major mode par défaut et coloration maxi dans tous les modes qui la
;; supportent

(setq default-major-mode 'text-mode)
 
(cond ((fboundp 'global-font-lock-mode)
            ;; Load the font-lock package.
            (require 'font-lock)
            ;; Maximum colors
            (setq font-lock-maximum-decoration t)
            ;; Turn on font-lock in all modes that support it
            (global-font-lock-mode t)))
 
;; Affichage numéros de ligne et colonne dans la modeline
(setq line-number-mode t)
(setq column-number-mode t)
 
;; Backup directory pour avoir tous les fichiers de backup dans un seul
;; répertoire plutôt que d'en avoir partout;

(defun make-backup-file-name (file)
   (concat "~/backup/" (file-name-nondirectory file) "~"))


Dedans j'ai aussi plein de choses qui concernent le paramétrage des couleurs et des outils que j'utilise dans Emacs, mais par rapport au propos de ce document, elles n'auraient pas d'utilité.

Maintenant Emacs fonctionne. Vous pouvez, ou plutôt devez lire la doc et la FAQ pour savoir où vous allez.

Installation de Gnus

Gnus est un add-on pour Emacs qui permet de gérer les news (son application première) et les mails. Pour les mails, on peut aussi utiliser VM ou autres, mais je n'ai jamais testé.

Une version de Gnus est livrée en standard dans la distribution fullbin, mais comme il s'agit d'une ancienne version (5.7) alors que nous en sommes à la 5.8.7. Je vous conseille donc de récupérer la nouvelle version qui gère en standard les formats MIME, l'envoi et la réception de fichiers attachés, et tout cela sans avoir à ajouter quoi que ce soit.

Récupération du programme

Le programme est disponible sous forme de sources à : ftp.gnus.org/pub/gnus/.

Récupérer le fichier gnus.tar.gz qui contient toujours la dernière version. (en version 5.8.7 : 1 285 442 octets)

Compilation

À l'aide de Winzip (ou autre programme permettant de décompacter les .tar.gz) décompacter les fichiers dans un répertoire quelconque (par exemple ~/ ouc:\temp...

Ensuite 2 solutions :

  • Vous disposez des outils Cygnus (portage sour Win32 des outils GNU, un conseil récupérez les ) :

    • Lancer cygnus

    • Aller dans le répertoire où est décompacté Gnus (cd ~/gnus-5-8.7 par exemple) et puis taper : ./configure && make

      Et voilà.

    • Vous pouvez maintenant copier tout ce qui se trouve dans le répertoire gnus-5-8.7/lisp/ dans /emacs/site-lisp/gnus ou le laisser dans ~/gnus-5-8.7 et tout ce qui se trouve dans gnus-5-8.7/info/ dans /emacs/info.



  • Vous ne disposez pas des outils Cygnus ? Utilisez la procédure décrite par Jean-Luc Cassel :

     From: Jean-Luc Cassel <jl.c@jiluc.org>
     Newsgroups: fr.usenet.reponses,fr.usenet.logiciels,fr.comp.applications.emacs
     Subject: [Mini-Faq] Installer un nouveau Gnus avec NTemacs
    


    Jean-Luc conseille de garder plusieurs versions (au moins l'ancienne plus la nouvelle) dans des répertoires distincts afin de pouvoir tester les fonctionnalités de la nouvelle version. Pour cela, il suffit de suivre ses conseils, et de modifier les .emacs pour pointer sur celui que vous voulez lancer (en changeant les chemins indiqués dans le .emacs.

    Personnellement, j'aime bien prendre des risques et installer toujours dans le même répertoire. Mais il faut aimer le risque.



Configuration

Maintenant, comme pour .emacs, il faut créer un .gnus pour stocker la configuration de Gnus (on peut le faire dans le .emacs, mais il semble que ce soit moins propre et moins lisible. Cependant, si on utilise le programme Customize, les modifs seront stockées dans le .emacs...)

Comme pour emacs, il est conseillé de lire la doc de Gnus (C-h i mGnus RET).

C'est dans le .gnus que l'on définit tout ce qui concerne le courrier et les news, à l'exception de la configuration des méthodes d'envoi de mail par smtp qu'il vaut mieux charger dans le .emacs pour qu'elles soient disponibles même si Gnus n'a pas été chargé.

ATTENTION : Même si il est censé fonctionner en off-line en mode Agent, je ne l'ai jamais testé. J'ai pour ma part installé un serveur de news en local (Dnews), payant, ainsi qu'un serveur de courrier (Mercury32), gratuit, non libre, documentation payante, mais on peut aussi utiliser Hamster qui semble très bien fonctionner aux dires de Jean-Luc et fait office à la fois de serveur de news local et de serveur de courrier.

Dans le .emacs :

;; Options de mail par défaut
;; définition du mode smtp pour envoyer le courier

(setq user-full-name "Prénom Nom")
(setq user-mail-address "adresse@mail")
 
(setq smtpmail-default-smtp-server "votre.smtp")
(setq smtpmail-local-domain nil)
(setq send-mail-function 'smtpmail-send-it)
 
(load-library "smtpmail")
 
(load-library "message")
(setq message-send-mail-function 'smtpmail-send-it)


Dans le .gnus :

;;Définition du serveur et des méthodes de base

; les news 
(setq gnus-select-method '(nntp "serveur.news"))
(setq gnus-check-new-newsgroups 'ask-server)
(setq gnus-save-killed-list nil)

; le mail 
(setq gnus-secondary-select-methods
           '((nnml "un nom ou rien")))

(setq mail-sources
           '(
             (pop :server "nom machine"
                  :user "nom user"
                  :port "pop3"
                  :password "password" )
             (pop :server "nom machine"
                  :user "autre user"
                  :port "pop3"
                  :password "password")
             ))
 
;Headers par défaut
(setq message-default-news-headers
       "Mail-copies-to: never\nX-attribution: blah\n")

;sert à générer la partie droite des messages ID
(setq mail-host-address "nom.de.machine")
 
; pour ne pas avoir le header Sender:
(add-to-list 'message-syntax-checks '(sender . disabled))
 
;; L'affichage des messages
(setq gnus-article-display-hook
       '(gnus-article-hide-headers-if-wanted  
         gnus-article-date-lapsed
         gnus-article-hide-pgp
         gnus-article-treat-overstrike
         gnus-article-de-quoted-unreadable
         gnus-article-strip-leading-blank-lines
         gnus-article-remove-trailing-blank-lines
         gnus-article-strip-multiple-blank-lines
         gnus-article-highlight
         gnus-article-highlight-signature
         gnus-article-emphasize
         gnus-article-fill-cited-article))


Voilà, maintenant il ne reste plus qu'à lire la nombreuse documentation disponible dans le module Info. (C-h i mGnus RET).

Les ressources

Pour les questions concernant Emacs et Gnus, il existe de nombreuses ressources :

Sur usenet :
  • en français :

    • fr.comp.applications.emacs (emacs)

    • fr.usenet.logiciels (gnus)



  • en anglais :

    • comp.emacs (emacs)

    • gnu.emacs.help (emacs)

    • alt.religion.emacs (emacs)

    • gnu.emacs.gnus (gnus)



Les listes de diffusion :


Conclusion

Bonne lecture et bienvenue dans le monde merveilleux de Emacs/Gnus. Et ne vous laissez pas entraîner dans des discussions stériles avec les utilisateurs de "n'importe quoi"/vi : ils sont jaloux de la puissance de Emacs, et ils n'ont jamais réussi à s'en servir correctement :)