X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Friece-lsdb.el;h=22bbbeda0f86af0424c84b66774e70ae5feff33d;hb=9574b82522bc5a75829659c4d527779b60018368;hp=b477adc54771cc411fd6b4054bbbd13703b9ecca;hpb=5a7da5eb0c0723052dce3d76de7845a803c89627;p=elisp%2Friece.git diff --git a/lisp/riece-lsdb.el b/lisp/riece-lsdb.el index b477adc..22bbbed 100644 --- a/lisp/riece-lsdb.el +++ b/lisp/riece-lsdb.el @@ -1,4 +1,4 @@ -;;; riece-lsdb.el --- interface to LSDB +;;; riece-lsdb.el --- help register nicknames in LSDB rolodex program ;; Copyright (C) 1998-2003 Daiki Ueno ;; Author: Daiki Ueno @@ -19,26 +19,33 @@ ;; 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. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: -;; To use, add the following line to your ~/.riece/init.el: -;; (add-to-list 'riece-addons 'riece-lsdb) +;; NOTE: This is an add-on module for Riece. ;;; Code: +(require 'riece-identity) +(require 'riece-misc) + (eval-when-compile (autoload 'lsdb-maybe-load-hash-tables "lsdb") + (autoload 'lsdb-rebuild-secondary-hash-tables "lsdb") (autoload 'lsdb-lookup-records "lsdb") (autoload 'lsdb-puthash "lsdb") (autoload 'lsdb-maphash "lsdb") (autoload 'lsdb-gethash "lsdb") - (autoload 'lsdb-display-records "lsdb")) + (autoload 'lsdb-display-records "lsdb") + (autoload 'lsdb-update-record "lsdb")) (defvar riece-lsdb-cache nil) +(defconst riece-lsdb-description + "Help register nicknames in LSDB rolodex program.") + (defun riece-lsdb-update-cache (record) (let ((irc (cdr (assq 'irc record)))) (while irc @@ -59,6 +66,8 @@ (defun riece-lsdb-lookup-records (user) (lsdb-maybe-load-hash-tables) + (unless riece-lsdb-cache + (lsdb-rebuild-secondary-hash-tables)) (let ((names (lsdb-gethash (riece-format-identity user t) riece-lsdb-cache)) records) @@ -78,6 +87,7 @@ (lsdb-display-records records) (message "No entry for `%s'" (riece-format-identity user t))))) +(defvar lsdb-hash-table) (defun riece-lsdb-add-user (user full-name) (interactive (let ((completion-ignore-case t) @@ -104,6 +114,10 @@ "")) (list (cons 'irc (cons irc old))))))) +(defvar riece-command-mode-map) +(defvar lsdb-secondary-hash-tables) +(defvar lsdb-after-update-record-functions) +(defvar lsdb-after-delete-record-functions) (defun riece-lsdb-insinuate () (require 'lsdb) (add-to-list 'lsdb-secondary-hash-tables @@ -111,12 +125,28 @@ (add-to-list 'lsdb-after-update-record-functions 'riece-lsdb-update-cache) (add-to-list 'lsdb-after-delete-record-functions - 'riece-lsdb-delete-cache) + 'riece-lsdb-delete-cache)) + +(defun riece-lsdb-uninstall () + (setq lsdb-secondary-hash-tables + (delq 'riece-lsdb-cache lsdb-secondary-hash-tables) + lsdb-after-update-record-functions + (delq 'riece-lsdb-update-cache lsdb-after-update-record-functions) + lsdb-after-delete-record-functions + (delq 'riece-lsdb-delete-cache lsdb-after-delete-record-functions))) + +(defun riece-lsdb-enable () (define-key riece-command-mode-map "\C-c\C-ll" 'riece-lsdb-display-records) (define-key riece-command-mode-map "\C-c\C-la" 'riece-lsdb-add-user)) +(defun riece-lsdb-disable () + (define-key riece-command-mode-map + "\C-c\C-ll" nil) + (define-key riece-command-mode-map + "\C-c\C-la" nil)) + (provide 'riece-lsdb) ;;; riece-lsdb.el ends here