OVH Cloud OVH Cloud

[gnus] BBDB et EUDC/LDAP

22 réponses
Avatar
Sébastien Kirche
Bonjour,

j'utilise BBDB comme gestionnaire d'adresses pour Gnus sur mes différents
postes (presque) sans souci.

Au boulot qui est majoritairement équipé windows on a également un serveur
de messagerie Exchange sur lequel je peux me connecter par LDAP pour
chercher un correspondant. J'y arrive par Emacs via le menu
«Tools/Directory search».

J'aimerais bien interfacer Gnus et/ou BBDB pour pouvoir rechercher via EUDC
dans la base LDAP au moment de la saisie du destinataire de la même façon
qu'actuellement quand je rentre le début du nom suivi de TAB BBDB me
complète ou me propose la liste des alternatives.

J'ai cherché sur Google sans trouver quelque chose de mieux qu'appeler via
un binding eudc-expand-inline (qui fonctionne mais pour le moment ne me fait
que l'expension du premier trouvé).

Quelqu'un d'ici a déjà essayé ça ?

--
Sébastien Kirche

2 réponses

1 2 3
Avatar
drkm
Sébastien Kirche writes:

Je pensais même chercher un moyen de modifier le code pour interroger eudc
et bbdb dans l'ordre de la variable message-expand-name-databases. Ça
permettrait de définir une priorité mais mon lisp est pauvre.



Tu as bien dis *modifier* le code ? Ceci pourrait peut-être
t'intéresser :

(defvar message-expand-name-databases ()
"(PREDICATE FUNCTION)'s list")

(defun message-expand-name ()
(let ((res nil)
(dbs message-expand-name-databases))
(while (and dbs (null res))
(let ((db (first dbs)))
(when (funcall (first db))
(setq res (funcall (second db)))))
(setq dbs (cdr dbs)))
(or res (expand-abbrev))))

(defun sk:eudc-expand-inline-p ()
(and (memq 'eudc message-expand-name-databases)
(boundp 'eudc-protocol)
eudc-protocol))

(defun sk:bbdb-complete-name-p ()
(and (memq 'bbdb message-expand-name-databases)
(fboundp 'bbdb-complete-name)))

(setq message-expand-name-databases
'((sk:eudc-expand-inline-p eudc-expand-inline)
(sk:bbdb-complete-name-p bbdb-complete-name)))

Ou tu peux garder la variable en l'état et introduire :

(defvar message-expand-name-databases-alist ()
"(SYM . (PREDICATE FUNCTION))'s list")

(setq message-expand-name-databases '(eudc bbdb))

(setq message-expand-name-databases-alist
'((eudc . (sk:eudc-expand-inline-p eudc-expand-inline))
(bbdb . (sk:bbdb-complete-name-p bbdb-complete-name))))

Je te laisse comprendre par le code, il est simple. Sinon, n'hésite
pas. Note que je ne suis pas certain que c'est ce que tu demandes.

Comment on fait un «for variable in liste do; done» en lisp ?



(dolist (variable liste)
...)

--drkm
Avatar
Xavier Maillard
On 30 Mar 2005, drkm wrote:

Xavier Maillard writes:

> > > (setq load-path
> > > (cons (expand-file-name "~/.elisp/gnus") load-path))"

> > (push (expand-file-name "~/.elisp/gnus") load-path)

> Tout cela reste une affaire de goût et une question
> d'habitude :)

Tout à fait :

(macroexpand '(push (expand-file-name "~/.elisp/gnus")
load-path)) ===> (setq load-path (cons (expand-file-name
"~/.elisp/gnus") load-path))



Voilà qui a le don de nous mettre tous d'accord :)

--
In Gruuik we trust
1 2 3