* riece-lsdb.el: New add-on.
authorueno <ueno>
Fri, 2 Jan 2004 23:43:48 +0000 (23:43 +0000)
committerueno <ueno>
Fri, 2 Jan 2004 23:43:48 +0000 (23:43 +0000)
* COMPILE (riece-modules): Add riece-lsdb.
* Makefile.am (EXTRA_DIST): Add riece-lsdb.el

* riece-xface.el: New add-on.
* COMPILE (riece-modules): Add riece-xface.
* Makefile.am (EXTRA_DIST): Add riece-xface.el

lisp/COMPILE
lisp/ChangeLog
lisp/Makefile.am
lisp/riece-lsdb.el [new file with mode: 0644]
lisp/riece-xface.el [new file with mode: 0644]

index fa6d087..f9abd24 100644 (file)
@@ -57,7 +57,9 @@
                riece-keyword
                riece-menu
                riece-icon
-               riece-async))))
+               riece-async
+               riece-lsdb
+               riece-xface))))
 
 (defun riece-compile-modules (modules)
   (let ((load-path (cons nil load-path)))
index a59e10e..96a1751 100644 (file)
@@ -1,3 +1,13 @@
+2004-01-02  Daiki Ueno  <ueno@unixuser.org>
+
+       * riece-lsdb.el: New add-on.
+       * COMPILE (riece-modules): Add riece-lsdb.
+       * Makefile.am (EXTRA_DIST): Add riece-lsdb.el
+
+       * riece-xface.el: New add-on.
+       * COMPILE (riece-modules): Add riece-xface.
+       * Makefile.am (EXTRA_DIST): Add riece-xface.el
+
 2003-12-25  Daiki Ueno  <ueno@unixuser.org>
 
        * Riece: Version 0.1.7 released.
index f9367f4..b0ced27 100644 (file)
@@ -10,7 +10,7 @@ EXTRA_DIST = COMPILE ChangeLog ChangeLog.Liece \
        riece-ndcc.el riece-rdcc.el riece-log.el riece-mini.el \
        riece-doctor.el riece-alias.el riece-layout.el riece-skk-kakutei.el \
        riece-guess.el riece-history.el riece-button.el riece-keyword.el \
-       riece-menu.el riece-icon.el riece-async.el
+       riece-menu.el riece-icon.el riece-async.el riece-lsdb.el riece-xface.el
 
 CLEANFILES = auto-autoloads.el custom-load.el *.elc
 FLAGS ?= -batch -q -no-site-file
diff --git a/lisp/riece-lsdb.el b/lisp/riece-lsdb.el
new file mode 100644 (file)
index 0000000..3c739c9
--- /dev/null
@@ -0,0 +1,86 @@
+;;; riece-lsdb.el --- interface to LSDB
+;; Copyright (C) 1998-2003 Daiki Ueno
+
+;; Author: Daiki Ueno <ueno@unixuser.org>
+;; Created: 1998-09-28
+;; Keywords: IRC, riece
+
+;; This file is part of Riece.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; To use, add the following line to your ~/.riece/init.el:
+;; (add-to-list 'riece-addons 'riece-lsdb)
+
+;;; Code:
+
+(autoload 'lsdb-maybe-load-hash-tables "lsdb")
+
+(eval-when-compile
+  (autoload 'lsdb-lookup-records "lsdb")
+  (autoload 'lsdb-puthash "lsdb")
+  (autoload 'lsdb-remhash "lsdb")
+  (autoload 'lsdb-gethash "lsdb")
+  (autoload 'lsdb-display-records "lsdb"))
+
+(defvar riece-lsdb-cache nil)
+
+(defun riece-lsdb-update-cache (record)
+  (let ((irc (cdr (assq 'irc record))))
+    (while irc
+      (lsdb-puthash (car irc) (car record) riece-lsdb-cache)
+      (setq irc (cdr irc)))))
+
+(defun riece-lsdb-delete-cache (record)
+  (let ((irc (cdr (assq 'irc record))))
+    (while irc
+      (lsdb-remhash (car irc) riece-lsdb-cache)
+      (setq irc (cdr irc)))))
+
+(defun riece-lsdb-lookup-records (user)
+  (lsdb-maybe-load-hash-tables)
+  (let ((name (lsdb-gethash (riece-format-identity user t)
+                           riece-lsdb-cache)))
+    (if name
+       (lsdb-lookup-records name))))
+
+(defun riece-lsdb-display-records (user)
+  (interactive
+   (let ((completion-ignore-case t))
+     (list (riece-completing-read-identity
+           "User: "
+           (riece-get-users-on-server (riece-current-server-name))))))
+  (let ((records (riece-lsdb-lookup-records user)))
+    (if records
+       (lsdb-display-records records)
+      (message "No entry for `%s'" (riece-format-identity user t)))))
+
+(defun riece-lsdb-insinuate ()
+  (require 'lsdb)
+  (add-to-list 'lsdb-secondary-hash-tables
+              'riece-lsdb-cache)
+  (add-to-list 'lsdb-after-update-record-functions
+              'riece-lsdb-update-cache)
+  (add-to-list 'lsdb-after-delete-record-functions
+              'riece-lsdb-delete-cache)
+  (define-key riece-command-mode-map
+    "\C-cL" 'riece-lsdb-display-records))
+
+(provide 'riece-lsdb)
+
+;;; riece-lsdb.el ends here
diff --git a/lisp/riece-xface.el b/lisp/riece-xface.el
new file mode 100644 (file)
index 0000000..80d8cea
--- /dev/null
@@ -0,0 +1,69 @@
+;;; riece-xface.el --- display X-Face on user list buffer
+;; Copyright (C) 1998-2003 Daiki Ueno
+
+;; Author: Daiki Ueno <ueno@unixuser.org>
+;; Created: 1998-09-28
+;; Keywords: IRC, riece
+
+;; This file is part of Riece.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; To use, add the following line to your ~/.riece/init.el:
+;; (add-to-list 'riece-addons 'riece-xface)
+
+;;; Code:
+
+(require 'riece-identity)
+(require 'riece-globals)
+(require 'riece-display)
+(require 'riece-lsdb)
+
+(defvar lsdb-insert-x-face-function)
+
+(defun riece-xface-update-user-list-buffer ()
+  (save-excursion
+    (set-buffer riece-user-list-buffer)
+    (riece-scan-property-region
+     'riece-identity (point-min)(point-max)
+     (lambda (start end)
+       (let ((records (riece-lsdb-lookup-records (get-text-property
+                                                 start 'riece-identity)))
+            xface)
+        (while (and records
+                    (null xface))
+          (setq xface (nth 1 (assq 'x-face (car records)))
+                records (cdr records)))
+        (if (and xface
+                 (not (eq (char-after end) ? )))
+            (let ((inhibit-read-only t)
+                  buffer-read-only)
+              (goto-char end)
+              (insert " ")
+              (funcall lsdb-insert-x-face-function xface))))))))
+
+(defun riece-xface-requires ()
+  '(riece-lsdb))
+
+(defun riece-xface-insinuate ()
+  (add-hook 'riece-update-buffer-functions
+           'riece-xface-update-user-list-buffer t))
+
+(provide 'riece-xface)
+
+;;; riece-xface.el ends here