Anonymous avatar Anonymous committed 36dfb95

Sync riece with upstream version 1.0.3

Comments (0)

Files changed (64)

 mkinstalldirs
 missing
 Makefile.in
-Makefile
 aclocal.m4
 configure
 config.log
+2004-06-27  Ilya N. Golubev <gin@mo.msk.ru>
+	
+	* .cvsignore: Remove `Makefile'.
+
+2004-09-05  Daiki Ueno  <ueno@unixuser.org>
+
+	* Riece: Version 1.0.3 released.
+	* configure.ac: Bump up version to 1.0.3.
+
+2004-08-16  Daiki Ueno  <ueno@unixuser.org>
+
+	* Riece: Version 1.0.2 released.
+	* configure.ac: Bump up version to 1.0.2.
+
+2004-07-10  Daiki Ueno  <ueno@unixuser.org>
+
+	* Riece: Version 1.0.1 released.
+	* configure.ac: Bump up version to 1.0.1.
+
+2004-05-29  Daiki Ueno  <ueno@unixuser.org>
+
+	* Riece: Version 1.0.0 released.
+	* configure.ac: Bump up version to 1.0.0.
+
+2004-05-07  Daiki Ueno  <ueno@unixuser.org>
+
+	* configure.ac: Set AM_CONDITIONAL XEMACS.
+	* Makefile.am: Emit install-package and package target only if
+	EMACS_FLAVOR = xemacs.
+
 2004-05-05  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.15 released.
 # This XEmacs package contains the riece IRC client package
 
 VERSION = 1.15
-AUTHOR_VERSION = 0.2.2
+AUTHOR_VERSION = 1.0.3
 MAINTAINER = Daiki Ueno <ueno@unixuser.org>
 PACKAGE = riece
 PKG_TYPE = regular
 
 ELCS = lisp/riece-compat.elc lisp/riece-xemacs.elc lisp/riece-globals.elc \
 	lisp/riece-options.elc lisp/riece-version.elc lisp/riece-coding.elc \
-	lisp/riece-complete.elc lisp/riece-mode.elc lisp/riece-identity.elc \
-	lisp/riece-channel.elc lisp/riece-user.elc lisp/riece-misc.elc \
-	lisp/riece-signal.elc lisp/riece-layout.elc lisp/riece-display.elc \
-	lisp/riece-server.elc lisp/riece-naming.elc lisp/riece-message.elc \
-	lisp/riece-filter.elc lisp/riece-handle.elc lisp/riece-000.elc \
-	lisp/riece-200.elc lisp/riece-300.elc lisp/riece-400.elc \
-	lisp/riece-500.elc lisp/riece-commands.elc lisp/riece.elc \
-	lisp/riece-ctcp.elc lisp/riece-highlight.elc lisp/riece-log.elc \
-	lisp/riece-mini.elc lisp/riece-rdcc.elc lisp/riece-url.elc \
-	lisp/riece-unread.elc lisp/riece-doctor.elc lisp/riece-alias.elc \
+	lisp/riece-complete.elc lisp/riece-addon.elc lisp/riece-mode.elc \
+	lisp/riece-identity.elc lisp/riece-channel.elc lisp/riece-user.elc \
+	lisp/riece-misc.elc lisp/riece-signal.elc lisp/riece-layout.elc \
+	lisp/riece-display.elc lisp/riece-server.elc lisp/riece-naming.elc \
+	lisp/riece-message.elc lisp/riece-filter.elc lisp/riece-handle.elc \
+	lisp/riece-000.elc lisp/riece-200.elc lisp/riece-300.elc \
+	lisp/riece-400.elc lisp/riece-500.elc lisp/riece-commands.elc \
+	lisp/riece-irc.elc lisp/riece.elc lisp/riece-ctcp.elc \
+	lisp/riece-highlight.elc lisp/riece-log.elc lisp/riece-mini.elc \
+	lisp/riece-rdcc.elc lisp/riece-url.elc lisp/riece-unread.elc \
+	lisp/riece-doctor.elc lisp/riece-alias.elc lisp/riece-foolproof.elc \
 	lisp/riece-guess.elc lisp/riece-history.elc lisp/riece-button.elc \
 	lisp/riece-keyword.elc lisp/riece-menu.elc lisp/riece-icon.elc \
 	lisp/riece-async.elc lisp/riece-lsdb.elc lisp/riece-xface.elc \
-	lisp/riece-ctlseq.elc
+	lisp/riece-ctlseq.elc lisp/riece-ignore.elc lisp/riece-hangman.elc \
+	lisp/riece-biff.elc lisp/riece-kakasi.elc
 
 EXTRA_SOURCES = lisp/riece-emacs.el lisp/riece-skk-kakutei.el
 AUTOLOAD_PATH = lisp
 EXTRA_DIST = INSTALL-CVS
 AUTOMAKE_OPTIONS = no-dependencies
 
+if XEMACS
 install-package package:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@) \
 	done
+endif
 AC_INIT(configure.ac)
 AC_PREREQ(2.50)
-AM_INIT_AUTOMAKE(riece, 0.2.2)
+AM_INIT_AUTOMAKE(riece, 1.0.3)
 
 AC_ISC_POSIX
 AC_PROG_INSTALL
 AC_PATH_LISPDIR
 AC_PATH_PACKAGEDIR
 
+AM_CONDITIONAL(XEMACS, test ${EMACS_FLAVOR} = xemacs)
+
 AC_OUTPUT(Makefile \
 lisp/Makefile
 doc/Makefile)

doc/riece-ja.texi

 @setfilename riece-ja.info
 @settitle Riece -- An IRC client for Emacsen --
 @c %**end of header
-@set VERSION 0.2.2
+@set VERSION 1.0.3
 @c @documentlanguage ja
 
 @dircategory GNU Emacs Lisp
 * Getting started::             
 * Basic usage::                 $B4pK\E*$J$D$+$$$+$?(B
 * Advanced usage::              $B?J$s$@$D$+$$$+$?(B
+* Tips::                        $BJXMx$J@_Dj(B
 * Development::                 $B3+H/<T8~$1>pJs(B
 * Index::                       
 * Function Index::              
 @node Startup File,  , Installation, Getting started
 @section Startup file
 
-$B=i$a$F;H$&>l9g$K$O!"FC$K2?$b@_Dj$9$kI,MW$O$"$j$^$;$s!#(B
-$B$3$N>O$OFI$_Ht$P$7$F$/$@$5$$!#(B
+$B$3$N>O$G$O!"@_Dj%U%!%$%k$K$D$$$F2r@b$7$^$9!#(B
+
+$B;n$7$K;H$C$F$_$k>l9g$K$O!"FC$K2?$b@_Dj$9$kI,MW$O$"$j$^$;$s!#(B
+$B$3$N>O$OFI$_Ht$P$7$F$b9=$$$^$;$s!#(B
 
 Riece $B$O@_Dj%U%!%$%k$rJQ?t(B @code{riece-directory} $B$G;X<($5$l$k%G%#%l%/%H(B
 $B%j(B ($B%G%U%)%k%H$O(B @file{~/.riece/}) $B$+$iFI$_9~$_$^$9!#$3$N%G%#%l%/%H%j$K(B
-$B$O0J2<$N(B 2 $B$D$N@_Dj%U%!%$%k$,3JG<$5$l$^$9!#(B
+$B$O0J2<$N(B 2 $B$D$N@_Dj%U%!%$%k$,G[CV$5$l$^$9!#(B
 
 @table @code
 @item riece-saved-variables-file
 @vindex riece-saved-variables-file
-$BA02s$N%;%C%7%g%s$N>pJs$r3JG<$7$^$9(B($B%G%U%)%k%H$O(B @file{~/.riece/save})
+$BA02s$N%;%C%7%g%s$G99?7$5$l$?@_Dj$,<+F0E*$KJ]B8$5$l$^$9(B($B%G%U%)%k%H$O(B @file{~/.riece/save})
 @item riece-variables-file
 @vindex riece-variables-file
 $B%f!<%6$K8GM-$N@_Dj$r5-=R$7$^$9(B($B%G%U%)%k%H$O(B @file{~/.riece/init})
 @end table
 
 $B5/F0;~$K$O!":G=i$K(B @code{riece-saved-variables-file} $B$r!"<!$K(B 
-@code{riece-variables-file} $B$rFI$_9~$_$^$9!#%U%!%$%k$,B8:_$7$J$1$l$P2?$b(B
-$B$7$^$;$s!#(B
+@code{riece-variables-file} $B$rFI$_9~$_$^$9!#$D$^$j!"(B
+@file{~/.riece/save} $B$K<+F0E*$KJ]B8$5$l$?FbMF$O!"(B@file{~/.riece/init} $B$K(B
+$B5-=R$5$l$?FbMF$G>e=q$-$5$l$^$9!#(B
 
 @node Basic usage, Advanced usage, Getting started, Top
 @chapter Basic usage
 @item C-c >
 @findex riece-command-next-channel
 $B<!$N%A%c%s%M%k$K0\$j$^$9(B(@code{riece-command-next-channel})
+@item C-c ^
+@findex riece-command-list-addons
+$B%"%I%*%s$N0lMw$rI=<($7$^$9(B(@code{riece-command-list-addons})
 @item C-c $B?t;z(B
 @findex riece-command-switch-to-channel-by-number
 @var{n}$BHVL\$N%A%c%s%M%k$K0\F0$7$^$9(B(@code{riece-command-switch-to-channel-by-number})
 @item C-c C-c $B?t;z(B
 @findex riece-command-switch-to-channel-by-number
 @var{n} + 10$BHVL\$N%A%c%s%M%k$K0\F0$7$^$9(B(@code{riece-command-switch-to-channel-by-number})
+@item C-c Home
+@findex riece-command-beginning-of-buffer
+$B%A%c%s%M%k%P%C%U%!!"$^$?$O%@%$%"%m%0%P%C%U%!$N%S%e!<$r>eC<$^$G0\F0$7$^$9(B(@code{riece-command-beginning-of-buffer})
 @item C-c $
 @findex riece-command-end-of-buffer
 $B%A%c%s%M%k%P%C%U%!!"$^$?$O%@%$%"%m%0%P%C%U%!$N%S%e!<$r2<C<$^$G0\F0$7$^$9(B(@code{riece-command-end-of-buffer})
 $BFCDj$N%5!<%P$KBP$7$F!"B3$/%3%^%s%I$rH/9T$7$^$9(B(@code{riece-command-universal-server-name-argument})
 @end table
 
-@node Advanced usage, Development, Basic usage, Top
+@node Advanced usage, Tips, Basic usage, Top
 @chapter Advanced usage
 
 $B$3$N>O$G$O!"$b$C$H?J$s$@;H$$J}$r2r@b$7$^$9!#(B
 @menu
 * Server settings::             $B%5!<%P$N>\:Y@_Dj(B
 * Add-ons::                     $B%"%I%*%s$H$O(B
-* Writing add-ons::             $B@lMQ$N%"%I%*%s$r=q$/$K$O(B
-* Handler hooks::               $B%O%s%I%i$N?6Iq$$$NJQ99(B
 @end menu
 
 @node Server settings, Add-ons, Advanced usage, Advanced usage
 $B%3!<%G%#%s%0%7%9%F%`(B ($B%G%U%)%k%H$O(B @code{riece-default-coding-system} $B$NCM(B)
 @end table
 
-@node Add-ons, Writing add-ons, Server settings, Advanced usage
+@node Add-ons,  , Server settings, Advanced usage
 @section Add-ons
 
 Riece $B$G$O!"%f!<%6$,?7$?$J5!G=$rDI2C$7!"<+M3$K<h$j30$7$G$-$k$h$&!"%"%I%*(B
 $B%A%c%s%M%kL>$d%K%C%/%M!<%`$NJLL>$rDj5A(B
 @item riece-skk-kakutei
 SKK $B;HMQ;~$KJQ49%b!<%I$N0u$rH/8@$+$i<h$j=|$/(B
+@item riece-foolproof
+$B%A%c%s%M%k%_%9$rKI$0(B
 @item riece-guess
 $B?'!9$JJ}K!$G0\F0@h$N%A%c%s%M%k$r?dB,(B
 @item riece-history
 $B%f!<%6%j%9%H%P%C%U%!$K%f!<%6$N(B X-Face $B$rI=<((B
 @item riece-ctlseq
 $B%3%s%H%m!<%k%7!<%1%s%9(B (^B $B$J$I(B) $B$K$h$k6/D4I=<((B
+@item riece-ignore
+$B;XDj$7$?%f!<%6$NH/8@$rL5;k(B
+@item reice-hangman
+$B%A%c%s%M%kFb$G(B hangman(6) $B$GM7$V(B
+@item riece-biff
+$BB>$N%P%C%U%!$K$$$k;~$KH/8@$,$"$k$H%b!<%I%i%$%s$K0u(B ("[R]") $B$rI=<((B
+@item riece-kakasi
+$BF|K\8l$NDL$i$J$$C<Kv$G!"F|K\8l$r%m!<%^;z$GI=<((B
 @end table
 
 $B$3$l$i$N$&$A!"(B@samp{riece-highlight} $B$H(B @samp{riece-ctcp}$B!"(B
 @samp{riece-url}$B!"(B @samp{riece-unread}$B!"(B @samp{riece-guess}$B!"(B
-@samp{riece-history}$B!"(B @samp{riece-button}$B!"(B@samp{riece-menu} $B$O%G%U%)%k(B
-$B%H$GAH$_9~$^$l$F$$$^$9!#(B
+@samp{riece-history}$B!"(B @samp{riece-button}$B!"(B@samp{riece-menu}$B!"(B
+@samp{riece-ignore} $B$O%G%U%)%k%H$GAH$_9~$^$l$F$$$^$9!#(B
 
 $B%"%I%*%s$rAH$_9~$`$K$O(B @code{riece-addons} $B$r@_Dj$7$^$9!#$?$H$($P(B 
 @samp{riece-alias} $B$rAH$_9~$`>l9g$K$O!"(B@file{~/.riece/init.el} $B$K0J2<$N$h(B
 (add-to-list 'riece-addons 'riece-alias)
 @end example
 
-@node Writing add-ons, Handler hooks, Add-ons, Advanced usage
-@section Writing add-ons
+@node Tips, Development, Advanced usage, Top
+@comment  node-name,  next,  previous,  up
+@chapter Tips
 
-$B%"%I%*%s$N>r7o$rK~$?$9%b%8%e!<%k$O0J2<$N4X?t$rDs6!$7$^$9!#(B
+$B$3$N>O$G$O!"$h$/J9$+$l$k<ALd$KBP$9$kEz$($d!"JXMx$J@_Dj$r>R2p$7$^$9!#(B
 
-@table @samp
-@item <$B%b%8%e!<%kL>(B>-requires
-$B0MB8$9$kB>$N%"%I%*%s(B($B%7%s%\%k$N%j%9%H(B)$B$rJV$7$^$9(B($B%*%W%7%g%s(B)
-@item <$B%b%8%e!<%kL>(B>-insinuate
-$B=i4|2==hM}$r9T$$$^$9(B
+@section $B%A%c%s%M%kL>!V(B#$B$[$2(B:*.jp$B!W$r!V(B%$B$[$2!W$HN,5-$7$?$$(B
+
+$B0J2<$N9T$r(B @file{~/.riece/init.el} $B$KDI2C$7$^$9!'(B
+
+@example
+(add-to-list 'riece-addons 'riece-alias)
+@end example
+
+@section $BD>A0$K$$$?%A%c%s%M%k$KLa$j$?$$(B
+
+$B0J2<$N9T$r(B @file{~/.riece/init.el} $B$KDI2C$9$k$3$H$G!"(B
+@kbd{C-c g} $B$GMzNr$rC)$j$D$D0\F0$G$-$^$9!#(B
+
+@example
+(add-hook 'riece-guess-channel-try-functions
+          'riece-guess-channel-from-history)
+@end example
+
+@section $BH/8@$,$"$k$H%P%C%U%!$,%9%/%m!<%k$9$k$N$r;_$a$?$$(B
+
+@kbd{C-c C-t f} $B$G$9!#(B(irchat $B$G$O(B @kbd{C-c C-f}) "t"oggle "f"reeze $B$H3P(B
+$B$($^$7$g$&!#(B
+
+@section $BGI<j$JAu>~$rM^@)$7$?$$(B
+
+@code{riece-addons} $B$+$i!"?'IU$1(B (@samp{riece-highlight})$B!"%\%?%s(B 
+(@samp{riece-button})$B!"%"%$%3%s(B (@samp{riece-icon}) $B$r=|$-$^$9!#(B
+
+$B$?$H$($P?'IU$1$r$d$a$?$$$N$G$"$l$P!"0J2<$N9T$r(B @file{~/.riece/init.el} 
+$B$KDI2C$7$^$9!'(B
+
+@example
+(setq riece-addons (delq 'riece-highlight riece-addons))
+@end example
+
+@section $B%-!<%o!<%I$KH?1~$7$F2;$rLD$i$7$?$$(B
+
+XEmacs $B$G$O!"0J2<$N@_Dj$r(B @file{~/.riece/init.el} $B$K2C$($k$3$H$G!"(B"$B$[$2(B" 
+$B$d(B "$B$U$,(B" $B$KH?1~$7$F8z2L2;(B($B$3$NNc$G$O!"%+%C%3!<$NLD$-@<(B)$B$rLD$i$9$3$H$,$G(B
+$B$-$^$9!#(B
+
+@example
+(load-default-sounds)
+(setq riece-keywords '("$B$[$2(B" "$B$U$,(B"))
+(add-hook 'riece-keyword-notify-functions
+          (lambda (keyword message) (play-sound 'cuckoo)))
+@end example
+
+Emacs $B$N>l9g$O(B,$B0J2<$N@_Dj$r(B @file{~/.riece/init.el} $B$K2C$($k$3$H$G(B,
+"$B$[$2(B" $B$d(B "$B$U$,(B" $B$KH?1~$7$F2;$rLD$i$9$3$H$,$G$-$^$9!#(B
+
+@example
+(defun cuckoo ()
+  "play cuckoo.au"
+  (call-process "play" nil 0 t
+                ".../cuckoo.au"))
+  (setq riece-keywords '("$B$[$2(B" "$B$U$,(B"))
+  (add-hook 'riece-keyword-notify-functions
+            (lambda (keyword message) (cuckoo)))
+@end example
+
+$B8z2L2;$G$O$J$/%7%s%W%k$K%S!<%W2;$rLD$i$7$?$$>l9g$O!"0J2<$N@_Dj$r(B 
+@file{~/.riece/init.el} $B$K2C$($^$9!#(B
+
+@example
+(setq riece-keywords '("$B$[$2(B" "$B$U$,(B"))
+(add-hook 'riece-keyword-notify-functions
+          (lambda (keyword message) (ding)))
+@end example
+
+@section SKK $B$r;H$C$F$$$F!"JQ49%b!<%I$N0u(B ($B"&(B) $B$rAw?.$7$?$/$J$$(B
+
+$B0J2<$N9T$r(B @file{~/.riece/init.el} $B$KDI2C$7$^$9!'(B
+
+@example
+(add-to-list 'riece-addons 'riece-skk-kakutei)
+@end example
+
+@section $B%A%c%s%M%k$NHV9f$r8GDj$7$?$$(B
+
+$B0J2<$N9T$r(B @file{~/.riece/init.el} $B$KDI2C$7$^$9!'(B
+
+@example
+(setq riece-default-channel-binding
+     '("#Liece" "#emacsen" nil "#debianjp"))
+@end example
+
+1: #Liece, 2: #emacsen, 4: #debianjp $B$N$h$&$K3dEv$F$i$l$^$9!#(Bnil $B$O%G%U%)(B
+$B%k%H$G$O<+F03dEv$F$NBP>]$K$J$i$J$$$3$H0UL#$7!"?7$?$J%A%c%s%M%k$K;22C$7$?(B
+$B>l9g!"$=$N%A%c%s%M%k$,(B 3 $BHVL\$N%A%c%s%M%k$H$7$F07$o$l$^$9!#(B
+
+@section $B5/F0;~$K%Q%9%o!<%I$D$-$N%A%c%s%M%k$K;22C$7$?$$(B
+
+$B0J2<$N9T$r(B @file{~/.riece/init.el} $B$KDI2C$7$^$9!'(B
+
+@example
+(setq riece-startup-channel-list
+     '(("#secret" "password") "#Liece"))
+@end example
+
+$BJ#?t$N%5!<%P>e$N%A%c%s%M%k$K;22C$9$k$K$O!"(B
+@code{riece-startup-server-list} $B$bJ;$;$F@_Dj$9$kI,MW$,$"$j$^$9!#(B
+
+$BNc$H$7$F!"(B@code{riece-server} $B$H(B @code{riece-server-alist} $B$r0J2<$N$h$&(B
+$B$K@_Dj$7$?$H$7$^$9!#(B
+
+@example
+(setq riece-server "ircnet"
+      riece-server-alist '(("ircnet" :host "irc6.nara.wide.ad.jp")
+                           ("freenode" :host "irc.ipv6.freenode.net")))
+@end example
+
+$B$3$N>l9g!"%G%U%)%k%H$G$O(B "ircnet" $B$@$1$K@\B3$7$^$9$,!"(B
+@code{riece-startup-server-list} $B$r0J2<$N$h$&$K@_Dj$9$k$3$H$G!"(B
+"freenode" $B$K$b@\B3$9$k$h$&$K$J$j$^$9!#(B
+
+@example
+(setq riece-startup-server-list '("freenode"))
+@end example
+
+@section HTTP $B%W%m%-%71[$7$K(B IRC $B%5!<%P$K@\B3$7$?$$(B
+relay.el $B$H(B connect.c $B$r;H$&$H!"(B
+HTTP $B%W%m%-%7$r2p$7$F(B IRC $B%5!<%P$K@\B3$9$k$3$H$,$G$-$^$9!#(B
+
+@table @asis
+@item relay.el
+@uref{http://www.imasy.or.jp/~gotoh/lisp/relay.el}
+
+@item connect.c
+@uref{http://www.imasy.or.jp/~gotoh/ssh/connect.html}
 @end table
 
-Riece $BB&$G$O0J2<$N=hM}$r9T$$$^$9!#(B
+$B$?$H$($P!"(B"proxy.example.com:8080" $B7PM3$G(B irc.tokyo.wide.ad.jp $B$K@\B3$9(B
+$B$k>l9g$K$O!"0J2<$N9T$r(B @file{~/.riece/init.el} $B$KDI2C$7$^$9!'(B
 
-@enumerate
-@item
-$BJQ?t(B @code{riece-addons} $B$KNs5s$5$l$?%b%8%e!<%k$rFI$_9~$`(B
+@example
+(require 'relay)
+(setq relay-command-alist (cons '("^irc\.tokyo\.wide\.ad\.jp$"
+                                  "connect" "-H" "proxy.example.com:8080"
+                                  host service)
+                                relay-command-alist)
+      riece-server-alist (cons '("proxy-tokyo" :host "irc.tokyo.wide.ad.jp"
+                                 :function relay-open-network-stream)
+                               riece-server-alist))
+@end example
 
-@item
-$B$=$l$>$l$N%b%8%e!<%k$KBP$7!"(B@samp{<$B%b%8%e!<%kL>(B>-requires} $B$,MQ0U$5$l$F$$$l$P8F$S=P$7$F0MB8%0%i%U$r:n$k(B
+@section IRC $B%m%0$r%U%!%$%k$KJ]B8$7$?$$(B
 
-@item
-$B0MB8%0%i%U$KBP$7$F%H%]%m%8%+%k%=!<%H(B (cf. tsort(1)) $B$r9T$&(B
+$B0J2<$N9T$r(B @file{~/.riece/init.el} $B$KDI2C$7$^$9!'(B
 
-@item
-$BF@$?0MB8=g=x$K=>$C$F(B @samp{<$B%b%8%e!<%kL>(B>-insinuate} $B8F$S=P$9(B
-@end enumerate
+@example
+(add-to-list 'riece-addons 'riece-log)
+@end example
 
-$B:n@.$7$?%"%I%*%s$O!"(B@code{load-path} $B$NDL$C$?%G%#%l%/%H%j!"$^$?$O(B 
-@code{riece-addon-directory} ($B%G%U%)%k%H$G$O(B @file{~/.riece/addons/}) $B$K(B
-$BCV$/$3$H$GAH$_9~$_2DG=$J>uBV$K$J$j$^$9!#(B
-@vindex riece-addon-directory
+$B%m%0%U%!%$%k$O%G%U%)%k%H$G$O(B @file{~/.riece/log} $B$N2<$K%5!<%PL>!"%A%c%s(B
+$B%M%kL>$N%G%#%l%/%j$,:n@.$5$l!"$=$NCf$KF|$K$AKh$KJ]B8$5$l$^$9!#$?$@$7%G%U%)(B
+$B%k%H$N%5!<%P$N>l9g$O!"%5!<%PL>$N%G%#%l%/%H%j$O>JN,$5$l$^$9!#(B
 
-@node Handler hooks,  , Writing add-ons, Advanced usage
-@section Handler hooks
+US-ASCII $B0J30$N%G%#%l%/%H%jL>$,J8;z2=$1$9$k$H$$$&?M$O!"(B
+@code{file-name-coding-system} $B$NCM$rE,@Z$K@_Dj$9$k$+!"$"$k$$$O(B 
+@code{riece-log-directory-map} $B$G%A%c%s%M%kL>$HJ]B8@h$N%G%#%l%/%H%jL>$H(B
+$B$NBP1~%j%9%H$r0J2<$NNc$N$h$&$K!"(BUS-ASCII $B$N$_$r;HMQ$7$?%G%#%l%/%H%jL>$K(B
+$B$J$k$h$&$K@_Dj$9$k;v$G2sHr=PMh$^$9!'(B
 
-Riece $B$K$O!"%O%s%I%i%U%C%/$H8F$P$l$kFC<l$J%U%C%/$,$"$j$^$9!#$3$l$i$O(B IRC 
-$B$N%a%C%;!<%8$r<u$1<h$C$?A08e$G<B9T$5$l$k%U%C%/$G$9!#(B
+@example
+(setq riece-log-directory-map '(("#$B$j!<$9(B" . "riece")))
+@end example
 
-$B@bL@$N$?$a$K(B @samp{message} $B$r(B IRC $B$N%a%C%;!<%8L>(B(PRIVMSG $B$J$I(B)$B$rA4$F>.(B
-$BJ8;z$K$7$?$b$N$H$7$^$9!#(B
-
-@table @code
-@item riece-<message>-hook
-@samp{message} $B$,FO$$$?$H$-$K:G=i$K8F$P$l$k%U%C%/(B
-@item riece-after-<message>-hook
-@samp{message} $B$N=hM}$,=*$o$C$?8e$K8F$P$l$k%U%C%/(B
-@end table
-
-$B$3$3$G(B @code{riece-<message>-hook} $B$NJV$jCM$K$O0UL#$,$"$j!"Hs(B nil $B$rJV$9(B
-$B$b$N$,$"$l$P!"$=$N8e$N=hM}$r$*$3$J$$$^$;$s!#$^$?!"$=$N>l9g$K$O(B 
-@code{riece-after-<message>-hook} $B$b8F$S=P$5$l$^$;$s!#(B
-
-$B%U%C%/$N0z?t$O(B RFC2812 $B$N(B @samp{prefix} $B$H(B @samp{Parameters} $B$KAjEv$9$k(B 
-2 $B$D$N0z?t$,EO$j$^$9!#(B
-
-@node Development, Index, Advanced usage, Top
+@node Development, Index, Tips, Top
 @chapter Development
 
 $B3+H/<TJg=8Cf!#(B
 
 @menu
-* CVS::                         
-* Debugging::                   
-* Modules::                     
+* CVS::                         $B3+H/Cf$N%=!<%9$N<hF@(B
+* Debugging::                   $B%G%P%C%0$N$?$a$N@_Dj(B
+* Modules::                     $B9=@.%b%8%e!<%k$N@bL@(B
 * Namespace management::        
 * Signals::                     
+* Writing add-ons::             $B%"%I%*%s$N=q$-$+$?(B
+* Handler hooks::               
 @end menu
 
 @node CVS, Debugging, Development, Development
 
 $B4pK\E*$K0MB84X78$N>e0L$K$"$k$b$N$+$i!'(B
 
-@subsection Core modules
 @table @samp
 @item riece-globals
 $BBg0hJQ?t$NDj5A(B 
 $B%f!<%6%*%W%7%g%s$NDj5A(B 
 @item riece-version
 $B%P!<%8%g%s$NDj5A(B 
-@item riece-inlines
-$B;(B?$J%$%s%i%$%s4X?t$NDj5A(B 
 @item riece-coding
 $B%3!<%G%#%s%0%7%9%F%`4XO"$N4X?t$NDj5A(B 
 @item riece-complete
 $B%_%K%P%C%U%!$G$NJd40$r=u$1$k4X?t$NDj5A(B 
+@item riece-addon
+$B%"%I%*%s4IM}(B
 
+@item riece-mode
+channel/user $B$N%b!<%I4IM}(B
 @item riece-identity
 channel/user object $B$NBg0hI=5-$rA`:n$9$k4X?t$NDj5A(B 
 @item riece-channel
 @item riece-user
 user object $B4XO"$NDj5A(B 
 
+@item riece-misc
+$B;(B?$J4X?t$NDj5A(B
 @item riece-signal
-$B%7%0%J%k(B(@xref{Signals})$B4IM}(B
-@item riece-misc
-$B;(B?$J4X?t$NDj5A(B($B%$%s%i%$%s4X?t$r=|$/(B) 
+$B%7%0%J%k(B(@pxref{Signals})$B4IM}(B
+
+@item riece-layout
+$B%&%#%s%I%&%l%$%"%&%H4IM}(B
 @item riece-display
 $BI=<(MQ%P%C%U%!$N4IM}(B 
 @item riece-server
 @item riece-filter
 $B%W%m%;%9%U%#%k%?$N%(%s%H%j%]%$%s%H(B 
 @item riece-handle
-$BDL>o$N%a%C%;!<%8$N%O%s%I%i!#(Briece-filter $B$N$_$+$i8F$P$l$k(B 
+$BDL>o$N%a%C%;!<%8$N%O%s%I%i!#(Briece-filter $B$+$i8F$P$l$k(B 
 @item riece-000
-000$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$N$_$+$i8F$P$l$k(B 
+000$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$+$i8F$P$l$k(B 
 @item riece-200
-200$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$N$_$+$i8F$P$l$k(B 
+200$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$+$i8F$P$l$k(B 
 @item riece-300
-300$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$N$_$+$i8F$P$l$k(B 
+300$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$+$i8F$P$l$k(B 
 @item riece-400
-400$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$N$_$+$i8F$P$l$k(B 
+400$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$+$i8F$P$l$k(B 
 @item riece-500
-500$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$N$_$+$i8F$P$l$k(B 
+500$BHVBf$N(B numeric reply $B$N%O%s%I%i!#(Briece-filter $B$+$i8F$P$l$k(B 
 
 @item riece-commands
 $B%3%^%s%I$NDj5A(B 
+@item riece-irc
+IRC $B%W%m%H%3%k%$%s%?!<%U%'!<%9(B
 @item riece
 $B%(%s%H%j%]%$%s%H!#3F%P%C%U%!$N%b!<%IDj5A$J$I(B 
 @end table
 
-@subsection Add-ons
-@table @samp
-@item riece-highlight
-$B%P%C%U%!$N?'IU$1(B
-@item riece-ctcp
-CTCP (Client To Client Protocol)
-@item riece-url
-$B2qOC$K8=$l$?(B URL $B$N<}=8(B
-@item riece-unread
-$BH/8@$N$"$C$?%A%c%s%M%k$K(B@samp{!}$B%^!<%/$r$D$1$k(B
-@item riece-rdcc
-DCC (Direct Client to Client protocol) $B$K$h$k%U%!%$%kE>Aw(B (Ruby $B$K$h$k<BAu(B)
-@item riece-ndcc
-DCC (Direct Client to Client protocol) $B$K$h$k%U%!%$%kE>Aw(B (Emacs 21.3 $B$N(B 
-@code{make-network-connection} $B$K$h$k<BAu(B)
-@end table
-
 @node Namespace management, Signals, Modules, Development
 @section Namespace management
 
 $B%f!<%6$NL>A0$,JQ99$5$l$?$3$H$rI=L@$7$^$9(B 
 @end defun
 
-@node Signals,  , Namespace management, Development
+@node Signals, Writing add-ons, Namespace management, Development
 @section Signals
 
 $B2hLL$N:FIA2h$r8zN(NI$/9T$&$?$a$K!"%$%Y%s%H$HIA2hBP>]$N%*%V%8%'%/%H(B($B%P%C(B
 ($B0z?t$O%P%C%U%!(B)
 @end table
 
+@node Writing add-ons, Handler hooks, Signals, Development
+@section Writing add-ons
+
+$B%"%I%*%s$N>r7o$rK~$?$9%b%8%e!<%k$O0J2<$N4X?t$rDs6!$7$^$9!#(B
+
+@table @samp
+@item <$B%b%8%e!<%kL>(B>-requires
+$B0MB8$9$kB>$N%"%I%*%s(B($B%7%s%\%k$N%j%9%H(B)$B$rJV$7$^$9(B($B%*%W%7%g%s(B)
+@item <$B%b%8%e!<%kL>(B>-insinuate
+$B=i4|2==hM}$r9T$$$^$9(B
+@end table
+
+$B$^$?!"%"%I%*%s$N@bL@$r!"JQ?t(B @samp{<$B%b%8%e!<%kL>(B>-description} $B$K@_Dj$9(B
+$B$k$3$H$b$G$-$^$9!#$3$NJ8;zNs$O(B @kbd{M-x riece-command-list-addons} $B$K$h(B
+$B$k%"%I%*%s$N0lMwI=<($K;H$o$l$^$9!#(B
+
+$BM-8z2=!&L58z2=$KBP1~$7$?%"%I%*%s$O!"JQ?t(B @samp{<$B%b%8%e!<%kL>(B>-enabled} 
+$B$K8=:_$N>uBV$rJ];}$7$^$9!#CM$,(B @samp{nil} $B$G$"$l$PL58z!"(B@samp{t} $B$G$"$l(B
+$B$PM-8z$G$9!#2C$($F!"0J2<$N4X?t$rDs6!$7$^$9!#(B
+
+@table @samp
+@item <$B%b%8%e!<%kL>(B>-enable
+$B%"%I%*%s$rM-8z$K$7$^$9(B
+@item <$B%b%8%e!<%kL>(B>-disable
+$B%"%I%*%s$rL58z$K$7$^$9(B
+@end table
+
+Riece $B$O5/F0;~$K0J2<$N=hM}$r9T$$$^$9!#(B
+
+@enumerate
+@item
+$BJQ?t(B @code{riece-addons} $B$KNs5s$5$l$?%b%8%e!<%k$rFI$_9~$`(B
+
+@item
+$B$=$l$>$l$N%b%8%e!<%k$KBP$7!"(B@samp{<$B%b%8%e!<%kL>(B>-requires} $B$,MQ0U$5$l$F$$$l$P8F$S=P$7$F0MB8%0%i%U$r:n$k(B
+
+@item
+$B0MB8%0%i%U$KBP$7$F%H%]%m%8%+%k%=!<%H(B (cf. tsort(1)) $B$r9T$&(B
+
+@item
+$BF@$i$l$?0MB8=g=x$K=>$C$F(B @samp{<$B%b%8%e!<%kL>(B>-insinuate} $B8F$S=P$9(B
+
+@item
+$B$b$7!"%"%I%*%s$,M-8z2=!&L58z2=$KBP1~$7$F$*$j!"L@<(E*$KL58z2=$5$l$F$$$J$1$l$P!"(B
+@samp{<$B%b%8%e!<%kL>(B>-enable}$B$r8F$S=P$9!#(B
+@end enumerate
+
+$B:n@.$7$?%"%I%*%s$O!"(B@code{load-path} $B$NDL$C$?%G%#%l%/%H%j!"$^$?$O(B 
+@code{riece-addon-directory} ($B%G%U%)%k%H$G$O(B @file{~/.riece/addons/}) $B$K(B
+$BCV$/$3$H$GAH$_9~$_2DG=$J>uBV$K$J$j$^$9!#(B
+@vindex riece-addon-directory
+
+@node Handler hooks,  , Writing add-ons, Development
+@section Handler hooks
+
+Riece $B$K$O!"%O%s%I%i%U%C%/$H8F$P$l$kFC<l$J%U%C%/$,$"$j$^$9!#$3$l$i$O(B IRC 
+$B$N%a%C%;!<%8$r<u$1<h$C$?A08e$G<B9T$5$l$k%U%C%/$G$9!#(B
+
+$B@bL@$N$?$a$K(B @samp{message} $B$r(B IRC $B$N%a%C%;!<%8L>(B(PRIVMSG $B$J$I(B)$B$rA4$F>.(B
+$BJ8;z$K$7$?$b$N$H$7$^$9!#(B
+
+@table @code
+@item riece-<message>-hook
+@samp{message} $B$,FO$$$?$H$-$K:G=i$K8F$P$l$k%U%C%/(B
+@item riece-after-<message>-hook
+@samp{message} $B$N=hM}$,=*$o$C$?8e$K8F$P$l$k%U%C%/(B
+@end table
+
+$B$3$3$G(B @code{riece-<message>-hook} $B$NJV$jCM$K$O0UL#$,$"$j!"Hs(B nil $B$rJV$9(B
+$B$b$N$,$"$l$P!"$=$N8e$N=hM}$r$*$3$J$$$^$;$s!#$^$?!"$=$N>l9g$K$O(B 
+@code{riece-after-<message>-hook} $B$b8F$S=P$5$l$^$;$s!#(B
+
+$B%U%C%/$N0z?t$O(B RFC2812 $B$N(B @samp{prefix} $B$H(B @samp{Parameters} $B$KAjEv$9$k(B 
+2 $B$D$N0z?t$,EO$j$^$9!#(B
+
 @node Index, Function Index, Development, Top
 @chapter Index
 @printindex cp
 		riece-version
 		riece-coding
 		riece-complete
+		riece-addon
 
 		riece-mode
 		;; riece-identity -+-> riece-channel
 		riece-500
 
 		riece-commands
+		riece-irc
 		riece
 
 		;; add-ons
 		riece-doctor
 		riece-alias
 		riece-skk-kakutei
+		riece-foolproof
 		riece-guess
 		riece-history
 		riece-button
 		riece-async
 		riece-lsdb
 		riece-xface
-		riece-ctlseq))))
+		riece-ctlseq
+		riece-ignore
+		riece-hangman
+		riece-biff
+		riece-kakasi))))
 
 (defun riece-compile-modules (modules)
   (let ((load-path (cons nil load-path)))
+2004-09-05  Daiki Ueno  <ueno@unixuser.org>
+
+	* Riece: Version 1.0.3 released.
+	* riece-version.el (riece-version-number): Bump up to 1.0.3.
+
+2004-09-01  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-naming.el (riece-naming-assert-channel-users): Remove
+	nonexistent users.
+	* riece-300.el (riece-353-users): New variable.
+	(riece-handle-353-message): Don't update user-list.
+	(riece-handle-366-message): Update user-list here.
+
+	* riece-channel.el (riece-channel-toggle-operator): Don't add ?o
+	if it already appears in user's mode.
+	(riece-channel-toggle-speaker): Don't add ?v if it already appears
+	in user's mode.
+
+2004-08-31  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece.el (riece-command-mode): Set truncate-lines to nil.
+	(riece-dialogue-mode): Ditto.
+	(riece-channel-list-mode): Make
+	truncate-partial-width-windows local to channel buffers and set it
+	to nil.
+	(riece-user-list-mode): Ditto.
+
+2004-08-31  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece.el (riece-dialogue-mode): Make
+	truncate-partial-width-windows local to channel buffers and set it
+	to nil.
+	(riece-command-mode): Ditto.
+
+	* riece-layout.el (riece-configure-windows): Don't affect
+	truncate-partial-width-windows.
+	(riece-configure-windows-top): Ditto.
+	* riece-options.el (riece-truncate-partial-width-windows):
+	Abolished unused user option.
+
+2004-08-30  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-options.el (riece-window-center-line): New user option.
+	* riece-misc.el (riece-insert): Check if the current point is not
+	visible in the window.
+
+2004-08-30  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-misc.el (riece-insert): Don't use 2nd argument WINDOW of
+	recenter since it is not supported by GNU Emacs.
+
+2004-08-30  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-misc.el (riece-insert): Use (recenter -1) to set window
+	point instead of doing so manually.
+
+2004-08-28  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-xemacs.el (riece-put-text-property-nonsticky): New function.
+	* riece-emacs.el (riece-put-text-property-nonsticky): New function.
+	* riece-identity.el (riece-format-identity): Use it instead of
+	put-text-property.
+
+2004-08-27  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-commands.el (riece-command-complete-user): Move point to
+	the end of the current word.
+
+2004-08-23  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-irc.el (riece-irc-open-server): Display error message if
+	connection-function fails.
+	* riece-server.el (riece-open-server): Ignore errors from
+	riece-*-open-server function.
+	* riece.el (riece): If no server process is available, exit
+	immediately.
+
+2004-08-19  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-handle.el (riece-handle-quit-message): Pass
+	riece-part-channel the identity object of the quitting user
+	instead of his name.
+
+2004-08-16  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-highlight.el (riece-highlight-server-match): Simplified.
+
+2004-08-16  Daiki Ueno  <ueno@unixuser.org>
+
+	* Riece: Version 1.0.2 released.
+	* riece-version.el (riece-version-number): Bump up to 1.0.2.
+
+2004-08-16  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-highlight.el (riece-highlight-server-match): New match
+	function for font-lock-keywords to highlight "(from XXX)" only if
+	'riece-server-name property is set.
+	(riece-dialogue-font-lock-keywords): Use it.
+
+2004-08-15  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-handle.el (riece-handle-nick-message): Remove nil from
+	channel buffers.
+	(riece-handle-quit-message): Ditto.
+	(riece-handle-kill-message): Ditto.
+
+	* riece-misc.el (riece-concat-server-name): Put 'riece-server-name
+	property on "(from XXX)".
+
+2004-07-29  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-menu.el: Do not support enable/disable addon since
+	easy-menu-remove is not working.
+
+2004-07-19  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-server.el (riece-open-server): Call protocol interface.
+	(riece-quit-server-process): Ditto.
+
+	* riece-options.el (riece-protocol): New user option.
+
+	* riece-server.el: Don't require 'riece-filter.
+
+	* riece-irc.el: New file split from riece-server.el.
+	* COMPILE (riece-modules): Add riece-irc.
+	* Makefile.am (EXTRA_DIST): Add riece-irc.el.
+
+2004-07-18  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece.el: Don't require 'riece-filter.
+	* riece-server.el: Require 'riece-filter.
+
+	* riece-500.el: Autoload riece-default-handle-numeric-reply from
+	"riece-handle".
+	* riece-400.el: Autoload riece-default-handle-numeric-reply from
+	"riece-handle".
+	* riece-300.el: Don't require 'riece-filter; autoload
+	riece-default-handle-numeric-reply from "riece-handle".
+	* riece-200.el: Autoload riece-default-handle-numeric-reply from
+	"riece-handle".
+	* riece-000.el: Don't require 'riece-filter; autoload
+	riece-default-handle-numeric-reply from "riece-handle".
+
+	* riece-filter.el (riece-filter): Simplified.
+
+	* riece-server.el (riece-server-keyword-map): Add :protocol.
+
+	* riece-handle.el (riece-300): Require 'riece-000, 'riece-200,
+	'riece-300, 'riece-400, and 'riece-500.
+	(riece-default-handle-numeric-reply): Moved from riece-filter.el.
+	* riece-filter.el (riece-handle-numeric-reply): Don't load
+	riece-{000,200,300,400,500}.el on demand.
+
+2004-07-10  Daiki Ueno  <ueno@unixuser.org>
+
+	* Riece: Version 1.0.1 released.
+	* riece-version.el (riece-version-number): Bump up to 1.0.1.
+
+2004-07-09  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-ignore.el (riece-startup-ignored-user-list): New user
+	option.
+	(riece-ignore-insinuate): Add identity objects from
+	riece-startup-ignored-user-list to riece-ignored-user-list.
+
+2004-07-07  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-commands.el (riece-command-enter-message-to-user): Signal
+	"No text to send" error if user attempt to call this command on
+	an empty line.
+
+2004-07-04  Yoichi NAKAYAMA  <yoichi@geiin.org>
+
+	* riece-commands.el (riece-command-complete-user): current-word
+	can return nil (follow the change in emacs-cvs).
+
+2004-07-01  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece.el (riece-exit): Clear signal-slots.
+	* riece-signal.el (riece-clear-signal-slots): New function.
+
+2004-06-28  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-misc.el (riece-split-parameters): Fixed parenthesis.
+
+2004-06-26  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-commands.el (riece-command-change-mode): Don't send ":".
+	[cf. <Liece:00191>]
+
+2004-06-18  TAKAHASHI Kaoru  <kaoru@kaisei.org>
+
+	* riece-display.el (riece-update-long-channel-indicator): Change
+	order to channel, mode, topic.
+
+	* riece-message.el (riece-message-make-open-bracket): Come in
+	first notice message.
+	(riece-message-make-close-bracket): Ditto.
+
+2004-06-16  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-commands.el (riece-command-beginning-of-buffer): New command.
+	* riece.el (riece-dialogue-mode-map): Bind beginning-of-buffer to Home.
+	(riece-command-map): Bind riece-command-beginning-of-buffer to Home.
+
+2004-06-15  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece.el (riece-dialogue-mode-map): Bind end-of-buffer to End.
+	(riece-command-map): Bind riece-command-end-of-buffer to End.
+
+2004-06-12  TAKAHASHI Kaoru  <kaoru@kaisei.org>
+
+	* riece-commands.el (riece-command-send-message): Run
+	riece-command-send-message-hook.
+
+	* riece-foolproof.el (riece-foolproof-dmacro-override): Removed.
+	(riece-foolproof-command-send-message-function): New function.
+	(riece-foolproof-insinuate): Use hook instead of advice.
+	(riece-foolproof-enable, riece-foolproof-disable): Simplified.
+
+2004-06-11  TAKAHASHI Kaoru  <kaoru@kaisei.org>
+
+	* riece-foolproof.el (riece-foolproof-dmacro-override): New
+	function.
+	(riece-foolproof-insinuate): Check keyboard macro.
+
+2004-06-10  TAKAHASHI Kaoru  <kaoru@kaisei.org>
+
+	* riece-foolproof.el: New add-on.
+	* COMPILE (riece-modules): Add riece-foolproof.
+	* Makefile.am (EXTRA_DIST): Add riece-foolproof.el.
+
+2004-06-10  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-commands.el (riece-command-change-mode): Don't send ":" to
+	query a channel mode.
+	* riece-mode.el (riece-parse-modes): Accept mode spec not
+	delimited with " " such as "-n+s".
+
+2004-06-10  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-layout.el (riece-set-window-points): Restore window-point
+	of the channel buffer from riece-channel-buffer-window-point.
+
+	* riece-display.el (riece-switch-to-channel): Set
+	riece-channel-buffer-window-point.
+
+	* riece.el (riece-channel-mode): Make
+	riece-channel-buffer-window-point buffer local.
+
+	* riece-globals.el (riece-channel-buffer-window-point): New variable.
+
+2004-06-06  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-rdcc.el (riece-command-dcc-send): Replace whitespace with
+	"_".
+	(riece-command-dcc-receive): Convert default filename with
+	convert-standard-filename.
+	(riece-handle-dcc-request): Handle filenames enclosed with "...".
+
+2004-06-04  TAKAHASHI Kaoru  <kaoru@kaisei.org>
+
+	* riece-hangman.el (riece-hangman-word): Check killed-buffer or
+	not.  Fix random number generation logic.
+
+2004-06-03  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-server.el (riece-open-server): When password input is
+	quitted, delete the current server process manually.
+	(riece-close-server-process): Always kill process buffer.
+	(riece-quit-server-process): If the connection is timed out,
+	delete the current server process manually.
+
+2004-06-02  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-unread.el: Use riece-facep to check existence of
+	'riece-modeline-unread-face.
+	* riece-history.el: Use riece-facep to check existence of
+	'riece-modeline-history-face.
+	* riece-highlight.el: Use riece-facep to check existence of
+	'riece-modeline-current-face.
+
+	* riece-xemacs.el (riece-facep): Define as an alias of 'find-face.
+	* riece-emacs.el (riece-facep): Define as an alias of 'facep.
+
+2004-06-01  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-button.el (riece-button-disable): On XEmacs, BUFFER arg of
+	widget-map-buttons is ignored.
+
+2004-06-01  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-unread.el (riece-modeline-unread-face): New face;
+	setup the properties are inherited from 'modeline.
+	* riece-history.el (riece-modeline-history-face): New face;
+	setup the properties are inherited from 'modeline.
+	* riece-highlight.el (riece-modeline-current-face): New face;
+	setup the properties are inherited from 'modeline.
+
+	* riece-server.el (riece-close-server-process): Reset
+	process-filter/process-sentinel.
+
+2004-05-31  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-hangman.el (riece-hangman-after-privmsg-hook): Display answer.
+	(riece-hangman-enable): Initialize random seed.
+
+2004-05-29  Daiki Ueno  <ueno@unixuser.org>
+
+	* Riece: Version 1.0.0 released.
+	* riece-version.el (riece-version-number): Bump up to 1.0.0.
+
+2004-05-29  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-commands.el (riece-command-finger): Complete user names
+	without server-name.
+	(riece-command-invite): Ditto.
+	(riece-command-change-mode): Ditto.
+	(riece-command-enter-message-to-user): Ditto.
+
+	* riece-identity.el (riece-completing-read-identity): Add extra
+	8th arg "no-server".
+
+2004-05-29  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-server.el: Move autoload setting for 'riece-exit before
+	riece-open-server.
+
+	* riece-message.el (riece-format-message): Use speaker's
+	server-name instead of the current server-name.
+
+	* riece-ignore.el: Autoload 'riece-dialogue-mode.
+
+	* riece-identity.el (riece-format-identity): Put
+	'riece-format-identity-prefix-only property.
+
+	* riece-icon.el: Require 'riece-globals and 'riece-signal.
+
+	* riece-history.el: Require 'riece-signal.
+
+	* riece-highlight.el: Require 'riece-misc.
+
+	* riece-alias.el: Require 'riece-signal.
+
+	* riece-addon.el: Require 'font-lock, 'riece-options,
+	'riece-compat, and 'riece-misc.
+
+2004-05-29  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-commands.el (riece-command-switch-to-channel): Change prompt.
+	(riece-command-switch-to-channel-by-number): Ditto.
+	(riece-command-change-layout): Ditto.
+	(riece-command-finger): Ditto.
+	(riece-command-topic): Ditto.
+	(riece-command-invite): Ditto.
+	(riece-command-kick): Ditto.
+	(riece-command-names): Ditto.
+	(riece-command-who): Ditto.
+	(riece-command-list): Ditto.
+	(riece-command-change-mode): Ditto.
+	(riece-command-set-operators): Ditto.
+	(riece-command-set-speakers): Ditto.
+	(riece-command-enter-message-to-user): Ditto.
+	(riece-command-join): Ditto.
+	(riece-command-part): Ditto.
+	(riece-command-open-server): Ditto.
+	(riece-command-close-server): Ditto.
+
+2004-05-28  OHASHI Akira  <bg66@koka-in.org>
+
+	* riece-biff.el (riece-biff-insinuate): Add riece-biff-disable to
+	riece-exit-hook.
+
+2004-05-28  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-message.el (riece-message-set-speaker): New function.
+	(riece-message-set-target): New function.
+	(riece-message-set-text): New function.
+	(riece-message-set-type): New function.
+	(riece-message-set-own-p): New function.
+
+	* riece-kakasi.el: New add-on.
+	* COMPILE (riece-modules): Add riece-kakasi.
+	* Makefile.am (EXTRA_DIST): Add riece-kakasi.el.
+
+2004-05-27  OHASHI Akira  <bg66@koka-in.org>
+
+	* riece-biff.el: New add-on.
+	* COMPILE (riece-modules): Add riece-biff.
+	* Makefile.am (EXTRA_DIST): Add riece-biff.el.
+
+2004-05-26  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece.el (riece-exit): Don't disable addons.
+
+	* riece-commands.el (riece-command-quit): Don't query user to
+	input y/n if there is no server process.
+
+2004-05-26  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-highlight.el: Require 'derived.
+	(riece-highlight-setup-dialogue): Turn on font-lock if
+	riece-highlight-enabled.
+	(riece-highlight-setup-channel-list): Ditto.
+
+2004-05-24  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-addon.el (riece-command-list-addons): Sort add-ons.
+
+2004-05-23  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-menu.el: Don't put 'riece-addon-default-disabled property.
+
+	* riece-log.el (riece-log-flashback): Don't check riece-log-enabled.
+
+	* riece.el (riece): Enable add-ons after startup.
+
+2004-05-23  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-unread.el (riece-unread-disable): Reset riece-unread-channels.
+
+2004-05-22  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-message.el (riece-format-message): Don't append
+	server-name if the 2nd arg is not specified.
+
+	* riece-hangman.el (riece-hangman-word): Fixed regexp.
+
+2004-05-22  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-xface.el: Support enable/disable.
+	(riece-xface-enabled): New flag.
+	(riece-xface-description): New variable.
+	(riece-xface-update-user-list-buffer): Check riece-xface-enabled.
+	(riece-xface-enable): New function.
+	(riece-xface-disable): New function.
+
+	* riece-url.el: Support enable/disable.
+	(riece-url-enabled): New flag.
+	(riece-url-description): New variable.
+	(riece-url-enable): New function; bind command keys here.
+	(riece-url-disable): New function.
+
+	* riece-unread.el: Support enable/disable.
+	(riece-unread-enabled): New flag.
+	(riece-unread-description): New variable.
+	(riece-unread-after-display-message-function): Check
+	riece-unread-enabled.
+	(riece-unread-after-switch-to-channel-function): Ditto.
+	(riece-unread-format-identity-for-channel-list-buffer): Ditto.
+	(riece-unread-format-identity-for-channel-list-indicator): Ditto.
+	(riece-unread-enable): New function; bind command keys here.
+	(riece-unread-disable): New function.
+
+	* riece-rdcc.el: Support enable/disable.
+	(riece-rdcc-enabled): New flag.
+	(riece-rdcc-description): New variable.
+	(riece-handle-dcc-request): Check riece-rdcc-enabled.
+	(riece-rdcc-enable): New function; bind command keys here.
+	(riece-rdcc-disable): New function.
+
+	* riece-ndcc.el: Support enable/disable.
+	(riece-ndcc-enabled): New flag.
+	(riece-ndcc-description): New variable.
+	(riece-handle-dcc-request): Check riece-ndcc-enabled.
+	(riece-ndcc-enable): New function; bind command keys here.
+	(riece-ndcc-disable): New function.
+
+	* riece-menu.el: Support enable/disable; put
+	riece-addon-default-disabled property.
+	(riece-menu-enabled): New flag.
+	(riece-menu-description): New variable.
+	(riece-menu-enable): New function.
+	(riece-menu-disable): New function.
+
+	* riece-lsdb.el: Support enable/disable.
+	(riece-lsdb-enabled): New flag.
+	(riece-lsdb-description): New variable.
+	(riece-lsdb-enable): New function; bind command keys here.
+	(riece-lsdb-disable): New function.
+
+	* riece-keyword.el: Support enable/disable.
+	(riece-keyword-enabled): New flag.
+	(riece-keyword-description): New variable.
+	(riece-keyword-message-filter): Check riece-keyword-enabled.
+	(riece-keyword-enable): New function.
+	(riece-keyword-disable): New function.
+
+	* riece-ignore.el: Support enable/disable.
+	(riece-ignore-enabled): New flag.
+	(riece-ignore-description): New variable.
+	(riece-ignore-message-filter): Check riece-ignore-enabled.
+	(riece-ignore-enable): New function; bind command keys here.
+	(riece-ignore-disable): New function.
+
+	* riece-icon.el: Support enable/disable.
+	(riece-icon-enabled): New flag.
+	(riece-icon-description): New variable.
+	(riece-icon-update-user-list-buffer): Check riece-icon-enabled.
+	(riece-icon-update-channel-list-buffer): Check riece-icon-enabled.
+	(riece-icon-enable): New function.
+	(riece-icon-disable): New function.
+
+	* riece-history.el: Support enable/disable.
+	(riece-history-enabled): New flag.
+	(riece-history-description): New variable.
+	(riece-history-format-identity-for-channel-list-buffer): Check
+	riece-history-enabled.
+	(riece-history-format-identity-for-channel-list-indicator): Ditto.
+	(riece-history-enable): New function.
+	(riece-history-disable): New function.
+
+	* riece-hangman.el: Support enable/disable; put
+	riece-addon-default-disabled property.
+	(riece-hangman-enabled): New flag.
+	(riece-hangman-description): New variable.
+	(riece-hangman-after-privmsg-hook): Check riece-hangman-enabled.
+	(riece-hangman-enable): New function.
+	(riece-hangman-disable): New function.
+
+	* riece-guess.el: Support enable/disable.
+	(riece-guess-enabled): New flag.
+	(riece-guess-description): New variable.
+	(riece-guess-insinuate): Nothing to do.
+	(riece-guess-enable): New function; bind command keys here.
+	(riece-guess-disable): New function.
+
+	* riece-doctor.el: Support enable/disable; put
+	'riece-addon-default-disabled property.
+	(riece-doctor-enabled): New flag.
+	(riece-doctor-description): New variable.
+	(riece-doctor-after-privmsg-hook): Check riece-doctor-enabled.
+	(riece-doctor-enable): New function.
+	(riece-doctor-disable): New function.
+
+	* riece-ctlseq.el: Support enable/disable.
+	(riece-ctlseq-enabled): New flag.
+	(riece-ctlseq-description): New variable.
+	(riece-ctlseq-message-filter): Check riece-ctlseq-enabled.
+	(riece-ctlseq-enable): New function.
+	(riece-ctlseq-disable): New function.
+
+	* riece-button.el: Support enable/disable.
+	(riece-button-enabled): New flag
+	(riece-button-description): New variable.
+	(riece-button-enable): New function.
+	(riece-button-disable): New function.
+
+	* riece-async.el (riece-async-description): New variable.
+
+	* riece-alias.el: Support enable/disable.
+	(riece-alias-enabled): New flag.
+	(riece-alias-description): New variable.
+	(riece-alias-insinuate): Nothing to do.
+	(riece-alias-enable): New function.
+	(riece-alias-disable): New function.
+
+	* riece-addon.el (riece-addon-list-mark-face-alist): Change mark
+	for addons which does not support enable/disable.
+	(riece-addon-list-font-lock-keywords): Follow the above change.
+	(riece-command-list-addons): Ditto.
+
+	* riece.el (riece): Check 'riece-addon-default-disabled property.
+	(riece-exit): Disable addons.
+
+2004-05-22  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-addon.el (riece-addon-list-mode): Call font-lock-set-defaults.
+
+	* riece-highlight.el (riece-highlight-setup-dialogue): Call
+	font-lock-set-defaults.
+	(riece-highlight-setup-channel-list): Ditto.
+
+	* riece.el (riece): Enable add-ons after startup.
+
+2004-05-21  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece.el (riece-dialogue-mode-map): Bind
+	riece-command-list-addons as "^".
+
+2004-05-21  TAKAHASHI Kaoru  <kaoru@kaisei.org>
+
+	* riece-skk-kakutei.el (riece-skk-kakutei-enabled): New flag.
+	(riece-skk-kakutei-description): New variable.
+	(riece-skk-kakutei-insinuate): Nothing to do.
+	(riece-skk-kakutei-enable): New function.
+	(riece-skk-kakutei-disable): New function.
+
+2004-05-21  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-highlight.el (riece-highlight-setup-dialogue): Simplified.
+	(riece-highlight-setup-channel-list): Simplified.
+
+	* riece.el (riece): Enable add-ons just after insinuate them.
+
+	* riece-addon.el (riece-addon-list-enabled-face): New face.
+	(riece-addon-list-disabled-face): New face.
+	(riece-addon-list-unsupported-face): New face.
+	(riece-addon-list-unknown-face): New face.
+	(riece-addon-list-description-face): New face.
+	(riece-addon-list-mark-face-alist): New user option.
+	(riece-addon-list-font-lock-keywords): New variable.
+	(riece-addon-list-mode-map): Bind some keys.
+
+2004-05-21  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-addon.el (riece-insinuate-addon): Add optional 2nd
+	argument `verbose'
+	(riece-enable-addon): Ditto.
+	(riece-disable-addon): Ditto.
+	(riece-command-enable-addon): Call riece-enable-addon with the 2nd
+	arg.
+	(riece-command-disable-addon): Call riece-disable-addon with the
+	2nd arg.
+
+2004-05-21  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-addon.el (riece-command-list-addons): Change "no
+	description" -> "(no description)"; show key bindings.
+
+	* riece-ctcp.el (riece-ctcp-description): New variable.
+	* riece-highlight.el (riece-highlight-description): New variable
+	* riece-log.el (riece-log-description): New variable.
+	* riece-mini.el (riece-mini-description): New variable.
+
+2004-05-21  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-ctcp.el (riece-ctcp-enable): Fixed typo.
+
+	* riece-addon.el (riece-addon-list-mode-map): New keymap.
+	(riece-addon-list-mode): New function.
+	(riece-command-list-addons): New command.
+	(riece-command-enable-addon): New command.
+	(riece-command-disable-addon): New command.
+	(riece-disable-addon): Fixed typo.
+
+2004-05-21  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-mini.el (riece-mini-enabled): New flag.
+	(riece-mini-display-message-function): Check riece-mini-enabled.
+	(riece-mini-enable): New function.
+	(riece-mini-disable): New function.
+
+	* riece-log.el (riece-log-enabled): New flag.
+	(riece-log-display-message-function): Check riece-log-enabled.
+	(riece-log-insinuate): Don't bind command key.
+	(riece-log-enable): New function.
+	(riece-log-disable): New function.
+
+	* riece-highlight.el (riece-highlight-enabled): New flag.
+	(riece-highlight-setup-dialogue): Renamed from
+	riece-dialogue-turn-on-font-lock; don't call turn-on-font-lock.
+	(riece-highlight-setup-channel-list): Renamed from
+	riece-channel-list-turn-on-font-lock; don't call
+	turn-on-font-lock.
+	(riece-highlight-hide-prefix): Renamed from
+	riece-dialogue-hide-prefix.
+	(riece-highlight-put-overlay-faces): Renamed from
+	riece-put-overlay-faces; check riece-highlight-enabled.
+	(riece-highlight-format-identity-for-channel-list-indicator):
+	Check riece-highlight-enabled.
+	(riece-highlight-insinuate): Follow the name changes.
+	(riece-highlight-enable): New function.
+	(riece-highlight-disable): New function.
+
+	* riece-ctcp.el (riece-ctcp-enabled): New flag.
+	(riece-ctcp-insinuate): Don't bind command keys.
+	(riece-ctcp-enable): New function.
+	(riece-ctcp-disable): New function.
+	(riece-handle-ctcp-request): Check riece-ctcp-enabled.
+	(riece-handle-ctcp-response): Ditto.
+
+	* riece.el: Moved add-on arrangement code to riece-addon.el.
+	(riece-addons-insinuated): New flag.
+	(riece): Don't (re)insinuate add-ons if at least an IRC server is
+	opened; enable add-ons after calling riece-startup-hook.
+
+	* riece-addon.el: New file.
+	* COMPILE (riece-modules): Add riece-addon.
+	* Makefile.am (EXTRA_DIST): Add riece-addon.el.
+
+2004-05-20  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-doctor.el (riece-doctor-buffer-name): Assume that the 1st
+	argument is nickname rather than identity object.
+	(riece-doctor-after-privmsg-hook): Don't send formatted identity
+	as a patient's nickname.
+
+2004-05-20  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-hangman.el (riece-hangman-player-context-alist): Renamed
+	from riece-hangman-players.
+	(riece-hangman-make-context): Add doc.
+	(riece-hangman-context-word): Add doc.
+	(riece-hangman-context-guessed): Add doc.
+	(riece-hangman-context-missed-count): Add doc.
+	(riece-hangman-context-set-guessed): Add doc.
+	(riece-hangman-context-set-missed-count): Add doc.
+	(riece-hangman-word): Add doc.
+	(riece-hangman-reply-with-context): Prefix user name.
+
+2004-05-20  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-doctor.el (riece-doctor-after-privmsg-hook): Prefix user
+	name to reply.
+
+	* riece-hangman.el: New add-on.
+	* COMPILE (riece-modules): Add riece-hangman.
+	* Makefile.am (EXTRA_DIST): Add riece-hangman.el.
+
+2004-05-19  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-400.el (riece-handle-read-string): Append "Quit" to prompt
+	if user quits input.
+
+2004-05-19  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-commands.el (riece-command-complete-user): New command.
+	* riece.el: Bind riece-command-complete-user.
+
+2004-05-19  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-400.el (riece-handle-read-string): New function.
+	(riece-handle-432-message): Use it.
+	(riece-handle-433-message): Use it.
+
+	* riece-server.el (riece-open-server): Don't inhibit quit and
+	catch it when reading server password.
+
+2004-05-18  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-ignore.el (riece-ignore-message-filter): Set the
+	major-mode of riece-ignore-buffer riece-dialogue-mode.
+
+2004-05-18  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-ignore.el (riece-ignore-buffer-name): New user option.
+	(riece-ignore-discard-message): Fixed custom spec to follow the
+	logging option.
+	(riece-ignore-buffer): New variable.
+
+	* riece-log.el (riece-log-display-message-function): Use
+	riece-format-message.
+
+	* riece-message.el (riece-format-message): New function splitted
+	from riece-display-message-1.
+	(riece-display-message-1): Use it.
+
+2004-05-18  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-ignore.el (riece-ignore-user): Renamed from
+	riece-ignore-by-user.
+
+2004-05-18  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-signal.el (riece-connect-signal): Fixed doc.
+	(riece-disconnect-signal): New function.
+
+	* riece-ignore.el (riece-ignore-discard-message): New user option.
+	(riece-ignored-user-list): Renamed from riece-ignored-user.
+	(riece-ignore-by-user): Support unignore.
+
+2004-05-18  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-url.el (riece-url-regexp): Accept ";".
+
+	* riece-ignore.el: New add-on.
+	* COMPILE (riece-modules): Add riece-ignore.
+	* Makefile.am (EXTRA_DIST): Add riece-ignore.el.
+
+2004-05-13  OHASHI Akira  <bg66@koka-in.org>
+
+	* riece-log.el (riece-log-get-directory): Follow the name change
+	of riece-channel-regexp.
+
+2004-05-12  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-globals.el (riece-strict-channel-regexp): Renamed from
+	riece-channel-regexp.
+	(riece-strict-user-regexp): Renamed from riece-user-regexp.
+	(riece-laxed-channel-regexp): New constant.
+	(riece-laxed-user-regexp): New constant.
+	(riece-channel-regexp): Define as variable (its default value is
+	set to riece-laxed-channel-regexp).
+	(riece-user-regexp): Define as variable (its default value is set
+	to riece-laxed-user-regexp).
+
+2004-05-10  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-ctlseq.el (riece-ctlseq-scan-region): Abolish.
+	(riece-ctlseq-requires): New function.
+	(riece-ctlseq-message-filter): Assume the existence of
+	riece-put-overlay-faces, add 'riece-overlay-face property.
+
+	* riece-keyword.el (riece-keyword-scan-region): Abolish.
+	(riece-keyword-message-filter): Assume the existence of
+	riece-put-overlay-faces, add 'riece-overlay-face property.
+
+	* riece-highlight.el (riece-put-overlay-faces): New function.
+	(riece-highlight-insinuate): Add riece-put-overlay-faces to
+	riece-after-insert-functions.
+
+2004-05-05  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-misc.el (riece-split-parameters): Don't remove a trailing
+	string even if it is empty.
+
+2004-05-05  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-ctlseq.el: Require 'riece-message for riece-message-text;
+	require 'riece-misc for riece-scan-property-region.
+
+	* riece-ctcp.el: Require 'riece-display for riece-channel-buffer.
+
+2004-05-04  Daiki Ueno  <ueno@unixuser.org>
+
+	* riece-300.el (riece-handle-312-message): Use server name
+	returned by WHOIS instead of riece-real-server-name.
+	[cf. <Liece:00170>]
+
 2004-05-04  Daiki Ueno  <ueno@unixuser.org>
 
 	* Riece: Version 0.2.2 released.
 EXTRA_DIST = COMPILE ChangeLog ChangeLog.Liece \
 	riece-000.el riece-200.el riece-300.el riece-400.el riece-500.el \
-	riece-channel.el riece-coding.el riece-commands.el riece-compat.el \
-	riece-complete.el riece-display.el riece-emacs.el riece-filter.el \
-	riece-globals.el riece-handle.el riece-highlight.el riece-identity.el \
-	riece-message.el riece-misc.el riece-mode.el riece-naming.el \
-	riece-options.el riece-server.el riece-signal.el riece-user.el \
-	riece-version.el riece-xemacs.el riece.el \
+	riece-addon.el riece-channel.el riece-coding.el riece-commands.el \
+	riece-compat.el riece-complete.el riece-display.el riece-emacs.el \
+	riece-filter.el riece-globals.el riece-handle.el riece-highlight.el \
+	riece-identity.el riece-message.el riece-misc.el riece-mode.el \
+	riece-naming.el riece-options.el riece-server.el riece-signal.el \
+	riece-user.el riece-version.el riece-xemacs.el riece-irc.el riece.el \
 	riece-ctcp.el riece-url.el riece-unread.el \
 	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-lsdb.el \
-	riece-xface.el riece-ctlseq.el
+	riece-xface.el riece-ctlseq.el riece-ignore.el riece-hangman.el \
+	riece-biff.el riece-kakasi.el riece-foolproof.el
 
 CLEANFILES = auto-autoloads.el custom-load.el *.elc
 FLAGS ?= -batch -q -no-site-file

lisp/riece-000.el

 ;;; Code:
 
 (require 'riece-misc)
-(require 'riece-filter)			;riece-default-handle-message
 (require 'riece-version)
 (require 'riece-commands)		;riece-command-join
 
 (eval-when-compile
-  (autoload 'riece-default-handle-numeric-reply "riece-filter"))
+  (autoload 'riece-default-handle-numeric-reply "riece-handle"))
 (defun riece-handle-default-000-message (prefix number name string)
   (setq riece-nick-accepted 'ok)
   (riece-default-handle-numeric-reply

lisp/riece-200.el

 (require 'riece-misc)
 
 (eval-when-compile
-  (autoload 'riece-default-handle-numeric-reply "riece-filter"))
+  (autoload 'riece-default-handle-numeric-reply "riece-handle"))
 (defun riece-handle-default-200-message (prefix number name string)
   (riece-default-handle-numeric-reply
    riece-info-prefix prefix number name string))

lisp/riece-300.el

 
 (require 'riece-misc)
 
-(require 'riece-filter)			;riece-default-handle-message
-
 (eval-when-compile
-  (autoload 'riece-default-handle-numeric-reply "riece-filter"))
+  (autoload 'riece-default-handle-numeric-reply "riece-handle"))
 (defun riece-handle-default-300-message (prefix number name string)
   (riece-default-handle-numeric-reply
    riece-info-prefix prefix number name string))
        (concat
 	(riece-concat-server-name
 	 (format "on via server %s: %s"
-		 riece-real-server-name
+		 (match-string 2 string)
 		 (substring string (match-end 0))))
 	"\n"))))
 
 		 (substring string (match-end 0))))
 	"\n"))))
 
+(defvar riece-353-users nil)
 (defun riece-handle-353-message (prefix number name string)
-  "RPL_NAMREPLY	\"<channel> :[[@|+]<nick> [[@|+]<nick> [...]]]\"."
+  "RPL_NAMREPLY	\"[=\*@] <channel> :[[@|+]<nick> [[@|+]<nick> [...]]]\"."
   (if (string-match "^[=\*@] *\\([^ ]+\\) +:" string)
       (let ((channel (match-string 1 string))
 	    (start 0)
-	    user users)
+	    user)
+	(make-local-variable 'riece-353-users)
 	(setq string (substring string (match-end 0)))
 	(while (string-match
 		(concat "\\([@+]\\)?\\(" riece-user-regexp "\\) *")
 			   (if (eq (aref string (match-beginning 1)) ?+)
 			       (list (match-string 2 string) ?v)))
 		       (list (match-string 2 string)))
-		users (cons user users)))
-	(riece-naming-assert-channel-users (nreverse users) channel)
+		riece-353-users (cons user riece-353-users)))
 	(let* ((channel-identity (riece-make-identity channel
 						      riece-server-name))
 	       (buffer (riece-channel-buffer channel-identity)))
 (defun riece-handle-315-message (prefix number name string))
 (defun riece-handle-318-message (prefix number name string))
 (defun riece-handle-323-message (prefix number name string))
-(defun riece-handle-366-message (prefix number name string))
+
+(defun riece-handle-366-message (prefix number name string)
+  "RPL_ENDOFNAMES \"<channel> :End of NAMES list\""
+  (if (string-match "^\\([^ ]+\\) +:" string)
+      (let ((channel (match-string 1 string)))
+	(riece-naming-assert-channel-users (nreverse riece-353-users)
+					   channel)))
+  (setq riece-353-users nil))
 
 (provide 'riece-300)
 

lisp/riece-400.el

 (require 'riece-misc)
 
 (eval-when-compile
-  (autoload 'riece-default-handle-numeric-reply "riece-filter"))
+  (autoload 'riece-default-handle-numeric-reply "riece-handle"))
 (defun riece-handle-default-400-message (prefix number name string)
   (riece-default-handle-numeric-reply
    riece-error-prefix prefix number name string))
 
+(defun riece-handle-read-string (prompt)
+  (condition-case nil
+      (let (inhibit-quit)
+	(read-string prompt))
+    (quit
+     (ignore (message "%s" (concat prompt "Quit"))))))
+
 (defun riece-handle-432-message (prefix number name string)
   "ERR_ERRONEUSNICKNAME	\"<nick> :Erroneous nickname\"."
-  (riece-send-string
-   (format "NICK %s\r\n"
-	   (read-string
-	    (format "Erroneous nickname \"%s\".  Choose a new one: "
-		    (car (riece-split-parameters string)))))))
+  (let ((nickname
+	 (riece-handle-read-string
+	  (format "Erroneous nickname \"%s\".  Choose a new one: "
+		  (car (riece-split-parameters string))))))
+    (if nickname
+	(riece-send-string (format "NICK %s\r\n" nickname)))))
 
 (defun riece-handle-433-message (prefix number name string)
   "ERR_NICKNAMEINUSE \"<nick> :Nickname is already in use\"."
-  (riece-send-string
-   (format "NICK %s\r\n"
-	   (read-string
-	    (format "Nickname \"%s\" already in use.  Choose a new one: "
-		    (car (riece-split-parameters string)))))))
+  (let ((nickname
+	 (riece-handle-read-string
+	  (format "Nickname \"%s\" already in use.  Choose a new one: "
+		  (car (riece-split-parameters string))))))
+    (if nickname
+	(riece-send-string (format "NICK %s\r\n" nickname)))))
 
 (defun riece-handle-464-message (prefix number name string)
   "ERR_PASSWDMISMATCH \":Password incorrect\"."

lisp/riece-500.el

 (require 'riece-misc)
 
 (eval-when-compile
-  (autoload 'riece-default-handle-numeric-reply "riece-filter"))
+  (autoload 'riece-default-handle-numeric-reply "riece-handle"))
 (defun riece-handle-default-500-message (prefix number name string)
   (riece-default-handle-numeric-reply
    riece-error-prefix prefix number name string))

lisp/riece-addon.el

+;;; riece-addon.el --- add-on management
+;; Copyright (C) 1998-2004 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.
+
+;;; Code:
+
+(require 'font-lock)
+(require 'riece-options)
+(require 'riece-compat)
+(require 'riece-misc)
+
+(defgroup riece-addon-list nil
+  "Add-on management"
+  :tag "Addon"
+  :prefix "riece-"
+  :group 'riece)
+
+(defgroup riece-addon-list-faces nil
+  "Faces for riece-addon-list-mode"
+  :tag "Faces"
+  :prefix "riece-addon-list"
+  :group 'riece-addon)
+
+(defface riece-addon-list-enabled-face
+  '((((class color) (background dark))
+     (:foreground "PaleTurquoise" :bold t))
+    (t
+     (:bold t)))
+  "Face used for displaying the enabled addon."
+  :group 'riece-addon-list-faces)
+(defvar riece-addon-list-enabled-face 'riece-addon-list-enabled-face)
+
+(defface riece-addon-list-disabled-face
+  '((((class color) (background dark))
+     (:foreground "PaleTurquoise" :italic t))
+    (t
+     (:italic t)))
+  "Face used for displaying the disabled addon."
+  :group 'riece-addon-list-faces)
+(defvar riece-addon-list-disabled-face 'riece-addon-list-disabled-face)
+
+(defface riece-addon-list-unsupported-face
+  '((((class color) (background dark))
+     (:foreground "PaleTurquoise"))
+    (t
+     ()))
+  "Face used for displaying the unsupported addon."
+  :group 'riece-addon-list-faces)
+(defvar riece-addon-list-unsupported-face 'riece-addon-list-unsupported-face)
+
+(defface riece-addon-list-unknown-face
+  '((t
+     (:foreground "red")))
+  "Face used for displaying the unknown addon."
+  :group 'riece-addon-list-faces)
+(defvar riece-addon-list-unknown-face 'riece-addon-list-unknown-face)
+
+(defface riece-addon-list-description-face
+  '((((class color)
+      (background dark))
+     (:foreground "lightyellow"))
+    (((class color)
+      (background light))
+     (:foreground "blue4"))
+    (t
+     ()))
+  "Face used for displaying the description addon."
+  :group 'riece-addon-list-faces)
+(defvar riece-addon-list-description-face 'riece-addon-list-description-face)
+
+(defcustom riece-addon-list-mark-face-alist
+  '((?+ . riece-addon-list-enabled-face)
+    (?- . riece-addon-list-disabled-face)
+    (?! . riece-addon-list-unsupported-face)
+    (?? . riece-addon-list-unknown-face))
+  "An alist mapping marks on riece-addon-list-buffer to faces."
+  :type 'list
+  :group 'riece-addon-list)
+
+(defcustom riece-addon-list-font-lock-keywords
+  '(("^\\([-+!?] [^:]+\\): \\(.*\\)"
+     (1 (cdr (assq (aref (match-string 1) 0)
+		   riece-addon-list-mark-face-alist)))
+     (2 riece-addon-list-description-face)))
+  "Default expressions to addon in riece-addon-list-mode."
+  :type '(repeat (list string))
+  :group 'riece-addon-list)
+
+(defvar riece-addon-list-mode-map
+  (let ((keymap (make-sparse-keymap)))
+    (define-key keymap "+" 'riece-command-enable-addon)
+    (define-key keymap "-" 'riece-command-disable-addon)
+    (define-key keymap "n" 'next-line)
+    (define-key keymap "p" 'previous-line)
+    (define-key keymap " " 'scroll-up)
+    (define-key keymap [delete] 'scroll-down)
+    (define-key keymap "q" 'bury-buffer)
+    keymap))
+
+(defun riece-load-and-build-addon-dependencies (addons)
+  (let ((load-path (cons riece-addon-directory load-path))
+	dependencies)
+    (while addons
+      (require (car addons))		;error will be reported here
+      (let* ((requires
+	      (funcall (or (intern-soft
+			    (concat (symbol-name (car addons)) "-requires"))
+			   #'ignore)))
+	     (pointer requires)
+	     entry)
+	;; Increment succs' pred count.
+	(if (setq entry (assq (car addons) dependencies))
+	    (setcar (cdr entry) (+ (length requires) (nth 1 entry)))
+	  (setq dependencies (cons (list (car addons) (length requires))
+				   dependencies)))
+	;; Merge pred's succs.
+	(while pointer
+	  (if (setq entry (assq (car pointer) dependencies))
+	      (setcdr (cdr entry)
+		      (cons (car addons) (nthcdr 2 entry)))
+	    (setq dependencies (cons (list (car pointer) 0 (car addons))
+				     dependencies)))
+	  (setq pointer (cdr pointer))))
+      (setq addons (cdr addons)))
+    dependencies))
+
+(defun riece-resolve-addons (addons)
+  (let ((pointer addons)
+	dependencies queue)
+    ;; Uniquify, first.
+    (while pointer
+      (if (memq (car pointer) (cdr pointer))
+	  (setcar pointer nil))
+      (setq pointer (cdr pointer)))
+    (setq dependencies (riece-load-and-build-addon-dependencies
+			(delq nil addons))
+	  pointer dependencies)
+    ;; Sort them.
+    (while pointer
+      (if (zerop (nth 1 (car pointer)))
+	  (setq dependencies (delq (car pointer) dependencies)
+		queue (cons (car pointer) queue)))
+      (setq pointer (cdr pointer)))
+    (setq addons nil)
+    (while queue
+      (setq addons (cons (car (car queue)) addons)
+	    pointer (nthcdr 2 (car queue)))
+      (while pointer
+	(let* ((entry (assq (car pointer) dependencies))
+	       (count (1- (nth 1 entry))))
+	  (if (zerop count)
+	      (progn
+		(setq dependencies (delq entry dependencies)
+		      queue (nconc queue (list entry))))
+	    (setcar (cdr entry) count)))
+	(setq pointer (cdr pointer)))
+      (setq queue (cdr queue)))
+    (if dependencies
+	(error "Circular add-on dependency found"))
+    (nreverse addons)))
+
+(defun riece-insinuate-addon (addon &optional verbose)
+  (require addon)		;implicit dependency
+  (funcall (intern (concat (symbol-name addon) "-insinuate")))
+  (if verbose
+      (message "Add-on %S is insinuated" addon)))
+
+(defun riece-enable-addon (addon &optional verbose)
+  (let ((enabled (intern-soft (concat (symbol-name addon) "-enabled"))))
+    (if (null enabled)
+	(if verbose
+	    (message "Add-on %S doesn't support enable/disable" addon))
+      (if (symbol-value enabled)
+	  (if verbose
+	      (message "Can't enable add-on %S" addon))
+	(funcall (intern (concat (symbol-name addon) "-enable")))
+	(if verbose
+	    (message "Add-on %S enabled" addon))))))
+
+(defun riece-disable-addon (addon &optional verbose)
+  (let ((enabled (intern-soft (concat (symbol-name addon) "-enabled"))))
+    (if (null enabled)
+	(if verbose
+	    (message "Add-on %S doesn't support enable/disable" addon))
+      (if (symbol-value enabled)
+	  (progn
+	    (funcall (intern (concat (symbol-name addon) "-disable")))
+	    (if verbose
+		(message "Add-on %S disabled" addon)))
+	(if verbose
+	    (message "Can't disable add-on %S" addon))))))
+
+(put 'riece-addon-list-mode 'font-lock-defaults
+     '(riece-addon-list-font-lock-keywords t))
+
+(defun riece-addon-list-mode ()
+  "Major mode for displaying addon list.
+All normal editing commands are turned off."
+  (kill-all-local-variables)
+  (buffer-disable-undo)
+  (setq major-mode 'riece-addon-list-mode
+	mode-name "AddOns"
+	mode-line-buffer-identification
+	(riece-mode-line-buffer-identification '("Riece: %12b"))
+	truncate-lines t
+	buffer-read-only t)
+  (use-local-map riece-addon-list-mode-map)
+  (make-local-variable 'font-lock-defaults)
+  (setq font-lock-defaults '(riece-addon-list-font-lock-keywords t))
+  ;; In XEmacs, auto-initialization of font-lock is not affective
+  ;; when buffer-file-name is not set.
+  (font-lock-set-defaults)
+  (run-hooks 'riece-addon-list-mode-hook))
+
+(defun riece-command-list-addons ()
+  (interactive)
+  (set-buffer (riece-get-buffer-create "*AddOns*" 'riece-addon-list-mode))
+  (riece-addon-list-mode)
+  (let ((inhibit-read-only t)
+	buffer-read-only
+	(pointer (sort (copy-sequence riece-addons)
+		       (lambda (symbol1 symbol2)
+				  (string-lessp (symbol-name symbol1)
+						(symbol-name symbol2)))))
+	enabled description point)
+    (erase-buffer)
+    (riece-kill-all-overlays)
+    (while pointer
+      (setq enabled (intern-soft (concat (symbol-name (car pointer))
+					 "-enabled"))
+	    description (intern-soft (concat (symbol-name (car pointer))
+					     "-description")))
+      (setq point (point))
+      (insert (format "%c %S: %s\n"
+		      (if (not (featurep (car pointer)))
+			  ??
+			(if (null enabled)
+			    ?!
+			  (if (symbol-value enabled)
+			      ?+
+			    ?-)))
+		      (car pointer)
+		      (if description
+			  (symbol-value description)
+			"(no description)")))
+      (put-text-property point (point) 'riece-addon (car pointer))
+      (setq pointer (cdr pointer)))
+    (insert "
+Symbols in the leftmost column:
+
+  +     The add-on is enabled.
+  -     The add-on is disabled.
+  !	The add-on doesn't support enable/disable operation.
+  ?	The add-on status is unknown.
+")
+    (insert (substitute-command-keys "
+Useful keys:
+
+  `\\[riece-command-enable-addon]' to enable the current add-on.
+  `\\[riece-command-disable-addon]' to disable the current add-on.
+"))
+    (goto-char (point-min))
+    (pop-to-buffer (current-buffer))
+    (delete-other-windows)))
+
+(defun riece-command-enable-addon (addon)
+  (interactive
+   (list
+    (or (if (eq major-mode 'riece-addon-list-mode)
+	    (get-text-property (point) 'riece-addon))
+	(completing-read "Add-on: "
+			 (mapcar (lambda (addon)
+				   (list (symbol-name addon)))
+				 riece-addons)
+			 (lambda (pointer)
+			   (let ((enabled
+				  (intern-soft (concat (symbol-name
+							(car pointer))
+						       "-enabled"))))
+			     (and enabled
+				  (null (symbol-value enabled)))))
+			 t))))
+  (riece-enable-addon addon t)
+  (let ((enabled (intern-soft (concat (symbol-name addon) "-enabled"))))
+    (if (and (eq major-mode 'riece-addon-list-mode)
+	     (get-text-property (point) 'riece-addon)
+	     enabled (symbol-value enabled))
+	(save-excursion
+	  (beginning-of-line)
+	  (let ((point (point))
+		(inhibit-read-only t)
+		buffer-read-only)
+	    (delete-char 1)
+	    (insert "+")
+	    (put-text-property point (point) 'riece-addon addon))))))
+
+(defun riece-command-disable-addon (addon)
+  (interactive
+   (list
+    (or (if (eq major-mode 'riece-addon-list-mode)
+	    (get-text-property (point) 'riece-addon))
+	(completing-read "Add-on: "
+			 (mapcar (lambda (addon)
+				   (list (symbol-name addon)))
+				 riece-addons)
+			 (lambda (pointer)
+			   (let ((enabled
+				  (intern-soft (concat (symbol-name
+							(car pointer))
+						       "-enabled"))))
+			     (and enabled
+				  (symbol-value enabled))))
+			 t))))
+  (riece-disable-addon addon t)
+  (let ((enabled (intern-soft (concat (symbol-name addon) "-enabled"))))
+    (if (and (eq major-mode 'riece-addon-list-mode)
+	     (get-text-property (point) 'riece-addon)
+	     enabled (null (symbol-value enabled)))
+	(save-excursion
+	  (beginning-of-line)
+	  (let ((point (point))
+		(inhibit-read-only t)
+		buffer-read-only)
+	    (delete-char 1)
+	    (insert "-")
+	    (put-text-property point (point) 'riece-addon addon))))))
+
+(provide 'riece-addon)
+
+;;; riece-addon.el ends here

lisp/riece-alias.el

 ;;; Code:
 
 (require 'riece-identity)
+(require 'riece-signal)
 
 (defgroup riece-alias nil
   "Define aliases of names"
   :type 'list
   :group 'riece-alias)
 
+(defvar riece-alias-enabled nil)
+
+(defconst riece-alias-description
+  "Define aliases of channel/user names")
+
 (defun riece-alias-abbrev-percent-hack (string)
   (if (string-match (concat "^#\\([^ ]+\\):"
 			    (regexp-quote riece-alias-percent-hack-mask)
       string)))
 
 (defun riece-alias-insinuate ()
+  )
+
+(defun riece-alias-enable ()
   (setq riece-abbrev-identity-string-function
 	#'riece-alias-abbrev-identity-string
 	riece-expand-identity-string-function
-	#'riece-alias-expand-identity-string))
+	#'riece-alias-expand-identity-string)
+  (riece-emit-signal 'channel-list-changed)
+  (setq riece-alias-enabled t))
+
+(defun riece-alias-disable ()
+  (setq riece-abbrev-identity-string-function nil
+	riece-expand-identity-string-function nil)
+  (riece-emit-signal 'channel-list-changed)
+  (setq riece-alias-enabled nil))
 
 (provide 'riece-alias)
 

lisp/riece-async.el

   :type 'integer
   :group 'riece-async)
 
+(defconst riece-async-description
+  "Keep IRC connection with external process")
+
 (defun riece-async-substitute-variables (program variable value)
   (setq program (copy-sequence program))
   (let ((pointer program))

lisp/riece-biff.el

+;;; riece-biff.el --- biff add-on
+;; Copyright (C) 2004 OHASHI Akira
+
+;; Author: OHASHI Akira <bg66@koka-in.org>
+;; 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-biff)
+
+;;; Code:
+
+(eval-when-compile (require 'riece-message))
+
+(defgroup riece-biff nil
+  "Biff for new arrival messages"
+  :group 'riece)
+
+(defcustom riece-biff-check-channels nil
+  "*If non-nil, riece-biff checks only the channel contained in this list."
+  :type '(repeat string)
+  :group 'riece-biff)
+
+(defcustom riece-biff-default-mode-string "[-]"
+  "*String displayed when there is no arrival message."
+  :type 'string
+  :group 'riece-biff)
+
+(defcustom riece-biff-biff-mode-string "[R]"
+  "*String displayed when there are new arrival messages."
+  :type 'string
+  :group 'riece-biff)
+
+(defcustom riece-biff-functions nil
+  "*Functions for processing new arrival messages."
+  :type 'function
+  :group 'riece-biff)
+
+(defvar riece-biff-mode-string 'riece-biff-default-mode-string)
+
+(defvar riece-biff-enabled nil)
+
+(defconst riece-biff-description
+  "Biff for new arrival messages")
+
+(defun riece-biff-after-display-message-function (message)
+  (when (and riece-biff-enabled
+	     (not (or (eq (window-buffer (selected-window))
+			  (get-buffer riece-command-buffer))
+		      (riece-message-own-p message)
+		      (riece-message-type message))))
+    (when (or (null riece-biff-check-channels)
+	      (member (riece-format-identity (riece-message-target message))
+		      riece-biff-check-channels))
+      (setq riece-biff-mode-string 'riece-biff-biff-mode-string)
+      (run-hook-with-args 'riece-biff-functions message))))
+
+(defun riece-biff-clear (&optional dummy)
+  (when riece-biff-enabled
+    (setq riece-biff-mode-string 'riece-biff-default-mode-string)))