[mew-dist 24003] alternative-fullname on mew-ldap.el
Nakagawa Yasuharu
yasuharu.nakagawa at example.com
2003年 9月 11日 (木) 12:53:04 JST
中川@東京武蔵野です こんにちは
mew-win32での話のついでに、mew-ldap.elに追加を行ってみました。
M-TABで表示されるユーザ名が"cn"固定になっていたところを、
mew-ldap-alternative-fullname-list
という変数を作って、そこから指定するようにしてあります。
.mew.elなどで、
(setq mew-ldap-alternative-fullname-list '("ou" "sn" "givenname"))
という具合に、表示するデータや順番を変更できます。
# ふぅ。。。 みようみまねですが、やっぱりlispは難しい。。。:-)
おかしなところがあるかもしれませんが、ご指摘いただければ幸いです。
--- mew-ldap.el.orig Thu Sep 11 12:38:13 2003
+++ mew-ldap.el Thu Sep 11 12:43:55 2003
@@ -399,6 +399,10 @@
And you can use completion string like:
\"gotoh/Shunichi_Goto/Goto/Shunichi\"")
+(defvar mew-ldap-alternative-fullname-list nil
+ "*List of fullname list
+")
+
(defconst mew-ldap-program "ldapsearch"
"*Program name to make query to LDAP.
It should be ldapsearch come with OpenLDAP and compatibles. If you
@@ -704,7 +708,21 @@
"unknown")))
mew-ldap-alternative-dn-type-list
","))
-
+
+(defun mew-ldap-make-alternative-fullname (attr-list)
+ "make full-name from mew-ldap-alternative-fullname-list"
+ (mapconcat '(lambda (str)
+ (if (string-match "[a-z]+= *\\(.*\\)" str)
+ (mew-match-string 1 str)))
+ (mew-split
+ (mapconcat (lambda (type)
+ (format "%s=%s" (upcase type)
+ (or (mew-ldap-get-value type attr-list)
+ "unknown")))
+ mew-ldap-alternative-fullname-list
+ ",")
+ ?,)
+ " "))
(defun mew-ldap-make-addrbook-alist (word entries)
"Make addrbook format alist using WORD with ENTRIES.
@@ -742,7 +760,9 @@
values (mew-ldap-get-matched-values
word mew-ldap-search-attribute-type-list ent)
mail (mew-ldap-get-value "mail" ent)
- name (mew-ldap-get-value "cn" ent)
+ name (if mew-ldap-alternative-fullname-list
+ (mew-ldap-make-alternative-fullname ent)
+ (mew-ldap-get-value "cn" ent))
dn (if mew-ldap-alternative-dn-type-list
(mew-ldap-make-alternative-dn ent)
(mew-ldap-get-value "dn" ent))
--
Mew-dist メーリングリストの案内