1;;; navi2ch-vars.el --- User variables for navi2ch. -*- coding: iso-2022-7bit; -*-
2
3;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
4;; by Navi2ch Project
5
6;; Author: Taiki SUGAWARA <taiki@users.sourceforge.net>
7;; Keywords: www 2ch
8
9;; This file is free software; you can redistribute it and/or modify
10;; it under the terms of the GNU General Public License as published by
11;; the Free Software Foundation; either version 2, or (at your option)
12;; any later version.
13
14;; This file is distributed in the hope that it will be useful,
15;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17;; GNU General Public License for more details.
18
19;; You should have received a copy of the GNU General Public License
20;; along with GNU Emacs; see the file COPYING.  If not, write to
21;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22;; Boston, MA 02111-1307, USA.
23
24;;; Commentary:
25
26;;
27
28;;; Code:
29(provide 'navi2ch-vars)
30
31(eval-when-compile
32  (unless (fboundp 'coding-system-list)
33    (defalias 'coding-system-list 'ignore)))
34
35(defconst navi2ch-vars-ident
36  "$Id$")
37
38(defconst navi2ch-on-xemacs (featurep 'xemacs))
39(defconst navi2ch-on-emacs21 (and (not navi2ch-on-xemacs)
40                                  (>= emacs-major-version 21)))
41
42(defvar navi2ch-coding-system
43  (or (car (memq 'cp932 (coding-system-list)))
44      (car (memq 'shift_jis-2004 (coding-system-list)))
45      'shift_jis))
46
47(defgroup navi2ch nil
48  "*Navigator for 2ch."
49  :prefix "navi2ch-"
50  :link '(url-link :tag "Navi2ch Project$B%[!<%`%Z!<%8(B" "http://navi2ch.sourceforge.net/")
51  :link '(custom-manual :tag "$B%^%K%e%"%k(B (Info)" "(navi2ch)top")
52  :group 'hypermedia
53  :group '2ch)
54
55(defgroup navi2ch-list nil
56  "*Navi2ch, list buffer."
57  :prefix "navi2ch-"
58  :group 'navi2ch)
59
60(defgroup navi2ch-board nil
61  "*Navi2ch, board buffer."
62  :prefix "navi2ch-"
63  :group 'navi2ch)
64
65(defgroup navi2ch-article nil
66  "*Navi2ch, article buffer."
67  :prefix "navi2ch-"
68  :group 'navi2ch)
69
70(defgroup navi2ch-message nil
71  "*Navi2ch, message buffer."
72  :prefix "navi2ch-"
73  :group 'navi2ch)
74
75(defgroup navi2ch-net nil
76  "*Navi2ch, networking."
77  :prefix "navi2ch-"
78  :group 'navi2ch)
79
80(defgroup navi2ch-localfile nil
81  "*Navi2ch, localbbs."
82  :prefix "navi2ch-"
83  :group 'navi2ch)
84
85;;; navi2ch variables
86(defcustom navi2ch-ask-when-exit 'y-or-n-p
87  "*non-nil $B$J$i!"(Bnavi2ch $B=*N;$N3NG'%a%C%;!<%8$rI=<($9$k!#(B"
88  :type '(choice (const :tag "yes-or-no-p $B$G3NG'(B" yes-or-no-p)
89                 (const :tag "y-or-n-p $B$G3NG'(B" y-or-n-p)
90                 (const :tag "$BJ9$+$:$K=*N;(B" nil))
91  :group 'navi2ch)
92
93(defcustom navi2ch-directory "~/.navi2ch"
94  "*$B%-%c%C%7%e%U%!%$%k$J$I$rJ]B8$9$k%G%#%l%/%H%j!#(B
95
96$B$3$N%G%#%l%/%H%j$O!"%-%c%C%7%e$NNL$K$h$C$F(B 100MB $B0J>e$KKD$i$`(B
97$B$3$H$b$"$k!#%-%c%C%7%e$N@)8B$K$D$$$F$O(B `navi2ch-board-expire-date'
98$B$r;2>H!#(B"
99  :type 'directory
100  :group 'navi2ch)
101
102(defcustom navi2ch-uudecode-program "uudecode"
103  "*uudecode $B$9$k$N$K;H$&%W%m%0%i%`!#(B"
104  :type 'string
105  :group 'navi2ch)
106
107(defcustom navi2ch-uudecode-args nil
108  "*uudecode $B$r<B9T$9$k$H$-$N0z?t!#(B"
109  :type '(repeat :tag "$B0z?t(B" string)
110  :group 'navi2ch)
111
112(defcustom navi2ch-bzip2-program "bzip2"
113  "*bzip2 $B$K;H$&%W%m%0%i%`!#(B"
114  :type 'string
115  :group 'navi2ch)
116
117(defcustom navi2ch-bzip2-args '("-d" "-c" "-q")
118  "*bzip2 $B$r8F$S=P$9$H$-$N0z?t!#(B"
119  :type '(repeat :tag "$B0z?t(B" string)
120  :group 'navi2ch)
121
122(defcustom navi2ch-init-file "init"
123  "*navi2ch $B$N=i4|2=%U%!%$%k!#(B"
124  :type 'file
125  :group 'navi2ch)
126
127(defcustom navi2ch-browse-url-browser-function nil
128  "*Navi2ch $B$+$i;HMQ$9$k%V%i%&%64X?t!#(B
129nil $B$N>l9g$O(B `browse-url-browser-function' $B$r;H$&!#(B
130\(autoload 'navi2ch-browse-url \"navi2ch\" nil t)
131\(setq navi2ch-browse-url-browser-function 'w3m-browse-url)
132\(setq browse-url-browser-function 'navi2ch-browse-url)
133$B$N$h$&$K@_Dj$7$F$*$/$H!"B>$N%Q%C%1!<%8$+$i(B Navi2ch $B$r8F$S=P$9;v$,$G$-$k!#(B"
134  :type '(choice (const :tag "browsw-url $B$K$^$+$;$k(B" nil)
135		 (function :tag "$B4X?t$r;XDj$9$k(B"))
136  :group 'navi2ch)
137
138(defcustom navi2ch-browse-url-image-program nil
139  "*`navi2ch-browse-url-image' $B$K;H$&%W%m%0%i%`!#(B"
140  :type '(choice string (const :tag "None" nil))
141  :group 'navi2ch)
142
143(defcustom navi2ch-browse-url-image-args nil
144  "*`navi2ch-browse-url-image-program' $B$KM?$($k0z?t!#(B"
145  :type '(repeat (string :tag "Argument"))
146  :group 'navi2ch)
147
148(defcustom navi2ch-browse-url-image-extentions '("jpg" "jpeg" "gif" "png")
149  "*`navi2ch-browse-url-image' $B$GI=<($9$k2hA|$N3HD%;R!#(B"
150  :type '(repeat (string :tag "$B3HD%;R(B"))
151  :group 'navi2ch)
152
153(defcustom navi2ch-base64-fill-column 64
154  "*base64 $B$G%(%s%3!<%I$5$l$?J8;zNs$r(B fill $B$9$kJ8;z?t!#(B"
155  :type 'integer
156  :group 'navi2ch)
157
158(defcustom navi2ch-2ch-host-list
159  '("cocoa.2ch.net" "pc.2ch.net" "pc2.2ch.net")
160  "*2$B$A$c$s$M$k$H$_$J$9(B host $B$N%j%9%H!#(B"
161  :type '(repeat (string :tag "$B%[%9%H(B"))
162  :group 'navi2ch)
163
164(defcustom navi2ch-use-lock t
165  "*non-nil $B$J$i!"(BNavi2ch $B$,5/F0$9$k:]$K(B `navi2ch-directory' $B$r%m%C%/$9$k!#(B"
166  :type 'boolean
167  :group 'navi2ch)
168
169(defcustom navi2ch-lock-name "lockdir"
170  "*$B%m%C%/%G%#%l%/%H%j$NL>A0!#(B
171$B@dBP%Q%9$K$9$l$P(B `navi2ch-directory' $B0J30$N>l=j$K$b%m%C%/%G%#%l%/%H%j(B
172$B$r:n$l$k$,!"AG?M$K$O$*4+$a$7$J$$!#(B"
173  :type 'string
174  :group 'navi2ch)
175
176(defcustom navi2ch-file-name-reserved-char-list '(?:)
177  "*navi2ch-expand-file-name $B$G%(%9%1!<%W$9$kJ8;z$N%j%9%H!#(B
178$B%G%U%)%k%H$O(B '(?:) $B$G!"(BURL $BCf$N(B \":\" $B$,%G%#%l%/%H%jL>$G$O(B \"%3A\" $B$K%(%9%1!<%W$5$l$k!#(B
179\"~\" $B$b%(%9%1!<%W$7$?$$$H$-$O(B '(?: ?~) $B$r;XDj$9$k!#(B"
180  :type 'regexp
181  :group 'navi2ch)
182
183(defcustom navi2ch-decode-character-references t
184  "*non-nil $B$J$i!"?tCMJ8;z;2>H!"J8;z<BBN;2>H$NI=<($r;n$_$k!#(B
185GNU Emacs 21, XEmacs 21.5 $B0J9_$G$"$l$P%G%U%)%k%H$GI=<($G$-$^$9$,!"(B
186$B$=$l0JA0$N(B Emacsen $B$G$O(B Mule-UCS $B$,I,MW$G$9!#(B(require 'un-define) $B$7$F$M!#(B"
187  :type 'boolean
188  :group 'navi2ch)
189
190(defcustom navi2ch-pgp-verify-command-line nil
191  "PGP $B=pL>$r8!>Z$9$k%3%^%s%I%i%$%s!#(B
192$B=pL>%U%!%$%kL>!"=pL>85%U%!%$%kL>$H6&$K(B `format' $B$N0z?t$H$J$k!#(B"
193  :type '(choice (const :tag "$BL58z(B" nil)
194		 (const :tag "PGP" "pgp %s %s")
195		 (const :tag "GPG" "gpg --verify %s %s")
196		 (string :tag "$B;XDj(B"))
197  :group 'navi2ch)
198
199(defcustom navi2ch-enable-status-check nil
200  "non-nil $B$J$i$P%V%i%&%6$r3+$/A0$K(B HEAD $B$G@\B3@h$r3NG'$9$k!#(B"
201  :type 'boolean
202  :group 'navi2ch)
203
204;;; list variables
205(defcustom navi2ch-list-window-width 20
206  "*$BHD0lMw%&%#%s%I%&$N2#I}!#(B"
207  :type 'integer
208  :group 'navi2ch-list)
209
210(defcustom navi2ch-list-etc-file-name "etc.txt"
211  "*$B!V$=$NB>!W%+%F%4%j$KF~$l$kHD$r=q$$$F$*$/%U%!%$%k!#(B"
212  :type 'file
213  :group 'navi2ch-list)
214
215(defcustom navi2ch-list-stay-list-window nil
216  "* non-nil $B$J$i!"HD$rA*$s$@$"$HHD0lMw%P%C%U%!$rI=<($7$?$^$^$K$9$k!#(B"
217  :type 'boolean
218  :group 'navi2ch-list)
219
220(defcustom navi2ch-list-bbstable-url nil
221  "*bbstable $B$N(B URL$B!#(B"
222  :type 'string
223  :group 'navi2ch-list)
224
225(defcustom navi2ch-list-init-open-category nil
226  "*non-nil $B$J$i!"HD0lMw$N%+%F%4%j$r%G%U%)%k%H$G$9$Y$F3+$$$FI=<($9$k!#(B"
227  :type 'boolean
228  :group 'navi2ch-list)
229
230(defcustom navi2ch-list-indent-width 2
231  "*$BHD0lMw%P%C%U%!$G$NHDL>$N%$%s%G%s%HI}!#(B"
232  :type 'integer
233  :group 'navi2ch-list)
234
235(defcustom navi2ch-list-etc-category-name "$B$=$NB>(B"
236  "*$B!V$=$NB>!W%+%F%4%j$NL>A0!#(B"
237  :type 'string
238  :group 'navi2ch-list)
239
240(defcustom navi2ch-list-global-bookmark-category-name "$B%V%C%/%^!<%/(B"
241  "*$B!V%V%C%/%^!<%/!W%+%F%4%j$NL>A0!#(B"
242  :type 'string
243  :group 'navi2ch-list)
244
245(defcustom navi2ch-list-sync-update-on-boot t
246  "*non-nil $B$J$i!"(Bnavi2ch $B5/F0;~$K>o$KHD0lMw$r<h$j$K$$$/!#(B
247nil $B$J$i$P<jF0$G99?7$7$J$$$+$.$j<h$j$K$$$+$J$$!#(B"
248  :type 'boolean
249  :group 'navi2ch-list)
250
251(defcustom navi2ch-list-load-category-list t
252  "*non-nil $B$J$i!"A02s$N=*N;;~$K3+$$$F$$$?%+%F%4%j$r5/F0;~$K:F$S3+$/!#(B"
253  :type 'boolean
254  :group 'navi2ch-list)
255
256(defcustom navi2ch-list-valid-host-regexp
257  (concat "\\("
258	  (regexp-opt '(".2ch.net" ".bbspink.com" ".machibbs.com" ".machi.to"))
259	  "\\)\\'")
260  "*$B#2$A$c$s$M$k$NHD$H$_$J$9%[%9%H$N@55,I=8=!#(B"
261  :type 'regexp
262  :group 'navi2ch-list)
263
264(defcustom navi2ch-list-invalid-host-regexp
265  (concat "\\`\\("
266	  (regexp-opt '("find.2ch.net" "info.2ch.net"))
267	  "\\)\\'")
268  "*$B#2$A$c$s$M$k$NHD$H$_$J$5$J$$%[%9%H$N@55,I=8=!#(B
269`navi2ch-list-valid-host-regexp' $B$h$jM%@h$5$l$k!#(B"
270  :type 'regexp
271  :group 'navi2ch-list)
272
273(defcustom navi2ch-list-board-id-alist nil
274  "*$BHD(B URL $B$+$i(B board-id $B$X$N(B alist$B!#(B"
275  :type '(repeat (cons (string :tag "URL") (string :tag "id")))
276  :group 'navi2ch-list)
277
278(defcustom navi2ch-list-mouse-face 'highlight
279  "$B%j%9%H%b!<%I$GHD$r%]%$%s%H$7$?;~$K;HMQ$9$k%U%'%$%9!#(B"
280  :type '(choice (face :tag "$B%U%'%$%9$r;XDj(B")
281		 (const :tag "$B%U%'%$%9$r;HMQ$7$J$$(B" nil))
282  :group 'navi2ch-list)
283
284(defcustom navi2ch-list-filter-list nil
285  "*$B%9%l%C%I$NJ,N`0lMw$r$$$8$k%U%#%k%?!<$N%j%9%H!#(B
286$B$=$l$>$l$N%U%#%k%?!<$O(B elisp $B$N4X?t$J$i$P(B $B$=$N(B symbol$B!"(B
287$B30It%W%m%0%i%`$r8F$V$J$i(B
288'(\"perl\" \"2ch.pl\")
289$B$H$$$C$?46$8$N(B list $B$r@_Dj$9$k!#(B
290$BNc$($P$3$s$J46$8!#(B
291\(setq navi2ch-list-filter-list
292      '(navi2ch-filter
293        (\"perl\" \"2ch.pl\")
294        (\"perl\" \"filter-with-board.pl\" \"-b\" board)
295        ))"
296  :type '(repeat sexp)
297  :group 'navi2ch-list)
298
299(defcustom navi2ch-list-moved-board-alist nil
300  "*$B0\E>$7$?HD$N?75l(B URL $B$N(B alist$B!#(B
301http://pc.2ch.net/unix/ $B$,(B http://pc3.2ch.net/unix/ $B$K0\E>$7$?>l9g!"(B
302\((\"http://pc.2ch.net/unix/\" . \"http://pc3.2ch.net/unix/\"))
303$B$N$h$&$K;XDj$9$k!#(B"
304  :type '(alist :key-type (string :tag "$B0\E>A0$N(B URL")
305		:value-type (string :tag "$B0\E>8e$N(B URL"))
306  :group 'navi2ch-list)
307
308(defcustom navi2ch-list-display-board-id-p t
309  "*$BHD0lMw$KHD(BID$B$rI=<($9$k$+$I$&$+!#(B
310non-nil $B$J$i$PHD(BID$B$rI=<($9$k!#(B"
311  :type 'boolean
312  :group 'navi2ch-list)
313
314(defcustom navi2ch-list-board-id-column 20
315  "*$BHD(BID$B$rI=<($9$k0LCV!#(B"
316  :type 'integer
317  :group 'navi2ch-list)
318
319;;; board variables
320(defcustom navi2ch-board-max-line nil
321  "*$B%@%&%s%m!<%I$9$k(B subject.txt $B$N9T?t!#(Bnil $B$J$iA4It%@%&%s%m!<%I$9$k!#(B"
322  :type '(choice (integer :tag "$B9T?t$r;XDj(B")
323		 (const :tag "$BA4$F(B" nil))
324  :group 'navi2ch-board)
325
326(defcustom navi2ch-board-expire-date 30
327  "*$B:G8e$KJQ99$5$l$F$+$i$3$NF|?t0J>e$?$C$?%U%!%$%k$O(B expire ($B:o=|(B)$B$5$l$k!#(B
328nil $B$J$i(B expire $B$7$J$$!#(B"
329  :type '(choice (integer :tag "$BF|?t$r;XDj(B")
330		 (const :tag "expire $B$7$J$$(B" nil))
331  :group 'navi2ch-board)
332
333(defcustom navi2ch-board-expire-bookmark-p nil
334  "*expire $B$9$k$H$-$K(B bookmark $B$5$l$F$$$k%9%l$b(B expire $B$9$k$+$I$&$+!#(B
335non-nil $B$J$i$P(B expire $B$9$k!#(B"
336  :type 'boolean
337  :group 'navi2ch-board)
338
339(defcustom navi2ch-board-expire-orphan-only nil
340  "*non-nil $B$J$i%*%k%U%!%s$J%9%l$N$_$r(B expire $B$9$k!#(B
341$B%*%k%U%!%s$J%9%l$H$O!"HD$N(B subject.txt $B$K$b%0%m!<%P%k%V%C%/%^!<%/$K$b(B
342$BEPO?$5$l$F$J$$%9%l$N$3$H!#(B"
343  :type 'boolean
344  :group 'navi2ch-board)
345
346(defcustom navi2ch-board-window-height 10
347  "*$B%9%l$N0lMw$rI=<($9$k(B board window $B$N9b$5!#(B"
348  :type 'integer
349  :group 'navi2ch-board)
350
351(defcustom navi2ch-board-check-updated-article-p t
352  "*non-nil $B$J$i!"?7$7$$%l%9$,$"$C$?$+%A%'%C%/$9$k!#(B"
353  :type 'boolean
354  :group 'navi2ch-board)
355
356(defcustom navi2ch-board-view-logo-program
357  (if (eq window-system 'w32)
358      "fiber"
359    "xv")
360  "*$B%m%4$r8+$k$N$K;H$&%W%m%0%i%`!#(B"
361  :type 'file
362  :group 'navi2ch-board)
363
364(defcustom navi2ch-board-view-logo-args nil
365  "*$B%m%4$r8+$k$N$K;H$&%W%m%0%i%`$N0z?t!#(B"
366  :type '(repeat (string :tag "$B0z?t(B"))
367  :group 'navi2ch-board)
368
369(defcustom navi2ch-board-delete-old-logo t
370  "*non-nil $B$J$i!"?7$7$$%m%4$r%@%&%s%m!<%I$7$?$H$-$K8E$$%m%4$r>C$9!#(B"
371  :type 'boolean
372  :group 'navi2ch-board)
373
374(defcustom navi2ch-board-hide-updated-article nil
375  "*non-nil $B$J$i!"(Bnavi2ch-board-updated-mode $B$G(B hide $B$5$l$?%9%l%C%I$rI=<($7$J$$!#(B"
376  :type 'boolean
377  :group 'navi2ch-board)
378
379(defcustom navi2ch-bm-subject-width 50
380  "*$B3F%9%l$NBjL>$NI}!#(B"
381  :type 'integer
382  :group 'navi2ch-board)
383
384(defcustom navi2ch-bm-number-width 3
385  "*$B3F%9%l$N%9%lHV9fMs$NI}!#(B"
386  :type 'integer
387  :group 'navi2ch-board)
388
389(defcustom navi2ch-bm-mark-and-move t
390  "*$B%^!<%/$7$?$"$H$N%]%$%s%?$NF0:n!#(B
391nil $B$J$i0\F0$7$J$$(B
392non-nil $B$J$i2<$K0\F0$9$k(B
393'follow $B$J$i0JA00\F0$7$?J}8~$K0\F0$9$k(B"
394  :type '(choice (const :tag "$B0\F0$7$J$$(B" nil)
395		 (const :tag "$B2<$K0\F0(B" t)
396		 (const :tag "$B0JA00\F0$7$?J}8~$K0\F0(B" follow))
397  :group 'navi2ch-board)
398
399(defcustom navi2ch-bm-empty-subject "navi2ch: no subject"
400  "*subject $B$,L5$$$H$-$KBe$jI=<($9$k(B subject$B!#(B"
401  :type 'string
402  :group 'navi2ch-board)
403
404(defcustom navi2ch-history-max-line 100
405  "*$B%R%9%H%j$N9T?t$N@)8B!#(Bnil $B$J$i$P@)8B$7$J$$!#(B"
406  :type '(choice (integer :tag "$B:GBg$N9T?t$r;XDj(B")
407		 (const :tag "$B@)8B$7$J$$(B" nil))
408  :group 'navi2ch-board)
409
410(defcustom navi2ch-bm-stay-board-window t
411  "*non-nil $B$J$i!"%9%l$rA*$s$@$H$-$K%9%l0lMw$rI=<($7$?$^$^$K$9$k!#(B"
412  :type 'boolean
413  :group 'navi2ch-board)
414
415(defcustom navi2ch-bm-fetched-info-file "fetched.txt"
416  "*$B4{FI%9%l$N%j%9%H$rJ]B8$7$F$*$/%U%!%$%k!#(B"
417  :type 'file
418  :group 'navi2ch-board)
419
420(defcustom navi2ch-bookmark-file "bookmark2.txt"
421  "*$B%0%m!<%P%k%V%C%/%^!<%/$rJ]B8$7$F$*$/%U%!%$%k!#(B"
422  :type 'file
423  :group 'navi2ch-board)
424
425(defcustom navi2ch-bookmark-remember-order-after-sort nil
426  "*bookmark $B%b!<%I$G(B sort $B8e$N%9%lJB$S=g$r5-21$9$k$+$I$&$+!#(B
427non-nil $B$J$i$P5-21$9$k!#(B"
428  :type 'boolean
429  :group 'navi2ch-board)
430
431(defcustom navi2ch-history-file "history.txt"
432  "*$B%R%9%H%j$rJ]B8$7$F$*$/%U%!%$%k!#(B"
433  :type 'file
434  :group 'navi2ch-board)
435
436(defcustom navi2ch-board-name-from-file "From File"
437  "*$B%U%!%$%k$+$iFI$_9~$s$@%9%l$rI=$9HDL>!#(B"
438  :type 'string
439  :group 'navi2ch-board)
440
441(defcustom navi2ch-bm-mouse-face 'highlight
442  "*$BHD$G%9%l$r%]%$%s%H$7$?;~$K;HMQ$9$k%U%'%$%9!#(B"
443  :type '(choice (face :tag "$B%U%'%$%9$r;XDj(B")
444		 (const :tag "$B%U%'%$%9$r;HMQ$7$J$$(B" nil))
445  :group 'navi2ch-board)
446
447(defcustom navi2ch-bm-sort-by-state-order
448  '(("%U" . 0)
449    ("+U" . 1)
450    ("%V" . 2)
451    ("+V" . 3)
452    ("%C" . 4)
453    ("+C" . 5)
454    ("% " . 6)
455    ("+ " . 7)
456    (" U" . 8)
457    (" V" . 9)
458    (" C" . 10)
459    ("  " . 11)
460    ("=U" . 12)
461    ("=V" . 13)
462    ("=C" . 14)
463    ("= " . 15)
464    ("%D" . 16)
465    ("+D" . 17)
466    (" D" . 18)
467    ("=D" . 19))
468  "*$B>uBV$G%=!<%H$9$k$H$-$N=g=x$r7h$a$k%j%9%H!#(B"
469  :type '(list (cons (const :tag "$B>uBV(B %U" "%U") (number :tag "$B=gHV(B"))
470	       (cons (const :tag "$B>uBV(B %V" "%V") (number :tag "$B=gHV(B"))
471	       (cons (const :tag "$B>uBV(B %C" "%C") (number :tag "$B=gHV(B"))
472	       (cons (const :tag "$B>uBV(B %D" "%D") (number :tag "$B=gHV(B"))
473	       (cons (const :tag "$B>uBV(B % " "% ") (number :tag "$B=gHV(B"))
474	       (cons (const :tag "$B>uBV(B +U" "+U") (number :tag "$B=gHV(B"))
475	       (cons (const :tag "$B>uBV(B +V" "+V") (number :tag "$B=gHV(B"))
476	       (cons (const :tag "$B>uBV(B +C" "+C") (number :tag "$B=gHV(B"))
477	       (cons (const :tag "$B>uBV(B +D" "+D") (number :tag "$B=gHV(B"))
478	       (cons (const :tag "$B>uBV(B + " "+ ") (number :tag "$B=gHV(B"))
479	       (cons (const :tag "$B>uBV(B  U" " U") (number :tag "$B=gHV(B"))
480	       (cons (const :tag "$B>uBV(B  V" " V") (number :tag "$B=gHV(B"))
481	       (cons (const :tag "$B>uBV(B  C" " C") (number :tag "$B=gHV(B"))
482	       (cons (const :tag "$B>uBV(B  D" " D") (number :tag "$B=gHV(B"))
483	       (cons (const :tag "$B>uBV(B   " "  ") (number :tag "$B=gHV(B"))
484	       (cons (const :tag "$B>uBV(B =U" "=U") (number :tag "$B=gHV(B"))
485	       (cons (const :tag "$B>uBV(B =V" "=V") (number :tag "$B=gHV(B"))
486	       (cons (const :tag "$B>uBV(B =C" "=C") (number :tag "$B=gHV(B"))
487	       (cons (const :tag "$B>uBV(B =D" "=D") (number :tag "$B=gHV(B"))
488	       (cons (const :tag "$B>uBV(B = " "= ") (number :tag "$B=gHV(B")))
489  :group 'navi2ch-board)
490
491(defcustom navi2ch-board-filter-list nil
492  "*$B%9%l%C%I$N0lMw$r$$$8$k%U%#%k%?!<$N%j%9%H!#(B
493$B$=$l$>$l$N%U%#%k%?!<$O(B elisp $B$N4X?t$J$i$P(B $B$=$N(B symbol$B!"(B
494$B30It%W%m%0%i%`$r8F$V$J$i(B
495'(\"perl\" \"2ch.pl\")
496$B$H$$$C$?46$8$N(B list $B$r@_Dj$9$k!#(B
497$BNc$($P$3$s$J46$8!#(B
498\(setq navi2ch-board-filter-list
499      '(navi2ch-filter
500        (\"perl\" \"2ch.pl\")
501        (\"perl\" \"filter-with-board.pl\" \"-b\" board)
502        ))"
503  :type '(repeat sexp)
504  :group 'navi2ch-board)
505
506(defcustom navi2ch-board-check-article-update-suppression-length nil
507  "*$B%9%l$r99?7$9$k:]!"%U%#%k%?!<=hM}$r%A%'%C%/$9$k?7Ce%l%9?t!#(B
508
509$B$?$H$($P(B 10 $B$r;XDj$9$k$H!"(B
510$B%9%l$N?7Ce%l%9$,(B10$B8D0J2<$G$=$N$9$Y$F$,HsI=<($K$J$k$H$-$O!"(B
511$B?7Ce$J$7$H8+$J$5$l$k!#(B
512
513nil $B$r;XDj$9$k$H!"?7Ce%l%9$X$N%U%#%k%?!<=hM}$r%A%'%C%/$7$J$$!#(B"
514  :type '(choice (integer :tag "$B?7Ce%l%9?t(B")
515		 (const :tag "$B%A%'%C%/$7$J$$(B" nil))
516  :group 'navi2ch-board)
517
518(defcustom navi2ch-board-insert-subject-with-diff nil
519  "*non-nil $B$J$i!"(BBoard $B%b!<%I$N%l%9?tMs$K%l%9$NA}2C?t$rI=<($9$k!#(B"
520  :type 'boolean
521  :group 'navi2ch-board)
522
523(defcustom navi2ch-board-insert-subject-with-unread nil
524  "*non-nil $B$J$i!"(BBoard $B%b!<%I$N%l%9?tMs$K%l%9$NL$FI?t$rI=<($9$k!#(B"
525  :type 'boolean
526  :group 'navi2ch-board)
527
528(defcustom navi2ch-board-coding-system-alist
529  nil
530  "*$BHD$KBP$7$F6/@)E*$K(B coding-system $B$r;XDj$9$k0Y$N(B alist$B!#(B
531$B3FMWAG$O!"(B(BOARD-ID . CODING-SYSTEM)$B!#(B
532BOARD-ID $B$OHD(BID$B!#(B
533CODING-SYSTEM $B$O(B BOARD-ID $B$G;XDj$5$l$kHD$K;XDj$9$k(B coding-system$B!#(B"
534  :type `(repeat
535	  (cons
536	   (string :tag "$BHD(BID")
537	   (choice :tag "$BJ8;z%3!<%I(B"
538		   :value ,navi2ch-coding-system
539		   ,@(mapcar (lambda (x)
540			       (list 'const x))
541			     (coding-system-list)))))
542  :group 'navi2ch-board)
543
544;;; article variables
545(defcustom navi2ch-article-aadisplay-program
546  (if (eq window-system 'w32)
547      "notepad"
548    "aadisplay")
549  "*AA $B$rI=<($9$k$?$a$K;H$&%W%m%0%i%`!#(B"
550  :type 'string
551  :group 'navi2ch-article)
552
553(defcustom navi2ch-article-aadisplay-coding-system
554  (if (eq window-system 'w32)
555      'shift_jis-dos
556    'euc-jp-unix)
557  "*AA $B$rI=<($9$k%W%m%0%i%`$K$o$?$90l;~%U%!%$%k$N(B `coding-system'$B!#(B"
558  :type 'coding-system
559  :group 'navi2ch-article)
560
561(defcustom navi2ch-article-view-aa-function
562  (if (eq window-system 'w32)
563      'navi2ch-article-popup-dialog
564    'navi2ch-article-call-aadisplay)
565  "*AA $B$rI=<($9$k$?$a$K;H$&4X?t!#(B"
566  :type 'function
567  :group 'navi2ch-article)
568
569(defcustom navi2ch-article-enable-diff t
570  "*non-nil $B$J$i%U%!%$%k$N:9J,<hF@$,M-8z$K$J$k!#(B
571nil $B$K$9$k$H>o$K%U%!%$%kA4BN$rE>Aw$9$k!#(B"
572  :type 'boolean
573  :group 'navi2ch-article)
574
575(defcustom navi2ch-article-max-line nil
576  "*$B%@%&%s%m!<%I$9$k5-;v$N9T?t!#(Bnil $B$J$i;D$j$r$9$Y$F%@%&%s%m!<%I$9$k!#(B"
577  :type '(choice (integer :tag "$B7o?t$r;XDj(B")
578		 (const :tag "$BA4$F(B" nil))
579  :group 'navi2ch-article)
580
581(defcustom navi2ch-article-enable-fill nil
582  "*non-nil $B$J$i!"%9%l$N%a%C%;!<%8$r(B fill-region $B$9$k!#(B"
583  :type 'boolean
584  :group 'navi2ch-article)
585
586(defcustom navi2ch-article-enable-fill-list nil
587  "*fill-region $B$9$kHD$N%j%9%H!#(B"
588  :type '(repeat string)
589  :group 'navi2ch-article)
590
591(defcustom navi2ch-article-disable-fill-list nil
592  "*fill-region $B$7$J$$HD$N%j%9%H!#(B"
593  :type '(repeat string)
594  :group 'navi2ch-article)
595
596(defcustom navi2ch-article-enable-through 'ask-always
597  "*$B%9%l%C%I$N:G8e$G%9%Z!<%9$r2!$7$?$H$-$K<!$N%9%l%C%I$K0\F0$9$k$+!#(B
598nil $B$J$i0\F0$7$J$$(B
599ask-always $B$J$i0\F0$9$kA0$KI,$:<ALd$9$k(B
600ask $B$J$iL@<(E*$K0\F0$9$k;~0J30$J$i<ALd$9$k(B
601$B$=$l0J30$N(B non-nil $B$JCM$J$i2?$bJ9$+$:$K0\F0$9$k!#(B"
602  :type '(choice (const :tag "$B$$$D$G$b<ALd$9$k(B" ask-always)
603		 (const :tag "$BL@<(E*$K0\F0$9$k$H$-0J30$O<ALd$9$k(B" ask)
604		 (const :tag "$BJ9$+$:$K0\F0(B" t)
605		 (const :tag "$B0\F0$7$J$$(B" nil))
606  :group 'navi2ch-article)
607
608(defcustom navi2ch-article-through-ask-function
609  #'navi2ch-article-through-ask-y-or-n-p
610  "*$B<!$N%9%l%C%I$K0\F0$9$k$H$-$N3NG'$K;HMQ$9$k4X?t!#(B"
611  :type '(choice (const :tag "y or n $B$G3NG'(B"
612			navi2ch-article-through-ask-y-or-n-p)
613		 (const :tag "n $B$^$?$O(B p $B$G3NG'(B"
614			navi2ch-article-through-ask-n-or-p-p)
615		 (const :tag "$BD>A0$N%3%^%s%I$HF1$8$+$G3NG'(B"
616			navi2ch-article-through-ask-last-command-p))
617  :group 'navi2ch-article)
618
619(defcustom navi2ch-article-parse-field-list '(data name mail)
620  "*$B%a%C%;!<%8$N%U%#!<%k%I$N$&$A!"%Q!<%:BP>]$K$9$k$b$N$N%j%9%H!#(B
621$BCY$/$F$b$$$$$s$J$i(B '(data mail name) $B$H$+$9$k$H$$$$$+$b(B"
622  :type '(set (const :tag "$B5-;v(B" data)
623              (const :tag "$B%a!<%k(B" mail)
624              (const :tag "$BL>A0(B" name))
625  :group 'navi2ch-article)
626
627(defcustom navi2ch-article-goto-number-recenter t
628  "*non-nil $B$J$i!"(Bgoto-number $B$7$?$"$H(B recenter $B$9$k!#(B"
629  :type 'boolean
630  :group 'navi2ch-article)
631
632(defcustom navi2ch-article-new-message-range '(100 . 1)
633  "*$B%9%l$N%G%U%)%k%H$NI=<(HO0O!#=i$a$FFI$`%9%l$KE,MQ$9$k!#(B
634
635$B$?$H$($P(B '(100 5) $B$r;XDj$9$k$H!"(Bnavi2ch $B$O%9%l$N@hF,$+$i(B100$B8D!"(B
636$BKvHx$+$i(B5$B8D$N%a%C%;!<%8$@$1$r%P%C%U%!$KA^F~$7!"$=$N$"$$$@$N(B
637$B%a%C%;!<%8$K$D$$$F$O=hM}$rHt$P$9!#(B"
638  :type '(cons integer integer)
639  :group 'navi2ch-article)
640
641(defcustom navi2ch-article-exist-message-range '(1 . 100)
642  "*$B%9%l$N%G%U%)%k%H$NI=<(HO0O!#4{FI%9%l$KE,MQ$9$k!#(B"
643  :type '(cons integer integer)
644  :group 'navi2ch-article)
645
646(defcustom navi2ch-article-auto-range t
647  "*non-nil $B$J$i!"$^$@I=<($7$F$J$$%9%l%C%I$NI=<(HO0O$r>!<j$K69$a$k!#(B"
648  :type 'boolean
649  :group 'navi2ch-article)
650
651(defcustom navi2ch-article-view-range-list
652  '((1 . 50)
653    (50 . 50)
654    (1 . 100)
655    (100 . 100))
656  "*$B%9%l$NI=<(HO0O$rJQ$($k$H$-A*Br8uJd$H$7$F;H$&%j%9%H!#(B"
657  :type '(repeat (cons integer integer))
658  :group 'navi2ch-article)
659
660(defcustom navi2ch-article-header-format-function
661  'navi2ch-article-default-header-format-function
662  "*NUMBER NAME MAIL DATE $B$r0z?t$K<h$j!"%l%9$N%X%C%@$rJV$94X?t!#(B"
663  :type 'function
664  :group 'navi2ch-article)
665
666(defcustom navi2ch-article-citation-regexp
667  "^[>$B!d(B]\\($\\|[^$>$B!d(B0-9$B#0(B-$B#9(B].*\\)"
668  "*$B%l%9$N0zMQItJ,$N@55,I=8=!#(B"
669  :type 'regexp
670  :group 'navi2ch-article)
671
672(defcustom navi2ch-article-number-prefix-regexp "[>$B!d"d(B<$B!c(B][>$B!d"d(B<$B!c(B]* *"
673  "*$BF1$8%9%lFb$X$N%j%s%/$rI=$9@55,I=8=!#(B"
674  :type 'regexp
675  :group 'navi2ch-article)
676
677(defcustom navi2ch-article-number-separator-regexp " *[,$B!"(B=$B!a(B] *"
678  "*$BF1$8%9%lFb$X$N%j%s%/$N?t;z$r6h@Z$kJ8;zNs$rI=$9@55,I=8=!#(B"
679  :type 'regexp
680  :group 'navi2ch-article)
681
682(defcustom navi2ch-article-number-number-regexp
683  "\\([0-9$B#0(B-$B#9(B]+\\(-[0-9$B#0(B-$B#9(B]+\\)?\\)"
684  "*$BF1$8%9%lFb$X$N%j%s%/$N?t;z$rI=$9@55,I=8=!#(B"
685  :type 'regexp
686  :group 'navi2ch-article)
687
688(defcustom navi2ch-article-select-current-link-number-style 'auto
689  "*$B%9%lFb%j%s%/(B (>>3 $B$H$+(B) $B$r$?$I$k$H$-$NI=<(J}K!!#(B
690'popup $B$J$i$D$M$KJL%&%#%s%I%&$r(B popup $B$9$k!#(B
691'jump $B$J$i(B popup $B$;$:$K0\F0$9$k!#(B
692'auto $B$J$i<+F0$G@Z$jBX$($k!#(B"
693  :type '(choice (const :tag "Popup" popup)
694                 (const :tag "Jump" jump)
695		 (const :tag "Auto" auto))
696  :group 'navi2ch-article)
697
698;; <http://www.ietf.org/rfc/rfc2396.txt>
699;;       URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
700;;       uric          = reserved | unreserved | escaped
701;;       reserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
702;;                       "$" | ","
703;;       unreserved    = alphanum | mark
704;;       mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |
705;;                       "(" | ")"
706(defcustom navi2ch-article-url-regexp
707  "\\(h?t?tps?\\|x-localbbs\\|ftp\\|sssp\\)\\(://[-a-zA-Z0-9_.!~*';/?:@&=+$,%#]+\\)"
708  "*$B%l%9$N%F%-%9%H$N$&$A(B URL $B$H$_$J$9ItJ,$N@55,I=8=!#(B"
709  ;; "(" ")" $B$O(B URL $B$r0O$`0UL#$G;H$o$l$k>l9g$,B?$$$h$&$J$N$G4^$a$J$$(B
710  :type 'regexp
711  :group 'navi2ch-article)
712
713(defcustom navi2ch-article-link-regexp-alist
714  (if (= (regexp-opt-depth "\\(\\(\\)\\)") 1)
715      nil ;; $B%P%0;}$A(B regexp-opt-depth()
716    '(("<\\(UR[IL]:\\)?\\([^:>]+\\)>" . nil)
717      ("\\<h?t?tp:\\(//www.amazon.co.jp/exec/obidos/ASIN/[0-9A-Z]+\\)/?"
718       . "http:\\1/")
719      ("\\<h?t?tp://\\(ime\\.nu/\\)+\\([-a-zA-Z0-9_.!~*';/?:@&=+$,%#]+\\)"
720       . "http://\\2")
721      ("(h?t?tp\\(s?://[-a-zA-Z0-9_.!~*'();/?:@&=+$,%#]+\\))"
722       . "http\\1")
723      ("h?t?tp\\(s?://[-a-zA-Z0-9_.!~*'();/?:@&=+$,%#]+\\)"
724       . "http\\1")
725      ("<\\(UR[IL]:\\)?\\([a-z][-+.0-9a-z]*:[^>]*\\)>" . "\\2")))
726  "*$B3FMWAG$N(B car $B$r@55,I=8=$H$7!"%^%C%A$7$?%F%-%9%H$K(B cdr $B$X$N%j%s%/$rD%$k!#(B
727$BCV49@h$K;H$($kFC<lJ8;z$K$D$$$F$O(B `replace-match' $BEy$r;2>H!#(B
728cdr $B$,(B nil $B$N>l9g$O%j%s%/$rE=$i$J$$!#(B
729cdr $B$,4X?t$N>l9g$O%^%C%A$7$?J8;zNs$r0z?t$H$7$F8F$S=P$7!"JV5QCM$,J8;zNs(B
730$B$N>l9g!"$=$l$r%j%s%/$H$9$k!#$=$N:]!"FC<lJ8;z$O;H$($J$$!#(B
731$B%j%9%H$N@hF,$rM%@h$7!"F1$8J8;zNs$K$O0lEY$@$1%^%C%A$9$k!#(B
732`navi2ch-article-url-regexp' $B$h$jM%@h$5$l$k!#(B
733
734URL $B$8$c$J$$J*$K%j%s%/$rE=$k(B:
735'((\"\\\\=\\[\\\\(FreeBSD-[a-z]+-jp\\\\) \\\\([0-9]+\\\\)\\\\]\" .
736   \"http://home.jp.freebsd.org/cgi-bin/showmail/\\\\1/\\\\2\"))
737
738$BCV49@h$K4X?t$r;HMQ(B:
739'(\"\\\\=\\[postfix-jp: *\\\\([0-9]+\\\\)\\\\]\" .
740  (lambda (str)
741    (format \"http://www.kobitosan.net/postfix/ML/arc-2.1/msg%05d.html\"
742            (1- (string-to-number (match-string 1))))))"
743  :type '(repeat (cons (regexp :tag "$B%^%C%A$9$k@55,I=8=(B")
744		       (choice (const :tag "$B%j%s%/$rE=$i$J$$(B"
745				      :value nil)
746			       (string :tag "$BCV49$9$kJ8;zNs(B")
747			       (function :tag "$BCV49$KMxMQ$9$k4X?t(B"))))
748  :group 'navi2ch-article)
749
750(defcustom navi2ch-article-filter-list nil
751  "*$B%9%l%C%I$N5-;v$r$$$8$k%U%#%k%?!<$N%j%9%H!#(B
752$B$=$l$>$l$N%U%#%k%?!<$O(B elisp $B$N4X?t$J$i$P(B $B$=$N(B symbol$B!"(B
753$B30It%W%m%0%i%`$r8F$V$J$i(B
754'(\"perl\" \"2ch.pl\")
755$B$H$$$C$?46$8$N(B list $B$r@_Dj$9$k!#(B
756$BHD(BID$B$r0z?t$G;XDj$9$k$J$i(B board $B$H$$$&%7%s%\%k$rHDL>$rEO$7$?$$>l=j$K=q$/!#(B
757$BNc$($P$3$s$J46$8!#(B
758\(setq navi2ch-article-filter-list
759      '(navi2ch-filter
760        (\"perl\" \"2ch.pl\")
761        (\"perl\" \"filter-with-board.pl\" \"-b\" board)
762        ))
763
764$B5l7A<0$N%;%Q%l!<%?$r;HMQ$7$?(B .dat $B%U%!%$%k$r07$$$?$$>l9g!"$3$NJQ?t$K(B
765$B%7%s%\%k(B navi2ch-article-separator-filter $B$rDI2C$9$k!#(B"
766  :type '(repeat (choice (const :tag "$B5l7A<0(B .dat $BMQ%U%#%k%?(B"
767				:value navi2ch-article-separator-filter)
768			 sexp))
769  :group 'navi2ch-article)
770
771(defcustom navi2ch-article-redraw-when-goto-number t
772  "*non-nil $B$J$i!"(B`navi2ch-article-goto-number' $B$7$?$H$3$m$,HO0O30$N$H$-(B
773$B<+F0$G(B redraw $B$7$J$*$9!#(B"
774  :type 'boolean
775  :group 'navi2ch-article)
776
777(defcustom navi2ch-article-fix-range-diff 10
778  "*`navi2ch-article-fix-range' $B$7$?$H$-$KLa$k%l%9$N?t!#(B"
779  :type 'integer
780  :group 'navi2ch-article)
781
782(defcustom navi2ch-article-fix-range-when-sync t
783  "*non-nil $B$J$i!"(B`navi2ch-article-sync' $B$GHO0O30$N$H$-(B
784$B<+F0E*$K(B `navi2ch-article-view-range' $B$rJQ99$9$k!#(B"
785  :type 'boolean
786  :group 'navi2ch-article)
787
788(defcustom navi2ch-article-message-separator ?_
789  "*$B%l%9$H%l%9$N6h@Z$j$K;H$&J8;z!#(B"
790  :type 'character
791  :group 'navi2ch-article)
792
793(defcustom navi2ch-article-message-separator-width '(/ (window-width) 2)
794  "*$B%l%9$H%l%9$r6h@Z$k%F%-%9%H$N2#I}!#(B
795$BI}$r(B 80 $BJ8;z$K$7$?$$$J$i(B
796\(setq navi2ch-article-message-separator-width 80)
797window $B$NI}$$$C$Q$$$K$7$?$$$J$i(B
798\(setq navi2ch-article-message-separator-width '(window-width))
799$BEy;XDj$9$k!#(B"
800  :type 'sexp
801  :group 'navi2ch-article)
802
803(defcustom navi2ch-article-message-separator-insert-hide-number-p t
804  "*hide $B>pJs$r%l%9$H%l%9$N6h@Z$j$KI=<($9$k$+!#(B"
805  :type 'boolean
806  :group 'navi2ch-article)
807
808(defcustom navi2ch-article-message-separator-insert-trailing-newline-p t
809  "*$B%l%9$N6h@Z$j$N8e$K$b$&0l8D2~9T$rI=<($9$k$+!#(B"
810  :type 'boolean
811  :group 'navi2ch-article)
812
813(defcustom navi2ch-article-auto-expunge nil
814  "*non-nil $B$J$i!"%P%C%U%!$H$7$FJ];}$9$k%9%l$N?t$r(B
815`navi2ch-article-max-buffers' $B0J2<$KJ]$D!#$3$N@)8BCM$rD6$($?$H$-$K$O!"(B
816$B$$$A$P$s8E$$%P%C%U%!$r<+F0E*$K>C$9!#(B"
817  :type 'boolean
818  :group 'navi2ch-article)
819
820(defcustom navi2ch-article-max-buffers 20
821  "*$B%P%C%U%!$H$7$FJ];}$9$k%9%l$N:GBg?t!#(B0 $B$J$i$PL5@)8B!#(B"
822  :type '(choice (const :tag "$BL5@)8B(B" 0)
823                 (integer :tag "$B@)8BCM(B"))
824  :group 'navi2ch-article)
825
826(defcustom navi2ch-article-cleanup-white-space-after-old-br t
827  "*non-nil $B$J$i!"8E$$7A<0$N(B <br> $B$KBP1~$7$F9TF,$+$i6uGr$r<h$j=|$/!#(B
828$B$?$@$7!"$9$Y$F$N(B <br> $B$ND>8e$K6uGr$,$"$k>l9g$K8B$k!#(B"
829  :type 'boolean
830  :group 'navi2ch-article)
831
832(defcustom navi2ch-article-cleanup-trailing-whitespace t
833  "*non-nil $B$J$i!"%9%l$N3F9T$+$iKvHx$N6uGr$r<h$j=|$/!#(B"
834  :type 'boolean
835  :group 'navi2ch-article)
836
837(defcustom navi2ch-article-cleanup-trailing-newline t
838  "*non-nil $B$J$i!"%9%l$N3F%l%9$+$iKvHx$N6u9T$r<h$j=|$/!#(B"
839  :type 'boolean
840  :group 'navi2ch-article)
841
842(defcustom navi2ch-article-display-link-width '(1- (window-width))
843  "*$B%9%l$N%j%s%/@h$J$I$r(B minibuffer $B$KI=<($9$k$H$-$NJ8;zNs$N:GBgD9!#(B
844$B$3$l$h$jD9$$%F%-%9%H$O@Z$j5M$a$i$l$k!#(B
845$B?tCM$N$[$+!"(Beval $B$G?tCM$rJV$9G$0U$N(B S $B<0$r;XDj$G$-$k!#(B"
846  :type '(choice (integer :tag "$B?tCM$G;XDj(B")
847                 (sexp :tag "$B4X?t$H$+(B"))
848  :group 'navi2ch-article)
849
850(defcustom navi2ch-article-auto-decode-p nil
851  "*non-nil $B$J$i!"%9%l$N%(%s%3!<%I$5$l$?%F%-%9%H$r<+F0E83+$9$k!#(B"
852  :type 'boolean
853  :group 'navi2ch-article)
854
855(defcustom navi2ch-article-auto-decode-insert-text nil
856  "*non-nil $B$J$i!"<+F0E83+$7$?%F%-%9%H$r%P%C%U%!$KA^F~$9$k!#(B
857`navi2ch-article-auto-decode-p' $B$,(B non-nil $B$N$H$-$N$_8z2L$,$"$k!#(B"
858  :type 'boolean
859  :group 'navi2ch-article)
860
861(defcustom navi2ch-article-show-url-number 50
862  "*url $B$rI=<(!&%3%T!<$9$k:]!":G8e$N%l%9$r$$$/$DI=<($9$k$+!#(B"
863  :type 'number
864  :group 'navi2ch-article)
865
866(defcustom navi2ch-article-mouse-face 'highlight
867  "*$B%9%l$G%j%s%/$r%]%$%s%H$7$?;~$K;HMQ$9$k%U%'%$%9!#(B"
868  :type '(choice (face :tag "$B%U%'%$%9$r;XDj(B")
869		 (const :tag "$B%U%'%$%9$r;HMQ$7$J$$(B" nil))
870  :group 'navi2ch-article)
871
872(defcustom navi2ch-article-get-url-text t
873  "* non-nil $B$J$i(B `navi2ch-article-get-link-text' $B$G(B URL $B$N%j%s%/@h$rF@$k!#(B
874nil $B$N>l9g$OF1$8%9%l$NFbMF$N$_$rF@$k!#(B"
875  :type 'boolean
876  :group 'navi2ch-article)
877
878(defcustom navi2ch-article-date-format-function
879  'identity
880  "* $B%l%9$NF|IU$r%U%)!<%^%C%H$9$k4X?t!#(B
881`navi2ch-article-default-header-format-function' $B$+$i!"(BDATE $B$r0z?t(B
882$B$H$7$F8F$S=P$5$l$k!#(B"
883  :type '(choice (const :tag "$BJQ99$7$J$$(B"
884			:value identity)
885		 (const :tag "Be2ch $B$K%j%s%/$rDI2C$9$k(B"
886			:value navi2ch-article-date-format-be2ch)
887		 (function :tag "$B4X?t$r;XDj(B"))
888  :group 'navi2ch-article)
889
890(defcustom navi2ch-article-message-filter-list
891  '(navi2ch-article-message-filter-by-name
892    navi2ch-article-message-filter-by-mail
893    navi2ch-article-message-filter-by-id
894    navi2ch-article-message-filter-by-message
895    navi2ch-article-message-filter-by-subject
896    navi2ch-article-message-filter-by-hostname)
897  "*$B%l%9$r%U%#%k%?$9$k$?$a$N4X?t$N%j%9%H!#(B
898$B%j%9%H$N(B member $B$H$J$k4X?t$H$7$F$O!"(B
899$B%l%9$N(B alist $B$r0z$-?t$K<h$j!"(B
900$B%U%#%k%?8e$NJ8;zNs$b$7$/$O(B 'hide $B$+(B 'important $B$rJV$9$b$N$r;XDj$9$k!#(B
901
902$B2<5-$OL>A0Ms$,!V$[$2!W$N$H$-$K!V$"$\$\!<$s!W$KCV49$9$k$?$a$N(B
903\($B$A$g$C$H>iD9$J(B) $B4X?t$NNc!#(B
904
905\(defun my-navi2ch-article-message-filter-hoge (alist)
906  (let ((number (cdr (assq 'number alist)))
907	(name (cdr (assq 'name alist)))
908	(mail (cdr (assq 'mail alist)))
909	(date (cdr (assq 'date alist)))
910	(message (cdr (assq 'data alist))))
911    (if (equal name \"$B$[$2(B\")
912	\"$B$"$\$\!<$s(B\"
913      nil)))"
914  :type '(repeat function)
915  :group 'navi2ch-article)
916
917(defcustom navi2ch-article-message-filter-by-name-alist nil
918  "*$B%l%9$r%U%#%k%?$9$k$?$a$NL>A0$N>r7o$H!"%U%#%k%?=hM}$N(B alist$B!#(B
919
920$B>r7o$K$OJ8;zNs$+!"(B
921\($BJ8;zNs(B $B%7%s%\%k(B ...)$B$N7A<0$N%j%9%H(B($B3HD%7A<0(B)$B$r;XDj$9$k!#(B
922
923$BJ8;zNs$r;XDj$9$k$H!"(B
924$BL>A0$,$=$NJ8;zNs$r4^$`$H$-$K%U%#%k%?=hM}$,<B9T$5$l$k!#(B
925
926$B3HD%7A<0$r;XDj$9$k$H!"(B
927$B%7%s%\%k$K9g$o$;$F2<5-$NJ}K!$GL>A0$r8!::$9$k!#(B
928
929S,s	$BItJ,0lCW(B
930E,e	$B40A40lCW(B
931F,f	$B$"$$$^$$0lCW(B	($B6uGr$d2~9T$NM-L5$dB?>/$rL5;k$7!"(B
932			$B$^$?A43Q$HH>3Q$r6hJL$7$J$$ItJ,0lCW(B)
933R,r	$B@55,I=8=(B
934
935$BBgJ8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7!"(B
936$B>.J8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7$J$$!#(B
937
938$B$"$$$^$$0lCW$r>.J8;z$G;XDj$7$?>l9g$O!"$R$i$,$J$H%+%?%+%J$b6hJL$7$J$$!#(B
939
940$B%7%s%\%k$N8e$K$O%-!<%o!<%I$rDI2C$7!"(B
941$BCM$K$h$C$F%U%#%k%?>r7o$r2<5-$N$h$&$KJdB-$9$k$3$H$,$G$-$k!#(B
942
943:invert		t (non-nil)$B$r;XDj$9$k$H!"J8;zNs0lCW$N??56$r5UE>$9$k(B
944
945:board-id	$B%U%#%k%?BP>]$H$J$kHD$N(B ID $B$r;XDj$9$k(B
946:artid		$B%U%#%k%?BP>]$H$J$k%9%l%C%I$N(B ID $B$b;XDj$9$k(B
947
948:float		$B%U%#%k%?>r7o$,0lCW$7$?$H$-!"$3$N%U%#%k%?9`L\$r(B
949		`navi2ch-article-sort-message-filter-rules'$B$rL5;k$7$F(B
950		$B>o$K(B alist $B$N@hF,$K;}$C$F$/$k>l9g$O(B 1 ($B@5?tCM(B)$B$r;XDj$7!"(B
951		$B$=$N$^$^$K$9$k>l9g$O(B 0 ($BHs@5?tCM(B)$B$r;XDj$9$k(B
952
953
954$B%U%#%k%?=hM}$K$O!"J8;zNs!&%7%s%\%k!&?tCM$N$I$l$+$r;XDj$9$k!#(B
955
956$BJ8;zNs$r;XDj$9$k$H!"%l%9$,$=$NJ8;zNs$KCV$-49$o$k!#(B
957
958$B%U%#%k%?>r7o$r3HD%7A<0$G;XDj$7$F$$$?>l9g!"(B
959$BCV498e$NJ8;zNsCf$N(B \\1$B!A(B\\9 $B$*$h$S(B \\& $B$O!"0lCW$7$?J8;zNs$KE83+$5$l$k!#(B
960\\1$B!A(B\\9 $B$*$h$S(B \\& $B$N0UL#$K$D$$$F$O!"(B`replace-match'$B$r;2>H$N$3$H!#(B
961
962$B%7%s%\%k$r;XDj$9$k$H!"%7%s%\%k$K9g$o$;$F2<5-$N=hM}$,9T$o$l$k!#(B
963
964hide		$B%l%9$r1#$9(B
965important	$B%l%9$r%V%C%/%^!<%/$KEPO?$9$k(B
966
967$B?tCM$r;XDj$9$k$H!"%l%9$NF@E@$K$=$N?tCMJ,$NE@?t$r2C$($F!"(B
968$B;D$j$N%U%#%k%?$r<B9T$9$k!#(B
969
970$BNc$($P2<5-$NCM$r@_Dj$9$k$H!"(B
971$BL>A0$K!V$U$,!W$,4^$^$l$F$$$k$H%l%9$,!V$"$\$\!<$s!W$KCV$-49$o$j!"(B
972$BL>A0$K!V%[%2!W$,4^$^$l$F$$$k$H%l%9$,1#$5$l$k!#(B
973
974'((\"$B$U$,(B\" . \"$B$"$\$\!<$s(B\")
975  ((\"$B%[%2(B\" S) . hide))"
976  :type (let ((plist '(set :inline t
977			   :format "%v"
978			   (list :tag "$BJ8;zNs0lCW$N??56$r5UE>(B"
979				 :inline t
980				 :format "%{%t%}\n"
981				 :value '(:invert t))
982			   (list :tag "$BHD$r;XDj(B"
983				 :inline t
984				 (const :format ""
985					:value :board-id)
986				 (string :tag "ID")
987				 (set :inline t
988				      :format "%v"
989				      (list :tag "$B%9%l%C%I$b;XDj(B"
990					    :inline t
991					    (const :format ""
992						   :value :artid)
993					    (string :tag "ID"))))
994			   (list :tag "$B>r7o$,0lCW$7$?$H$-$N%U%#%k%?$N0LCV(B"
995				 :inline t
996				 (const :format ""
997					:value :float)
998				 (choice :value 0
999					 (const :tag "$B$=$N$^$^(B"
1000						:value 0)
1001					 (const :tag "$B@hF,$X(B"
1002						:value 1))))))
1003	  `(repeat (cons (choice :tag "$B>r7o(B"
1004				 (string)
1005				 (list :tag "$BItJ,0lCW(B"
1006				       :value ("" S)
1007				       (string)
1008				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1009					       (const :tag "$B$"$j(B"
1010						      :value S)
1011					       (const :tag "$B$J$7(B"
1012						      :value s))
1013				       ,plist)
1014				 (list :tag "$B40A40lCW(B"
1015				       :value ("" E)
1016				       (string)
1017				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1018					       (const :tag "$B$"$j(B"
1019						      :value E)
1020					       (const :tag "$B$J$7(B"
1021						      :value e))
1022				       ,plist)
1023				 (list :tag "$B$"$$$^$$0lCW(B"
1024				       :value ("" f)
1025				       (string)
1026				       (choice :tag "$BBgJ8;z$H>.J8;z!&$R$i$,$J$H%+%?%+%J$N6hJL(B"
1027					       (const :tag "$B$"$j(B"
1028						      :value F)
1029					       (const :tag "$B$J$7(B"
1030						      :value f))
1031				       ,plist)
1032				 (list :tag "$B@55,I=8=(B"
1033				       :value ("" R)
1034				       (regexp)
1035				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1036					       (const :tag "$B$"$j(B"
1037						      :value R)
1038					       (const :tag "$B$J$7(B"
1039						      :value r))
1040				       ,plist))
1041			 (choice :tag "$B=hM}(B"
1042				 (string :tag "$BCV$-49$($k(B"
1043					 :value "$B$"$\$\!<$s(B")
1044				 (const :tag "$B1#$9(B"
1045					:value hide)
1046				 (const :tag "$B%V%C%/%^!<%/$KEPO?$9$k(B"
1047					:value important)
1048				 (number :tag "$BE@?t$r2C$($k(B"
1049					 :value 0)))))
1050  :group 'navi2ch-article)
1051
1052(defcustom navi2ch-article-message-filter-by-message-alist nil
1053  "*$B%l%9$r%U%#%k%?$9$k$?$a$N%l%9K\J8$N>r7o$H!"%U%#%k%?=hM}$N(B alist$B!#(B
1054
1055$B>r7o$K$OJ8;zNs$+!"(B
1056\($BJ8;zNs(B $B%7%s%\%k(B ...)$B$N7A<0$N%j%9%H(B($B3HD%7A<0(B)$B$r;XDj$9$k!#(B
1057
1058$BJ8;zNs$r;XDj$9$k$H!"(B
1059$B%l%9K\J8$,$=$NJ8;zNs$r4^$`$H$-$K%U%#%k%?=hM}$,<B9T$5$l$k!#(B
1060
1061$B3HD%7A<0$r;XDj$9$k$H!"(B
1062$B%7%s%\%k$K9g$o$;$F2<5-$NJ}K!$G%l%9K\J8$r8!::$9$k!#(B
1063
1064S,s	$BItJ,0lCW(B
1065E,e	$B40A40lCW(B
1066F,f	$B$"$$$^$$0lCW(B	($B6uGr$d2~9T$NM-L5$dB?>/$rL5;k$7!"(B
1067			$B$^$?A43Q$HH>3Q$r6hJL$7$J$$ItJ,0lCW(B)
1068R,r	$B@55,I=8=(B
1069
1070$BBgJ8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7!"(B
1071$B>.J8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7$J$$!#(B
1072
1073$B$"$$$^$$0lCW$r>.J8;z$G;XDj$7$?>l9g$O!"$R$i$,$J$H%+%?%+%J$b6hJL$7$J$$!#(B
1074
1075$B%7%s%\%k$N8e$K$O%-!<%o!<%I$rDI2C$7!"(B
1076$BCM$K$h$C$F%U%#%k%?>r7o$r2<5-$N$h$&$KJdB-$9$k$3$H$,$G$-$k!#(B
1077
1078:invert		t (non-nil)$B$r;XDj$9$k$H!"J8;zNs0lCW$N??56$r5UE>$9$k(B
1079
1080:board-id	$B%U%#%k%?BP>]$H$J$kHD$N(B ID $B$r;XDj$9$k(B
1081:artid		$B%U%#%k%?BP>]$H$J$k%9%l%C%I$N(B ID $B$b;XDj$9$k(B
1082
1083:float		$B%U%#%k%?>r7o$,0lCW$7$?$H$-!"$3$N%U%#%k%?9`L\$r(B
1084		`navi2ch-article-sort-message-filter-rules'$B$rL5;k$7$F(B
1085		$B>o$K(B alist $B$N@hF,$K;}$C$F$/$k>l9g$O(B 1 ($B@5?tCM(B)$B$r;XDj$7!"(B
1086		$B$=$N$^$^$K$9$k>l9g$O(B 0 ($BHs@5?tCM(B)$B$r;XDj$9$k(B
1087
1088
1089$B%U%#%k%?=hM}$K$O!"J8;zNs!&%7%s%\%k!&?tCM$N$I$l$+$r;XDj$9$k!#(B
1090
1091$BJ8;zNs$r;XDj$9$k$H!"%l%9$,$=$NJ8;zNs$KCV$-49$o$k!#(B
1092
1093$B%U%#%k%?>r7o$r3HD%7A<0$G;XDj$7$F$$$?>l9g!"(B
1094$BCV498e$NJ8;zNsCf$N(B \\1$B!A(B\\9 $B$*$h$S(B \\& $B$O!"0lCW$7$?J8;zNs$KE83+$5$l$k!#(B
1095\\1$B!A(B\\9 $B$*$h$S(B \\& $B$N0UL#$K$D$$$F$O!"(B`replace-match'$B$r;2>H$N$3$H!#(B
1096
1097$B%7%s%\%k$r;XDj$9$k$H!"%7%s%\%k$K9g$o$;$F2<5-$N=hM}$,9T$o$l$k!#(B
1098
1099hide		$B%l%9$r1#$9(B
1100important	$B%l%9$r%V%C%/%^!<%/$KEPO?$9$k(B
1101
1102$B?tCM$r;XDj$9$k$H!"%l%9$NF@E@$K$=$N?tCMJ,$NE@?t$r2C$($F!"(B
1103$B;D$j$N%U%#%k%?$r<B9T$9$k!#(B
1104
1105$BNc$($P2<5-$NCM$r@_Dj$9$k$H!"(B
1106$B%l%9K\J8$K!V$U$,!W$,4^$^$l$F$$$k$H%l%9$,!V$"$\$\!<$s!W$KCV$-49$o$j!"(B
1107$B%l%9K\J8$K!V%[%2!W$,4^$^$l$F$$$k$H%l%9$,1#$5$l$k!#(B
1108
1109'((\"$B$U$,(B\" . \"$B$"$\$\!<$s(B\")
1110  ((\"$B%[%2(B\" S) . hide))"
1111  :type (let ((plist '(set :inline t
1112			   :format "%v"
1113			   (list :tag "$BJ8;zNs0lCW$N??56$r5UE>(B"
1114				 :inline t
1115				 :format "%{%t%}\n"
1116				 :value '(:invert t))
1117			   (list :tag "$BHD$r;XDj(B"
1118				 :inline t
1119				 (const :format ""
1120					:value :board-id)
1121				 (string :tag "ID")
1122				 (set :inline t
1123				      :format "%v"
1124				      (list :tag "$B%9%l%C%I$b;XDj(B"
1125					    :inline t
1126					    (const :format ""
1127						   :value :artid)
1128					    (string :tag "ID"))))
1129			   (list :tag "$B>r7o$,0lCW$7$?$H$-$N%U%#%k%?$N0LCV(B"
1130				 :inline t
1131				 (const :format ""
1132					:value :float)
1133				 (choice :value 0
1134					 (const :tag "$B$=$N$^$^(B"
1135						:value 0)
1136					 (const :tag "$B@hF,$X(B"
1137						:value 1))))))
1138	  `(repeat (cons (choice :tag "$B>r7o(B"
1139				 (string)
1140				 (list :tag "$BItJ,0lCW(B"
1141				       :value ("" S)
1142				       (string)
1143				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1144					       (const :tag "$B$"$j(B"
1145						      :value S)
1146					       (const :tag "$B$J$7(B"
1147						      :value s))
1148				       ,plist)
1149				 (list :tag "$B40A40lCW(B"
1150				       :value ("" E)
1151				       (string)
1152				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1153					       (const :tag "$B$"$j(B"
1154						      :value E)
1155					       (const :tag "$B$J$7(B"
1156						      :value e))
1157				       ,plist)
1158				 (list :tag "$B$"$$$^$$0lCW(B"
1159				       :value ("" f)
1160				       (string)
1161				       (choice :tag "$BBgJ8;z$H>.J8;z!&$R$i$,$J$H%+%?%+%J$N6hJL(B"
1162					       (const :tag "$B$"$j(B"
1163						      :value F)
1164					       (const :tag "$B$J$7(B"
1165						      :value f))
1166				       ,plist)
1167				 (list :tag "$B@55,I=8=(B"
1168				       :value ("" R)
1169				       (regexp)
1170				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1171					       (const :tag "$B$"$j(B"
1172						      :value R)
1173					       (const :tag "$B$J$7(B"
1174						      :value r))
1175				       ,plist))
1176			 (choice :tag "$B=hM}(B"
1177				 (string :tag "$BCV$-49$($k(B"
1178					 :value "$B$"$\$\!<$s(B")
1179				 (const :tag "$B1#$9(B"
1180					:value hide)
1181				 (const :tag "$B%V%C%/%^!<%/$KEPO?$9$k(B"
1182					:value important)
1183				 (number :tag "$BE@?t$r2C$($k(B"
1184					 :value 0)))))
1185  :group 'navi2ch-article)
1186
1187(defcustom navi2ch-article-message-filter-by-id-alist nil
1188  "*$B%l%9$r%U%#%k%?$9$k$?$a$N(B ID $B$N>r7o$H!"%U%#%k%?=hM}$N(B alist$B!#(B
1189
1190$B>r7o$K$OJ8;zNs$+!"(B
1191\($BJ8;zNs(B $B%7%s%\%k(B ...)$B$N7A<0$N%j%9%H(B($B3HD%7A<0(B)$B$r;XDj$9$k!#(B
1192
1193$BJ8;zNs$r;XDj$9$k$H!"(B
1194ID $B$,$=$NJ8;zNs$r4^$`$H$-$K%U%#%k%?=hM}$,<B9T$5$l$k!#(B
1195
1196$B3HD%7A<0$r;XDj$9$k$H!"(B
1197$B%7%s%\%k$K9g$o$;$F2<5-$NJ}K!$G(B ID $B$r8!::$9$k!#(B
1198
1199S,s	$BItJ,0lCW(B
1200E,e	$B40A40lCW(B
1201F,f	$B$"$$$^$$0lCW(B	($B6uGr$d2~9T$NM-L5$dB?>/$rL5;k$7!"(B
1202			$B$^$?A43Q$HH>3Q$r6hJL$7$J$$ItJ,0lCW(B)
1203R,r	$B@55,I=8=(B
1204
1205$BBgJ8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7!"(B
1206$B>.J8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7$J$$!#(B
1207
1208$B$"$$$^$$0lCW$r>.J8;z$G;XDj$7$?>l9g$O!"$R$i$,$J$H%+%?%+%J$b6hJL$7$J$$!#(B
1209
1210$B%7%s%\%k$N8e$K$O%-!<%o!<%I$rDI2C$7!"(B
1211$BCM$K$h$C$F%U%#%k%?>r7o$r2<5-$N$h$&$KJdB-$9$k$3$H$,$G$-$k!#(B
1212
1213:invert		t (non-nil)$B$r;XDj$9$k$H!"J8;zNs0lCW$N??56$r5UE>$9$k(B
1214
1215:board-id	$B%U%#%k%?BP>]$H$J$kHD$N(B ID $B$r;XDj$9$k(B
1216:artid		$B%U%#%k%?BP>]$H$J$k%9%l%C%I$N(B ID $B$b;XDj$9$k(B
1217
1218:float		$B%U%#%k%?>r7o$,0lCW$7$?$H$-!"$3$N%U%#%k%?9`L\$r(B
1219		`navi2ch-article-sort-message-filter-rules'$B$rL5;k$7$F(B
1220		$B>o$K(B alist $B$N@hF,$K;}$C$F$/$k>l9g$O(B 1 ($B@5?tCM(B)$B$r;XDj$7!"(B
1221		$B$=$N$^$^$K$9$k>l9g$O(B 0 ($BHs@5?tCM(B)$B$r;XDj$9$k(B
1222
1223
1224$B%U%#%k%?=hM}$K$O!"J8;zNs!&%7%s%\%k!&?tCM$N$I$l$+$r;XDj$9$k!#(B
1225
1226$BJ8;zNs$r;XDj$9$k$H!"%l%9$,$=$NJ8;zNs$KCV$-49$o$k!#(B
1227
1228$B%U%#%k%?>r7o$r3HD%7A<0$G;XDj$7$F$$$?>l9g!"(B
1229$BCV498e$NJ8;zNsCf$N(B \\1$B!A(B\\9 $B$*$h$S(B \\& $B$O!"0lCW$7$?J8;zNs$KE83+$5$l$k!#(B
1230\\1$B!A(B\\9 $B$*$h$S(B \\& $B$N0UL#$K$D$$$F$O!"(B`replace-match'$B$r;2>H$N$3$H!#(B
1231
1232$B%7%s%\%k$r;XDj$9$k$H!"%7%s%\%k$K9g$o$;$F2<5-$N=hM}$,9T$o$l$k!#(B
1233
1234hide		$B%l%9$r1#$9(B
1235important	$B%l%9$r%V%C%/%^!<%/$KEPO?$9$k(B
1236
1237$B?tCM$r;XDj$9$k$H!"%l%9$NF@E@$K$=$N?tCMJ,$NE@?t$r2C$($F!"(B
1238$B;D$j$N%U%#%k%?$r<B9T$9$k!#(B
1239
1240$BNc$($P2<5-$NCM$r@_Dj$9$k$H!"(B
1241ID $B$K!V(BFUga1234$B!W$,4^$^$l$F$$$k$H%l%9$,!V$"$\$\!<$s!W$KCV$-49$o$j!"(B
1242ID $B$,!V(BhoGE0987$B!W$@$H%l%9$,1#$5$l$k!#(B
1243
1244'((\"FUga1234\" . \"$B$"$\$\!<$s(B\")
1245  ((\"hoGE0987\" E) . hide))"
1246  :type (let ((plist '(set :inline t
1247			   :format "%v"
1248			   (list :tag "$BJ8;zNs0lCW$N??56$r5UE>(B"
1249				 :inline t
1250				 :format "%{%t%}\n"
1251				 :value '(:invert t))
1252			   (list :tag "$BHD$r;XDj(B"
1253				 :inline t
1254				 (const :format ""
1255					:value :board-id)
1256				 (string :tag "ID")
1257				 (set :inline t
1258				      :format "%v"
1259				      (list :tag "$B%9%l%C%I$b;XDj(B"
1260					    :inline t
1261					    (const :format ""
1262						   :value :artid)
1263					    (string :tag "ID"))))
1264			   (list :tag "$B>r7o$,0lCW$7$?$H$-$N%U%#%k%?$N0LCV(B"
1265				 :inline t
1266				 (const :format ""
1267					:value :float)
1268				 (choice :value 0
1269					 (const :tag "$B$=$N$^$^(B"
1270						:value 0)
1271					 (const :tag "$B@hF,$X(B"
1272						:value 1))))))
1273	  `(repeat (cons (choice :tag "$B>r7o(B"
1274				 (string)
1275				 (list :tag "$BItJ,0lCW(B"
1276				       :value ("" S)
1277				       (string)
1278				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1279					       (const :tag "$B$"$j(B"
1280						      :value S)
1281					       (const :tag "$B$J$7(B"
1282						      :value s))
1283				       ,plist)
1284				 (list :tag "$B40A40lCW(B"
1285				       :value ("" E)
1286				       (string)
1287				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1288					       (const :tag "$B$"$j(B"
1289						      :value E)
1290					       (const :tag "$B$J$7(B"
1291						      :value e))
1292				       ,plist)
1293				 (list :tag "$B$"$$$^$$0lCW(B"
1294				       :value ("" f)
1295				       (string)
1296				       (choice :tag "$BBgJ8;z$H>.J8;z!&$R$i$,$J$H%+%?%+%J$N6hJL(B"
1297					       (const :tag "$B$"$j(B"
1298						      :value F)
1299					       (const :tag "$B$J$7(B"
1300						      :value f))
1301				       ,plist)
1302				 (list :tag "$B@55,I=8=(B"
1303				       :value ("" R)
1304				       (regexp)
1305				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1306					       (const :tag "$B$"$j(B"
1307						      :value R)
1308					       (const :tag "$B$J$7(B"
1309						      :value r))
1310				       ,plist))
1311			 (choice :tag "$B=hM}(B"
1312				 (string :tag "$BCV$-49$($k(B"
1313					 :value "$B$"$\$\!<$s(B")
1314				 (const :tag "$B1#$9(B"
1315					:value hide)
1316				 (const :tag "$B%V%C%/%^!<%/$KEPO?$9$k(B"
1317					:value important)
1318				 (number :tag "$BE@?t$r2C$($k(B"
1319					 :value 0)))))
1320  :group 'navi2ch-article)
1321
1322(defcustom navi2ch-article-message-filter-by-mail-alist nil
1323  "*$B%l%9$r%U%#%k%?$9$k$?$a$N%a!<%kMs$N>r7o$H!"%U%#%k%?=hM}$N(B alist$B!#(B
1324
1325$B>r7o$K$OJ8;zNs$+!"(B
1326\($BJ8;zNs(B $B%7%s%\%k(B ...)$B$N7A<0$N%j%9%H(B($B3HD%7A<0(B)$B$r;XDj$9$k!#(B
1327
1328$BJ8;zNs$r;XDj$9$k$H!"(B
1329$B%a!<%kMs$,$=$NJ8;zNs$r4^$`$H$-$K%U%#%k%?=hM}$,<B9T$5$l$k!#(B
1330
1331$B3HD%7A<0$r;XDj$9$k$H!"(B
1332$B%7%s%\%k$K9g$o$;$F2<5-$NJ}K!$G%a!<%kMs$r8!::$9$k!#(B
1333
1334S,s	$BItJ,0lCW(B
1335E,e	$B40A40lCW(B
1336F,f	$B$"$$$^$$0lCW(B	($B6uGr$d2~9T$NM-L5$dB?>/$rL5;k$7!"(B
1337			$B$^$?A43Q$HH>3Q$r6hJL$7$J$$ItJ,0lCW(B)
1338R,r	$B@55,I=8=(B
1339
1340$BBgJ8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7!"(B
1341$B>.J8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7$J$$!#(B
1342
1343$B$"$$$^$$0lCW$r>.J8;z$G;XDj$7$?>l9g$O!"$R$i$,$J$H%+%?%+%J$b6hJL$7$J$$!#(B
1344
1345$B%7%s%\%k$N8e$K$O%-!<%o!<%I$rDI2C$7!"(B
1346$BCM$K$h$C$F%U%#%k%?>r7o$r2<5-$N$h$&$KJdB-$9$k$3$H$,$G$-$k!#(B
1347
1348:invert		t (non-nil)$B$r;XDj$9$k$H!"J8;zNs0lCW$N??56$r5UE>$9$k(B
1349
1350:board-id	$B%U%#%k%?BP>]$H$J$kHD$N(B ID $B$r;XDj$9$k(B
1351:artid		$B%U%#%k%?BP>]$H$J$k%9%l%C%I$N(B ID $B$b;XDj$9$k(B
1352
1353:float		$B%U%#%k%?>r7o$,0lCW$7$?$H$-!"$3$N%U%#%k%?9`L\$r(B
1354		`navi2ch-article-sort-message-filter-rules'$B$rL5;k$7$F(B
1355		$B>o$K(B alist $B$N@hF,$K;}$C$F$/$k>l9g$O(B 1 ($B@5?tCM(B)$B$r;XDj$7!"(B
1356		$B$=$N$^$^$K$9$k>l9g$O(B 0 ($BHs@5?tCM(B)$B$r;XDj$9$k(B
1357
1358
1359$B%U%#%k%?=hM}$K$O!"J8;zNs!&%7%s%\%k!&?tCM$N$I$l$+$r;XDj$9$k!#(B
1360
1361$BJ8;zNs$r;XDj$9$k$H!"%l%9$,$=$NJ8;zNs$KCV$-49$o$k!#(B
1362
1363$B%U%#%k%?>r7o$r3HD%7A<0$G;XDj$7$F$$$?>l9g!"(B
1364$BCV498e$NJ8;zNsCf$N(B \\1$B!A(B\\9 $B$*$h$S(B \\& $B$O!"0lCW$7$?J8;zNs$KE83+$5$l$k!#(B
1365\\1$B!A(B\\9 $B$*$h$S(B \\& $B$N0UL#$K$D$$$F$O!"(B`replace-match'$B$r;2>H$N$3$H!#(B
1366
1367$B%7%s%\%k$r;XDj$9$k$H!"%7%s%\%k$K9g$o$;$F2<5-$N=hM}$,9T$o$l$k!#(B
1368
1369hide		$B%l%9$r1#$9(B
1370important	$B%l%9$r%V%C%/%^!<%/$KEPO?$9$k(B
1371
1372$B?tCM$r;XDj$9$k$H!"%l%9$NF@E@$K$=$N?tCMJ,$NE@?t$r2C$($F!"(B
1373$B;D$j$N%U%#%k%?$r<B9T$9$k!#(B
1374
1375$BNc$($P2<5-$NCM$r@_Dj$9$k$H!"(B
1376$B%a!<%kMs$K!V$U$,!W$,4^$^$l$F$$$k$H%l%9$,!V$"$\$\!<$s!W$KCV$-49$o$j!"(B
1377$B%a!<%kMs$K!V%[%2!W$,4^$^$l$F$$$k$H%l%9$,1#$5$l$k!#(B
1378
1379'((\"$B$U$,(B\" . \"$B$"$\$\!<$s(B\")
1380  ((\"$B%[%2(B\" S) . hide))"
1381  :type (let ((plist '(set :inline t
1382			   :format "%v"
1383			   (list :tag "$BJ8;zNs0lCW$N??56$r5UE>(B"
1384				 :inline t
1385				 :format "%{%t%}\n"
1386				 :value '(:invert t))
1387			   (list :tag "$BHD$r;XDj(B"
1388				 :inline t
1389				 (const :format ""
1390					:value :board-id)
1391				 (string :tag "ID")
1392				 (set :inline t
1393				      :format "%v"
1394				      (list :tag "$B%9%l%C%I$b;XDj(B"
1395					    :inline t
1396					    (const :format ""
1397						   :value :artid)
1398					    (string :tag "ID"))))
1399			   (list :tag "$B>r7o$,0lCW$7$?$H$-$N%U%#%k%?$N0LCV(B"
1400				 :inline t
1401				 (const :format ""
1402					:value :float)
1403				 (choice :value 0
1404					 (const :tag "$B$=$N$^$^(B"
1405						:value 0)
1406					 (const :tag "$B@hF,$X(B"
1407						:value 1))))))
1408	  `(repeat (cons (choice :tag "$B>r7o(B"
1409				 (string)
1410				 (list :tag "$BItJ,0lCW(B"
1411				       :value ("" S)
1412				       (string)
1413				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1414					       (const :tag "$B$"$j(B"
1415						      :value S)
1416					       (const :tag "$B$J$7(B"
1417						      :value s))
1418				       ,plist)
1419				 (list :tag "$B40A40lCW(B"
1420				       :value ("" E)
1421				       (string)
1422				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1423					       (const :tag "$B$"$j(B"
1424						      :value E)
1425					       (const :tag "$B$J$7(B"
1426						      :value e))
1427				       ,plist)
1428				 (list :tag "$B$"$$$^$$0lCW(B"
1429				       :value ("" f)
1430				       (string)
1431				       (choice :tag "$BBgJ8;z$H>.J8;z!&$R$i$,$J$H%+%?%+%J$N6hJL(B"
1432					       (const :tag "$B$"$j(B"
1433						      :value F)
1434					       (const :tag "$B$J$7(B"
1435						      :value f))
1436				       ,plist)
1437				 (list :tag "$B@55,I=8=(B"
1438				       :value ("" R)
1439				       (regexp)
1440				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1441					       (const :tag "$B$"$j(B"
1442						      :value R)
1443					       (const :tag "$B$J$7(B"
1444						      :value r))
1445				       ,plist))
1446			 (choice :tag "$B=hM}(B"
1447				 (string :tag "$BCV$-49$($k(B"
1448					 :value "$B$"$\$\!<$s(B")
1449				 (const :tag "$B1#$9(B"
1450					:value hide)
1451				 (const :tag "$B%V%C%/%^!<%/$KEPO?$9$k(B"
1452					:value important)
1453				 (number :tag "$BE@?t$r2C$($k(B"
1454					 :value 0)))))
1455  :group 'navi2ch-article)
1456
1457(defcustom navi2ch-article-message-filter-by-subject-alist nil
1458  "*$B%l%9$r%U%#%k%?$9$k$?$a$N%9%l%C%I$N%?%$%H%k$N>r7o$H!"%U%#%k%?=hM}$N(B alist$B!#(B
1459
1460$B>r7o$K$OJ8;zNs$+!"(B
1461\($BJ8;zNs(B $B%7%s%\%k(B ...)$B$N7A<0$N%j%9%H(B($B3HD%7A<0(B)$B$r;XDj$9$k!#(B
1462
1463$BJ8;zNs$r;XDj$9$k$H!"(B
1464$B%9%l%C%I$N%?%$%H%k$,$=$NJ8;zNs$r4^$`$H$-$K%U%#%k%?=hM}$,<B9T$5$l$k!#(B
1465
1466$B3HD%7A<0$r;XDj$9$k$H!"(B
1467$B%7%s%\%k$K9g$o$;$F2<5-$NJ}K!$G%9%l%C%I$N%?%$%H%k$r8!::$9$k!#(B
1468
1469S,s	$BItJ,0lCW(B
1470E,e	$B40A40lCW(B
1471F,f	$B$"$$$^$$0lCW(B	($B6uGr$d2~9T$NM-L5$dB?>/$rL5;k$7!"(B
1472			$B$^$?A43Q$HH>3Q$r6hJL$7$J$$ItJ,0lCW(B)
1473R,r	$B@55,I=8=(B
1474
1475$BBgJ8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7!"(B
1476$B>.J8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7$J$$!#(B
1477
1478$B$"$$$^$$0lCW$r>.J8;z$G;XDj$7$?>l9g$O!"$R$i$,$J$H%+%?%+%J$b6hJL$7$J$$!#(B
1479
1480$B%7%s%\%k$N8e$K$O%-!<%o!<%I$rDI2C$7!"(B
1481$BCM$K$h$C$F%U%#%k%?>r7o$r2<5-$N$h$&$KJdB-$9$k$3$H$,$G$-$k!#(B
1482
1483:invert		t (non-nil)$B$r;XDj$9$k$H!"J8;zNs0lCW$N??56$r5UE>$9$k(B
1484
1485:board-id	$B%U%#%k%?BP>]$H$J$kHD$N(B ID $B$r;XDj$9$k(B
1486:artid		$B%U%#%k%?BP>]$H$J$k%9%l%C%I$N(B ID $B$b;XDj$9$k(B
1487
1488:float		$B%U%#%k%?>r7o$,0lCW$7$?$H$-!"$3$N%U%#%k%?9`L\$r(B
1489		`navi2ch-article-sort-message-filter-rules'$B$rL5;k$7$F(B
1490		$B>o$K(B alist $B$N@hF,$K;}$C$F$/$k>l9g$O(B 1 ($B@5?tCM(B)$B$r;XDj$7!"(B
1491		$B$=$N$^$^$K$9$k>l9g$O(B 0 ($BHs@5?tCM(B)$B$r;XDj$9$k(B
1492
1493
1494$B%U%#%k%?=hM}$K$O!"J8;zNs!&%7%s%\%k!&?tCM$N$I$l$+$r;XDj$9$k!#(B
1495
1496$BJ8;zNs$r;XDj$9$k$H!"%l%9$,$=$NJ8;zNs$KCV$-49$o$k!#(B
1497
1498$B%U%#%k%?>r7o$r3HD%7A<0$G;XDj$7$F$$$?>l9g!"(B
1499$BCV498e$NJ8;zNsCf$N(B \\1$B!A(B\\9 $B$*$h$S(B \\& $B$O!"0lCW$7$?J8;zNs$KE83+$5$l$k!#(B
1500\\1$B!A(B\\9 $B$*$h$S(B \\& $B$N0UL#$K$D$$$F$O!"(B`replace-match'$B$r;2>H$N$3$H!#(B
1501
1502$B%7%s%\%k$r;XDj$9$k$H!"%7%s%\%k$K9g$o$;$F2<5-$N=hM}$,9T$o$l$k!#(B
1503
1504hide		$B%l%9$r1#$9(B
1505important	$B%l%9$r%V%C%/%^!<%/$KEPO?$9$k(B
1506
1507$B?tCM$r;XDj$9$k$H!"%l%9$NF@E@$K$=$N?tCMJ,$NE@?t$r2C$($F!"(B
1508$B;D$j$N%U%#%k%?$r<B9T$9$k!#(B
1509
1510$BNc$($P2<5-$NCM$r@_Dj$9$k$H!"(B
1511$B%9%l%C%I$N%?%$%H%k$K!V$U$,!W$,4^$^$l$F$$$k$H%l%9$NF@E@$,(B +1000 $B$5$l!"(B
1512$B%9%l%C%I$N%?%$%H%k$K!V%[%2!W$,4^$^$l$F$$$k$H%l%9$NF@E@$,(B -1000 $B$5$l$k!#(B
1513
1514'((\"$B$U$,(B\" . 1000)
1515  ((\"$B%[%2(B\" S) . -1000))"
1516  :type (let ((plist '(set :inline t
1517			   :format "%v"
1518			   (list :tag "$BJ8;zNs0lCW$N??56$r5UE>(B"
1519				 :inline t
1520				 :format "%{%t%}\n"
1521				 :value '(:invert t))
1522			   (list :tag "$BHD$r;XDj(B"
1523				 :inline t
1524				 (const :format ""
1525					:value :board-id)
1526				 (string :tag "ID")
1527				 (set :inline t
1528				      :format "%v"
1529				      (list :tag "$B%9%l%C%I$b;XDj(B"
1530					    :inline t
1531					    (const :format ""
1532						   :value :artid)
1533					    (string :tag "ID"))))
1534			   (list :tag "$B>r7o$,0lCW$7$?$H$-$N%U%#%k%?$N0LCV(B"
1535				 :inline t
1536				 (const :format ""
1537					:value :float)
1538				 (choice :value 0
1539					 (const :tag "$B$=$N$^$^(B"
1540						:value 0)
1541					 (const :tag "$B@hF,$X(B"
1542						:value 1))))))
1543	  `(repeat (cons (choice :tag "$B>r7o(B"
1544				 (string)
1545				 (list :tag "$BItJ,0lCW(B"
1546				       :value ("" S)
1547				       (string)
1548				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1549					       (const :tag "$B$"$j(B"
1550						      :value S)
1551					       (const :tag "$B$J$7(B"
1552						      :value s))
1553				       ,plist)
1554				 (list :tag "$B40A40lCW(B"
1555				       :value ("" E)
1556				       (string)
1557				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1558					       (const :tag "$B$"$j(B"
1559						      :value E)
1560					       (const :tag "$B$J$7(B"
1561						      :value e))
1562				       ,plist)
1563				 (list :tag "$B$"$$$^$$0lCW(B"
1564				       :value ("" f)
1565				       (string)
1566				       (choice :tag "$BBgJ8;z$H>.J8;z!&$R$i$,$J$H%+%?%+%J$N6hJL(B"
1567					       (const :tag "$B$"$j(B"
1568						      :value F)
1569					       (const :tag "$B$J$7(B"
1570						      :value f))
1571				       ,plist)
1572				 (list :tag "$B@55,I=8=(B"
1573				       :value ("" R)
1574				       (regexp)
1575				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1576					       (const :tag "$B$"$j(B"
1577						      :value R)
1578					       (const :tag "$B$J$7(B"
1579						      :value r))
1580				       ,plist))
1581			 (choice :tag "$B=hM}(B"
1582				 (string :tag "$BCV$-49$($k(B"
1583					 :value "$B$"$\$\!<$s(B")
1584				 (const :tag "$B1#$9(B"
1585					:value hide)
1586				 (const :tag "$B%V%C%/%^!<%/$KEPO?$9$k(B"
1587					:value important)
1588				 (number :tag "$BE@?t$r2C$($k(B"
1589					 :value 0)))))
1590  :group 'navi2ch-article)
1591
1592(defcustom navi2ch-article-message-filter-by-hostname-alist nil
1593  "*$B%l%9$r%U%#%k%?$9$k$?$a$N%[%9%HL>$N>r7o$H!"%U%#%k%?=hM}$N(B alist$B!#(B
1594
1595$B>r7o$K$OJ8;zNs$+!"(B
1596\($BJ8;zNs(B $B%7%s%\%k(B ...)$B$N7A<0$N%j%9%H(B($B3HD%7A<0(B)$B$r;XDj$9$k!#(B
1597
1598$BJ8;zNs$r;XDj$9$k$H!"(B
1599ID $B$,$=$NJ8;zNs$r4^$`$H$-$K%U%#%k%?=hM}$,<B9T$5$l$k!#(B
1600
1601$B3HD%7A<0$r;XDj$9$k$H!"(B
1602$B%7%s%\%k$K9g$o$;$F2<5-$NJ}K!$G(B ID $B$r8!::$9$k!#(B
1603
1604S,s	$BItJ,0lCW(B
1605E,e	$B40A40lCW(B
1606F,f	$B$"$$$^$$0lCW(B	($B6uGr$d2~9T$NM-L5$dB?>/$rL5;k$7!"(B
1607			$B$^$?A43Q$HH>3Q$r6hJL$7$J$$ItJ,0lCW(B)
1608R,r	$B@55,I=8=(B
1609
1610$BBgJ8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7!"(B
1611$B>.J8;z$N%7%s%\%k$r;XDj$9$k$HJ8;zNs$NBgJ8;z$H>.J8;z$r6hJL$7$J$$!#(B
1612
1613$B$"$$$^$$0lCW$r>.J8;z$G;XDj$7$?>l9g$O!"$R$i$,$J$H%+%?%+%J$b6hJL$7$J$$!#(B
1614
1615$B%7%s%\%k$N8e$K$O%-!<%o!<%I$rDI2C$7!"(B
1616$BCM$K$h$C$F%U%#%k%?>r7o$r2<5-$N$h$&$KJdB-$9$k$3$H$,$G$-$k!#(B
1617
1618:invert		t (non-nil)$B$r;XDj$9$k$H!"J8;zNs0lCW$N??56$r5UE>$9$k(B
1619
1620:board-id	$B%U%#%k%?BP>]$H$J$kHD$N(B ID $B$r;XDj$9$k(B
1621:artid		$B%U%#%k%?BP>]$H$J$k%9%l%C%I$N(B ID $B$b;XDj$9$k(B
1622
1623:float		$B%U%#%k%?>r7o$,0lCW$7$?$H$-!"$3$N%U%#%k%?9`L\$r(B
1624		`navi2ch-article-sort-message-filter-rules'$B$rL5;k$7$F(B
1625		$B>o$K(B alist $B$N@hF,$K;}$C$F$/$k>l9g$O(B 1 ($B@5?tCM(B)$B$r;XDj$7!"(B
1626		$B$=$N$^$^$K$9$k>l9g$O(B 0 ($BHs@5?tCM(B)$B$r;XDj$9$k(B
1627
1628
1629$B%U%#%k%?=hM}$K$O!"J8;zNs!&%7%s%\%k!&?tCM$N$I$l$+$r;XDj$9$k!#(B
1630
1631$BJ8;zNs$r;XDj$9$k$H!"%l%9$,$=$NJ8;zNs$KCV$-49$o$k!#(B
1632
1633$B%U%#%k%?>r7o$r3HD%7A<0$G;XDj$7$F$$$?>l9g!"(B
1634$BCV498e$NJ8;zNsCf$N(B \\1$B!A(B\\9 $B$*$h$S(B \\& $B$O!"0lCW$7$?J8;zNs$KE83+$5$l$k!#(B
1635\\1$B!A(B\\9 $B$*$h$S(B \\& $B$N0UL#$K$D$$$F$O!"(B`replace-match'$B$r;2>H$N$3$H!#(B
1636
1637$B%7%s%\%k$r;XDj$9$k$H!"%7%s%\%k$K9g$o$;$F2<5-$N=hM}$,9T$o$l$k!#(B
1638
1639hide		$B%l%9$r1#$9(B
1640important	$B%l%9$r%V%C%/%^!<%/$KEPO?$9$k(B
1641
1642$B?tCM$r;XDj$9$k$H!"%l%9$NF@E@$K$=$N?tCMJ,$NE@?t$r2C$($F!"(B
1643$B;D$j$N%U%#%k%?$r<B9T$9$k!#(B
1644
1645$BNc$($P2<5-$NCM$r@_Dj$9$k$H!"(B
1646$B%[%9%HL>$K!V(Bexample.jp$B!W$,4^$^$l$F$$$k$H%l%9$,!V$"$\$\!<$s!W$KCV$-49$o$j!"(B
1647$B%[%9%HL>$,!V(Bfoo.example.jp$B!W$,4^$^$l$F$$$k$H%l%9$,1#$5$l$k!#(B
1648
1649'((\"example.jp\" . \"$B$"$\$\!<$s(B\")
1650  ((\"foo.example.jp\" S) . hide))"
1651  :type (let ((plist '(set :inline t
1652			   :format "%v"
1653			   (list :tag "$BJ8;zNs0lCW$N??56$r5UE>(B"
1654				 :inline t
1655				 :format "%{%t%}\n"
1656				 :value '(:invert t))
1657			   (list :tag "$BHD$r;XDj(B"
1658				 :inline t
1659				 (const :format ""
1660					:value :board-id)
1661				 (string :tag "ID")
1662				 (set :inline t
1663				      :format "%v"
1664				      (list :tag "$B%9%l%C%I$b;XDj(B"
1665					    :inline t
1666					    (const :format ""
1667						   :value :artid)
1668					    (string :tag "ID"))))
1669			   (list :tag "$B>r7o$,0lCW$7$?$H$-$N%U%#%k%?$N0LCV(B"
1670				 :inline t
1671				 (const :format ""
1672					:value :float)
1673				 (choice :value 0
1674					 (const :tag "$B$=$N$^$^(B"
1675						:value 0)
1676					 (const :tag "$B@hF,$X(B"
1677						:value 1))))))
1678	  `(repeat (cons (choice :tag "$B>r7o(B"
1679				 (string)
1680				 (list :tag "$BItJ,0lCW(B"
1681				       :value ("" S)
1682				       (string)
1683				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1684					       (const :tag "$B$"$j(B"
1685						      :value S)
1686					       (const :tag "$B$J$7(B"
1687						      :value s))
1688				       ,plist)
1689				 (list :tag "$B40A40lCW(B"
1690				       :value ("" E)
1691				       (string)
1692				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1693					       (const :tag "$B$"$j(B"
1694						      :value E)
1695					       (const :tag "$B$J$7(B"
1696						      :value e))
1697				       ,plist)
1698				 (list :tag "$B$"$$$^$$0lCW(B"
1699				       :value ("" f)
1700				       (string)
1701				       (choice :tag "$BBgJ8;z$H>.J8;z!&$R$i$,$J$H%+%?%+%J$N6hJL(B"
1702					       (const :tag "$B$"$j(B"
1703						      :value F)
1704					       (const :tag "$B$J$7(B"
1705						      :value f))
1706				       ,plist)
1707				 (list :tag "$B@55,I=8=(B"
1708				       :value ("" R)
1709				       (regexp)
1710				       (choice :tag "$BBgJ8;z$H>.J8;z$N6hJL(B"
1711					       (const :tag "$B$"$j(B"
1712						      :value R)
1713					       (const :tag "$B$J$7(B"
1714						      :value r))
1715				       ,plist))
1716			 (choice :tag "$B=hM}(B"
1717				 (string :tag "$BCV$-49$($k(B"
1718					 :value "$B$"$\$\!<$s(B")
1719				 (const :tag "$B1#$9(B"
1720					:value hide)
1721				 (const :tag "$B%V%C%/%^!<%/$KEPO?$9$k(B"
1722					:value important)
1723				 (number :tag "$BE@?t$r2C$($k(B"
1724					 :value 0)))))
1725  :group 'navi2ch-article)
1726
1727(defcustom navi2ch-article-auto-activate-message-filter t
1728  "*non-nil $B$J$i!"%U%#%k%?5!G=$r%G%U%)%k%H$G(B on $B$K$9$k!#(B"
1729  :type 'boolean
1730  :group 'navi2ch-article)
1731
1732(defcustom navi2ch-article-use-message-filter-cache t
1733  "*non-nil $B$J$i!"%U%#%k%?=hM}$G%-%c%C%7%e$rMxMQ$9$k!#(B
1734$B%-%c%C%7%e$O!"%U%#%k%?$N%"%s%I%%>pJs$NJ];}$b7s$M$k!#(B"
1735  :type 'boolean
1736  :group 'navi2ch-article)
1737
1738(defcustom navi2ch-article-sort-message-filter-rules nil
1739  "*non-nil $B$J$i!">r7o$,0lCW$7$?%U%#%k%?9`L\$r(B alist $B$N@hF,$K;}$C$F$/$k!#(B
1740
1741$BNc$($P!"(B`navi2ch-article-message-filter-by-name-alist'$B$r(B
1742$B2<5-$NCM$K@_Dj$7$F$$$F!V%[%2!W$H$$$&L>A0Ms$N%l%9$KEv$?$C$?>l9g!"(B
1743
1744'((\"$B$U$,(B\" . \"$B$"$\$\!<$s(B\")
1745  ((\"$B%[%2(B\" S) . hide))
1746
1747`navi2ch-article-message-filter-by-name-alist'$B$NCM$O(B
1748$B>r7o$,0lCW$7$?(B '((\"$B%[%2(B\" S) . hide) $B$,@hF,$KMh$k$h$&$KJB$S49$($i$l!"(B
1749$B<!$N$h$&$KJQ99$5$l$k!#(B
1750
1751'(((\"$B%[%2(B\" S) . hide)
1752  (\"$B$U$,(B\" . \"$B$"$\$\!<$s(B\"))"
1753  :type 'boolean
1754  :group 'navi2ch-article)
1755
1756(defcustom navi2ch-article-message-replace-below nil
1757  "*$B%U%#%k%?$K$h$C$F%l%9$rCV$-49$($k$?$a$NF@E@$N$7$-$$CM$H!"(B
1758$BCV$-49$($kJ8;zNs!#(B
1759$BF@E@$,$3$NCM$h$j>.$5$$$H%l%9$,CV$-49$o$k!#(B
1760
1761$BNc$($P2<5-$NCM$r@_Dj$9$k$H!"(B
1762$B%l%9$NF@E@$,(B-1000$B$h$j>.$5$$$H%l%9$,!V$"$\$\!<$s!W$KCV$-49$o$k!#(B
1763
1764'(-1000 . \"$B$"$\$\!<$s(B\")"
1765  :type '(choice (const :tag "off"
1766			:value nil)
1767		 (cons :tag "$B@_Dj$9$k(B"
1768		       (number :tag "$B$7$-$$CM(B"
1769			       :value 0)
1770		       (string :tag "$BCV498e(B"
1771			       :value "$B$"$\$\!<$s(B")))
1772  :group 'navi2ch-article)
1773
1774(defcustom navi2ch-article-message-hide-below nil
1775  "*$B%U%#%k%?$K$h$C$F%l%9$r1#$9$?$a$NF@E@$N$7$-$$CM!#(B
1776$BF@E@$,$3$NCM$h$j>.$5$$$H%l%9$,1#$5$l$k!#(B"
1777  :type '(choice (const :tag "off"
1778			:value nil)
1779		 (number :tag "$B$7$-$$CM(B"
1780			 :value 0))
1781  :group 'navi2ch-article)
1782
1783(defcustom navi2ch-article-message-add-important-above nil
1784  "*$B%U%#%k%?$K$h$C$F%l%9$r%V%C%/%^!<%/$KEPO?$9$k$?$a$NF@E@$N$7$-$$CM!#(B
1785$BF@E@$,$3$NCM$h$jBg$-$$$H%l%9$,%V%C%/%^!<%/$KEPO?$5$l$k!#(B"
1786  :type '(choice (const :tag "off"
1787			:value nil)
1788		 (number :tag "$B$7$-$$CM(B"
1789			 :value 0))
1790  :group 'navi2ch-article)
1791
1792(defcustom navi2ch-article-save-info-wrapper-func nil
1793  "*navi2ch-article-save-info $BCf$G(B article $B$N(B wrapper $B$H$7$F;H$&4X?t!#(B"
1794  :type 'function
1795  :group 'navi2ch-article)
1796
1797(defcustom navi2ch-2ch-mimizun nil
1798  "*non-nil $B$J$i!"(B2ch$B$+$i<hF@ITG=$J2a5n%m%0$r(B $B$_$_$:$s8!:w(B http://mimizun.com
1799$B$+$i<hF@$9$k!#(B"
1800  :type 'boolean
1801  :group 'navi2ch-article)
1802
1803(defvar navi2ch-2ch-mimizun-negative-list
1804  '("livebase" "livetbs" "livenhk" "livecx")
1805  "$B$_$_$:$s$+$i<hF@$7$J$$HD$N%j%9%H(B")
1806
1807;;; message variables
1808(defcustom navi2ch-message-user-name ""
1809  "*$B%G%U%)%k%H$NL>A0!#(B"
1810  :type 'string
1811  :group 'navi2ch-message)
1812
1813(defcustom navi2ch-message-user-name-alist nil
1814  "*$BHD$4$H$N%G%U%)%k%H$NL>A0$N(B alist$B!#(B
1815
1816$B$?$H$($P<!$N$h$&$K@_Dj$7$F$*$/$H!"%M%C%H%o!<%/HD$G$O(B \"anonymous\"$B!"(B
1817$B%F%l%SHVAHHD$G$O(B \"$BL>L5$7$5$s(B\" $B$,%G%U%)%k%H$NL>A0$K$J$k!#(B
1818  '((\"network\" . \"anonymous\")
1819    (\"tv\" . \"$BL>L5$7$5$s(B\"))"
1820  :type '(repeat (cons (string :tag "$BHD(B  ") (string :tag "$BL>A0(B")))
1821  :group 'navi2ch-message)
1822
1823(defcustom navi2ch-message-mail-address ""
1824  "*$B%G%U%)%k%H$N%a!<%k%"%I%l%9!#(B"
1825  :type 'string
1826  :group 'navi2ch-message)
1827
1828(defcustom navi2ch-message-mail-address-alist nil
1829  "*$BHD$4$H$N%G%U%)%k%H$N%a!<%k%"%I%l%9$N(B alist$B!#(B
1830
1831$B$?$H$($P<!$N$h$&$K@_Dj$7$F$*$/$H!"(B
1832$B%K%e!<%9B.JsHD$G$O(B \"someone@example.com\"$B!"(BUNIX $BHD$G$O(B \"sage\" $B$,(B
1833$B%G%U%)%k%H$N%a!<%k%"%I%l%9$K$J$k!#(B
1834  '((\"news\" . \"someone@example.com\")
1835    (\"unix\" . \"sage\"))"
1836  :type '(repeat (cons (string :tag "$BHD(B  ") (string :tag "$BL>A0(B")))
1837  :group 'navi2ch-message)
1838
1839(defcustom navi2ch-message-ask-before-write nil
1840  "*non-nil $B$J$i!"%l%9$r=q$-;O$a$k$H$-$K3NG'%a%C%;!<%8$rI=<($9$k!#(B"
1841  :type '(choice (const :tag "yes-or-no-p $B$G3NG'(B" yes-or-no-p)
1842                 (const :tag "y-or-n-p $B$G3NG'(B" y-or-n-p)
1843                 (const :tag "$B3NG'$7$J$$(B" nil))
1844  :group 'navi2ch-message)
1845
1846(defcustom navi2ch-message-ask-before-send 'y-or-n-p
1847  "*non-nil $B$J$i!"=q$-9~$_Aw?.$N3NG'%a%C%;!<%8$rI=<($9$k!#(B"
1848  :type '(choice (const :tag "yes-or-no-p $B$G3NG'(B" yes-or-no-p)
1849                 (const :tag "y-or-n-p $B$G3NG'(B" y-or-n-p)
1850                 (const :tag "$B3NG'$7$J$$(B" nil))
1851  :group 'navi2ch-message)
1852
1853(defcustom navi2ch-message-ask-before-kill 'y-or-n-p
1854  "*non-nil $B$J$i!"=q$-$3$_%-%c%s%;%k$N3NG'%a%C%;!<%8$rI=<($9$k!#(B"
1855  :type '(choice (const :tag "yes-or-no-p $B$G3NG'(B" yes-or-no-p)
1856                 (const :tag "y-or-n-p $B$G3NG'(B" y-or-n-p)
1857                 (const :tag "$B3NG'$7$J$$(B" nil))
1858  :group 'navi2ch-message)
1859
1860(defcustom navi2ch-message-always-pop-message nil
1861  "*non-nil $B$J$i!"?75,%a%C%;!<%8$r:n$k%3%^%s%I$O=q$-$+$1$N%l%9$r>o$KI|85$9$k!#(B
1862nil $B$J$i!"=q$-$+$1$rGK4~$7$F$$$$$+Ld$$9g$o$;$k!#(B
1863$B=q$-$+$1$N%a%C%;!<%8$N%P%C%U%!$,;D$C$F$$$k>l9g$K$@$1M-8z!#(B"
1864  :type 'boolean
1865  :group 'navi2ch-message)
1866
1867(defcustom navi2ch-message-wait-time 3
1868  "*$B%l%9$rAw$C$?$"$H%9%l$r%j%m!<%I$9$k$^$G$NBT$A;~4V(B($BIC(B)$B!#(B"
1869  :type 'integer
1870  :group 'navi2ch-message)
1871
1872(defcustom navi2ch-message-retry-wait-time 2
1873  "*$B%l%9Aw?.$r:F;n9T$9$k$H$-$NBT$A;~4V(B($BIC(B)$B!#(B"
1874  :type 'integer
1875  :group 'navi2ch-message)
1876
1877(defcustom navi2ch-message-remember-user-name t
1878  "*non-nil $B$J$i!"Aw$C$?%l%9$NL>A0Mw$H%a!<%kMs$r3P$($F$*$/!#(B
1879$BF1$8%9%l$G<!$K%l%9$9$k$H$-$O!"$=$l$,%G%U%)%k%H$NL>A0$K$J$k!#(B"
1880  :type 'boolean
1881  :group 'navi2ch-message)
1882
1883(defcustom navi2ch-message-cite-prefix "> "
1884  "*$B0zMQ$9$k$H$-$N@\F,<-!#(B"
1885  :type 'string
1886  :group 'navi2ch-message)
1887
1888(defcustom navi2ch-message-trip nil
1889  "*trip $BMQ$NJ8;zNs!#=q$-$3$_;~$K(B From $B$N8e$m$KIU2C$5$l$k!#(B"
1890  :type '(choice (string :tag "trip $B$r;XDj(B")
1891		 (const :tag "trip $B$r;XDj$7$J$$(B" nil))
1892  :group 'navi2ch-message)
1893
1894(defcustom navi2ch-message-aa-prefix-key "\C-c\C-a"
1895  "*AA $B$rF~NO$9$k0Y$N(B prefix-key$B!#(B"
1896  :type 'string
1897  :group 'navi2ch-message)
1898
1899(defvar navi2ch-message-aa-default-alist
1900  '(("a" . "($B!-'%!.(B)")
1901    ("b" . "$B!3(B(`$B'%!-(B)(II(B")
1902    ("B" . "((($B!((I_$B'%(I_(B))(I6^86^8L^YL^Y(B")
1903    ("f" . "( $B!-(B_$B!5(B`)(IL0](B")
1904    ("e" . "($B"?'U(B`)")
1905    ("F" . "($B!-!<!.(B)")
1906    ("g" . "((I_$B'%(I_(B)(I:^Y'(B")
1907    ("G" . "(I6^$B(,(,(B((I_$B'%(I_(B;)$B(,(,(I?(B!")
1908    ("h" . "((I_$B'%(I_(B)(IJ'(B?")
1909    ("H" . "(;$B!-'%!.(B)(IJ'J'(B")
1910    ("i" . "((I%$B"O(I%(B)(I22(B!!")
1911    ("I" . "((I%$B#A(I%(B)(I28E2(B!!")
1912    ("j" . "((I%$B"O(I%(B)(I<^;8<^4]C^<@(B")
1913    ("k" . "(I7@$B(,(,(,(,(,(,(B((I_$B"O(I_(B)$B(,(,(,(,(,(,(B !!!!!")
1914    ("K" . "(I7@$B(,(B((I_$B"O(I_(B)$B(,(B( (I_$B"O(B)$B(,(B( $B!!(I_(B)$B(,(B($B!!!!(B)$B(,(B((I_(B $B!!(B)$B(,(B($B"O(I_(B )$B(,(B((I_$B"O(I_(B)$B(,(B!!!!")
1915    ("m" . "($B!-"O!.(B)")
1916    ("M" . "$B!3(B($B!-"&!.(B)(II(B")
1917    ("n" . "($B!1!<!1(B)$B%K%d%j%C(B")
1918    ("N" . "($B!-(B-`).(I!$B#o#O(B($B$J$s$G$@$m$&!)(B)")
1919    ("p" . "$B!J!!(I_$B'U(I_$B!K(IN_60](B")
1920    ("s" . "$B&2!J(I_$B'U(I_(Blll$B!K(I6^0](B")
1921    ("S" . "($B!-(I%$B&X(I%(B`)(I<.N^0](B")
1922    ("t" . "y=(I0(B( (I_$B'U(I_(B)(I%$B"h(B.$B!!(I@0](B")
1923    ("u" . "((I_$B'U(I_(B)(I3O0(B")
1924    ("U" . "(-$B!2(B-)(I3B@^(B"))
1925  "AA $B$rF~NO$9$k$H$-$N%-!<%P%$%s%I$H(B AA $B$N(B alist$B!#(B
1926`navi2ch-message-aa-alist' $B$+$iCM$,8+IU$+$i$J$$>l9g$O$3$C$A$+$iC5$9!#(B")
1927
1928(defcustom navi2ch-message-aa-alist nil
1929  "*AA $B$rF~NO$9$k$H$-$N%-!<%P%$%s%I$H(B AA $B$N(B alist$B!#(B
1930$B$?$H$($P!"(B((\"Z\" . \"$B#Z(BZ$B#z(Bz...\")) $B$N$h$&$K@_Dj$9$k$H!"(BMessage Mode
1931$B$G(Bprefix-key ($B%G%U%)%k%H$G$O(B (C-c C-a) $B$"$H$K(B Z $B$rF~NO$9$k$H(B
1932$B#Z(BZ$B#z(Bz... $B$HF~NO$G$-$k!#(B
1933SPC$B!"(BC-l$B!"(BC-g$B!"(BC-v$B$O%j%9%HI=<($N:]$K;HMQ$5$l$k$N$G%-!<$K$O;HMQ$7$J$$$3$H!#(B"
1934  :type '(repeat (cons string string))
1935  :group 'navi2ch-message)
1936
1937(defcustom navi2ch-message-cleanup-trailing-whitespace nil
1938  "*non-nil $B$J$i!"Aw?.$9$k%l%9$+$i9TKv$N6uGr$r<h$j=|$/!#(B"
1939  :type 'boolean
1940  :group 'navi2ch-message)
1941
1942(defcustom navi2ch-message-cleanup-trailing-newline nil
1943  "*non-nil $B$J$i!"Aw?.$9$k%l%9$+$iKvHx$N6u9T$r<h$j=|$/!#(B"
1944  :type 'boolean
1945  :group 'navi2ch-message)
1946
1947(defcustom navi2ch-message-popup-aa-width 39
1948  "*aa $B$N%j%9%H$rI=<($9$k:]$NI}!#(B"
1949  :type 'number
1950  :group 'navi2ch-message)
1951
1952(defcustom navi2ch-message-force-sync nil
1953  "*non-nil $B$J$i!"%l%9$rAw?.$7$?$"$H6/@)E*$K(B sync $B$9$k!#(B"
1954  :type 'boolean
1955  :group 'navi2ch-message)
1956
1957(defcustom navi2ch-message-save-sendlog nil
1958  "*non-nil $B$J$i!"Aw?.$7$?%l%9$N95$($r$H$k!#(B
1959Emacs $B$N%+%9%?%^%$%:%$%s%?!<%U%'%$%9$r;H$C$F$3$NCM$r(B non-nil $B$K$7$?>l9g!"(B
1960Navi2ch$B%+%F%4%j$K!VAw?.95$(!WHD$,<+F0E*$KDI2C$5$l$^$9!#(B
1961`navi2ch-init-file'$B$K(B
1962  (setq navi2ch-message-save-sendlog t)
1963$B$H=q$$$?>l9g$O!"$5$i$K(B
1964  (add-to-list 'navi2ch-list-navi2ch-category-alist
1965               navi2ch-message-sendlog-board)
1966$B$rDI2C$7!"(BNavi2ch$B%+%F%4%j$K!VAw?.95$(!WHD$rDI2C$7$F2<$5$$!#(B"
1967  :type 'boolean
1968  :group 'navi2ch-message
1969  :set (lambda (symbol value)
1970	 (when value
1971	   (eval-after-load "navi2ch"
1972	     '(add-to-list 'navi2ch-list-navi2ch-category-alist
1973			   navi2ch-message-sendlog-board)))
1974	 (set-default symbol value)))
1975
1976(defcustom navi2ch-message-sendlog-subject "$BAw?.95$((B"
1977  "*$BAw?.$7$?%l%9$rJ]B8$9$k%9%l$N%?%$%H%k!#(B"
1978  :type 'string
1979  :group 'navi2ch-message)
1980
1981(defcustom navi2ch-message-sendlog-response-limit 1000
1982  "*$BAw?.95$((B 1$B%9%l$"$?$j$N%l%9?t$N>e8B!#(Bnil $B$J$i$P@)8B$7$J$$!#(B"
1983  :type '(choice (integer :tag "$B%l%9?t$N>e8B(B")
1984		 (const :tag "$BL5@)8B(B" nil))
1985  :group 'navi2ch-message)
1986
1987(defcustom navi2ch-message-sendlog-volume-format "%s (Part %s)"
1988  "*$BAw?.95$(%9%l$rJ,3d$9$k$H$-$N%U%)!<%^%C%H!#(B
1989$B:G=i$N(B %s $B$,%9%l$N%?%$%H%k$G!"(B2$BHVL\$N(B %s $B$,%9%l$NHV9f$GCV$-49$($i$l$k!#(B"
1990  :type 'string
1991  :group 'navi2ch-message)
1992
1993(defcustom navi2ch-message-sendlog-message-format-function
1994  'navi2ch-message-sendlog-simple-message-format
1995  "*$BAw?.95$($N%l%9$r%U%)!<%^%C%H$9$k4X?t$r;XDj$9$k!#(B
1996$B0z?t$O0J2<(B:
1997\(MESSAGE SUBJECT URL BOARD ARTICLE)"
1998  :type '(choice
1999	  (const
2000	   :tag "$B%7%s%W%k$J%U%)!<%^%C%H(B"
2001	   :value navi2ch-message-sendlog-simple-message-format
2002	   :doc "Subject: $B%9%l%C%I%?%$%H%k(B\nURL: http://")
2003	  (const
2004	   :tag "$BHDL>IU$-$N%U%)!<%^%C%H(B"
2005	   :value navi2ch-message-sendlog-message-format-with-board-name
2006	   :doc "[$BHDL>(B]: $B%9%l%C%I%?%$%H%k(B\nURL: http://")
2007	  (function :tag "$B4X?t$r;XDj(B"))
2008  :group 'navi2ch-message)
2009
2010;; net variables
2011(defcustom navi2ch-net-http-proxy
2012  (if (string= (or (getenv "HTTP_PROXY") "") "")
2013      "127.0.0.1:8080"
2014    (getenv "HTTP_PROXY"))
2015  "*HTTP $B%W%m%-%7$N(B URL$B!#(B"
2016  :type '(choice (string :tag "$B%W%m%-%7$r;XDj(B")
2017		 (const :tag "$B%W%m%-%7$r;H$o$J$$(B" nil))
2018  :group 'navi2ch-net)
2019
2020(defcustom navi2ch-net-http-proxy-userid nil
2021  "*$B%W%m%-%7G'>Z$K;H$&%f!<%6L>!#(B"
2022  :type '(choice (string :tag "$B%f!<%6L>$r;XDj(B")
2023		 (const :tag "$B%f!<%6L>$r;H$o$J$$(B" nil))
2024  :group 'navi2ch-net)
2025
2026(defcustom navi2ch-net-http-proxy-password nil
2027  "*$B%W%m%-%7G'>Z$K;H$&%Q%9%o!<%I!#(B"
2028  :type '(choice (string :tag "$B%Q%9%o!<%I$r;XDj(B")
2029		 (const :tag "$B%Q%9%o!<%I$r;H$o$J$$(B" nil))
2030  :group 'navi2ch-net)
2031
2032(defcustom navi2ch-net-send-message-use-http-proxy t
2033  "*non-nil $B$J$i!"%l%9$rAw$k>l9g$J$I$G$b%W%m%-%7$r7PM3$9$k!#(B
2034$B$3$N%*%W%7%g%s$rM-8z$K$9$k$K$O!"(B`navi2ch-net-http-proxy' $B$r(B non-nil
2035$B$K@_Dj$9$k$3$H!#(B"
2036  :type 'boolean
2037  :group 'navi2ch-net)
2038
2039(defcustom navi2ch-net-http-proxy-for-send-message nil
2040  "*$B%l%9=q$-9~$_$K;H$&(B HTTP $B%W%m%-%7$N(B URL$B!#(B
2041nil $B$N$H$-$O%W%m%-%7$H$7$F(B `navi2ch-net-http-proxy' $B$,;H$o$l$k!#(B
2042`navi2ch-net-send-message-use-http-proxy' $B$,(B non-nil $B$N$H$-$N$_M-8z!#(B"
2043  :type '(choice (string :tag "$B%W%m%-%7$r;XDj(B")
2044		 (const :tag "`navi2ch-net-http-proxy' $B$HF1$8(B" nil))
2045  :group 'navi2ch-net)
2046
2047(defcustom navi2ch-net-http-proxy-userid-for-send-message nil
2048  "*$B%l%9=q$-9~$_;~$K%W%m%-%7G'>Z$K;H$&%f!<%6L>!#(B
2049`navi2ch-net-http-proxy-for-send-message' $B$,(B non-nil $B$N$H$-$N$_M-8z!#(B"
2050  :type '(choice (string :tag "$B%f!<%6L>$r;XDj(B")
2051		 (const :tag "$B%f!<%6L>$r;H$o$J$$(B" nil))
2052  :group 'navi2ch-net)
2053
2054(defcustom navi2ch-net-http-proxy-password-for-send-message nil
2055  "*$B%l%9=q$-9~$_;~$K%W%m%-%7G'>Z$K;H$&%Q%9%o!<%I!#(B
2056`navi2ch-net-http-proxy-for-send-message' $B$,(B non-nil $B$N$H$-$N$_M-8z!#(B"
2057  :type '(choice (string :tag "$B%Q%9%o!<%I$r;XDj(B")
2058		 (const :tag "$B%Q%9%o!<%I$r;H$o$J$$(B" nil))
2059  :group 'navi2ch-net)
2060
2061(defcustom navi2ch-net-force-update nil
2062  "*non-nil $B$J$i!"%U%!%$%k$r<hF@$9$k$^$($K99?7$NM-L5$r3NG'$7$J$/$J$k!#(B
2063nil $B$J$i!"99?7$5$l$F$$$J$$%U%!%$%k$NITI,MW$JE>Aw$O$7$J$$!#(B"
2064  :type 'boolean
2065  :group 'navi2ch-net)
2066
2067(defcustom navi2ch-net-save-old-file-when-aborn 'ask
2068  "*$B$"$\!<$s$,$"$C$?$H$-85$N%U%!%$%k$rJ]B8$9$k$+!#(B
2069nil $B$J$iJ]B8$7$J$$(B
2070ask $B$J$iJ]B8$9$kA0$K<ALd$9$k(B
2071$B$=$l0J30$N(B non-nil $B$JCM$J$i2?$bJ9$+$:$KJ]B8$9$k!#(B"
2072  :type '(choice (const :tag "$B<ALd$9$k(B" ask)
2073		 (const :tag "$BJ9$+$:$KJ]B8(B" t)
2074		 (const :tag "$BJ]B8$7$J$$(B" nil))
2075  :group 'navi2ch-net)
2076
2077(defcustom navi2ch-net-inherit-process-coding-system nil
2078  "*`inherit-process-coding-system' $B$N(B navi2ch $B$G$NB+G{CM!#(B"
2079  :type 'boolean
2080  :group 'navi2ch-net)
2081
2082(defcustom navi2ch-net-accept-gzip t
2083  "*non-nil $B$J$i!"%U%!%$%k<u?.$K(B GZIP $B%(%s%3!<%G%#%s%0$r;H$&!#(B"
2084  :type 'boolean
2085  :group 'navi2ch-net)
2086
2087(defcustom navi2ch-net-gunzip-program "gzip"
2088  "*gunzip $B$K;H$&%W%m%0%i%`!#(B"
2089  :type 'file
2090  :group 'navi2ch-net)
2091
2092(defcustom navi2ch-net-gunzip-args '("-d" "-c" "-q")
2093  "*gunzip $B$r8F$S=P$9$H$-$N0z?t!#(B"
2094  :type '(repeat :tag "$B0z?t(B" string)
2095  :group 'navi2ch-net)
2096
2097(defcustom navi2ch-net-enable-http11 nil
2098  "*non-nil $B$J$i!"(BHTTP/1.1 $B$r;HMQ$9$k!#(B"
2099  :type 'boolean
2100  :group 'navi2ch-net)
2101
2102(defcustom navi2ch-open-network-stream-function
2103  #'open-network-stream
2104  "*open-network-stream $B$HF1Ey$J=hM}$r$9$k4X?t!#(B
2105`open-network-stream' ($B%G%U%)%k%H(B)$B!"(B
2106`navi2ch-open-network-stream-with-retry' (operation already in progress $B2sHr(B)
2107`navi2ch-open-network-stream-via-command' ($B30It%3%^%s%I$r;HMQ(B)
2108$B$J$I$r;XDj$9$k!#(B"
2109  :type '(choice (const :tag "Emacs $B$+$iD>@\@\B3(B"
2110			open-network-stream)
2111		 (const :tag
2112			"operation already in progress $BEy$N%(%i!<$,=P$k>l9g(B"
2113			navi2ch-open-network-stream-with-retry)
2114		 (const :tag "$B%3%^%s%I7PM3$G@\B3(B"
2115			navi2ch-open-network-stream-via-command)
2116		 (function :tag "$B4X?t$r;XDj(B"))
2117  :group 'navi2ch-net)
2118
2119(defcustom navi2ch-open-network-stream-command nil
2120  "*$B%[%9%H$N%5!<%S%9$K@\B3$9$k%3%^%s%I!#(B
2121`navi2ch-open-network-stream-function' $B$,(B
2122`navi2ch-open-network-stream-via-command' $B$N>l9g$K;HMQ$5$l$k!#(B
2123$BCM$,J8;zNs$N>l9g!"$=$NJ8;zNs$H(B host service $B$r(B `format' $B$KEO$7!"$=$NJV(B
2124$B5QCM$r%7%'%k7PM3$G<B9T$9$k!#(B
2125$BCM$,4X?t$N>l9g!"(Bhost service $B$r0z?t$H$7$F8F$S=P$9!#(B
2126$B;XDj$7$?4X?t$NJV5QCM$,J8;zNs$N>l9g$O%7%'%k7PM3$G!"%j%9%H$N>l9g$OD>@\<B(B
2127$B9T$9$k!#(B
2128
2129$B$?$H$($P!"(Bssh $B7PM3$G(B netcat $B$r;H$$$?$$>l9g$O0J2<$N$$$:$l$+$N$h$&$K$9$k!#(B
2130\"ssh somehost nc %s %s\"
2131\(lambda (host service)
2132  (format \"ssh somehost nc %s %s\" host service))
2133\(lambda (host service)
2134  (list \"ssh\" \"somehost\"
2135        \"nc\" (format \"%s\" host) (format \"%s\" service)))"
2136  :type '(choice (const :tag "$BL58z(B" nil)
2137		 (const :tag "Netcat $B$r;HMQ(B"
2138			(lambda (host service)
2139			  (list "nc" (format "%s" host)
2140				(format "%s" service))))
2141		 (string :tag "$BJ8;zNs$r;XDj(B")
2142		 (function :tag "$B4X?t$r;XDj(B"))
2143  :group 'navi2ch-net)
2144
2145;;; update variables
2146(defcustom navi2ch-update-file "navi2ch-update.el"
2147  "*Navi2ch $B$N<+F099?7$KMxMQ$9$k%U%!%$%k$N%m!<%+%k%U%!%$%kL>!#(B"
2148  :type 'file
2149  :group 'navi2ch)
2150
2151(defcustom navi2ch-update-base-url
2152  "http://navi2ch.sourceforge.net/autoupdate/"
2153  "*$B<+F099?7$9$k%U%!%$%k$,$"$k>l=j$N(B BASE URL$B!#(B"
2154  :type 'string
2155  :group 'navi2ch)
2156
2157(defcustom navi2ch-update-url (concat navi2ch-update-base-url
2158				      (file-name-nondirectory
2159				       navi2ch-update-file))
2160  "*$B<+F099?7$KMxMQ$9$k%U%!%$%k$N(B URL$B!#(B"
2161  :type 'string
2162  :group 'navi2ch)
2163
2164(defcustom navi2ch-auto-update nil
2165  "*non-nil $B$J$i!"5/F0;~$K(B `navi2ch-update-file' $B$r99?7$7$F<B9T$9$k!#(B
2166$B%U%!%$%k$,<B9T$5$l$k$N$O!"(B
2167 - `navi2ch-update-file' $B$,99?7$5$l$F$$$F!"(B
2168 - `navi2ch-pgp-verify-command-line' $B$,(B non-nil $B$N>l9g$O8!>Z2DG=$G!"(B
2169 - $B$=$3$GI=<($5$l$k3NG'$9$k%a%C%;!<%8$K(B yes $B$HEz$($?$H$-(B
2170$B$N$_!#(B
2171
2172$B%d%P$$%3!<%I$,F~$C$F$$$k$H$^$:$$$N$G!"$J$k$Y$/(B pgp $B$+(B gpg $B$r%$%s%9%H!<(B
2173$B%k$7$F(B `navi2ch-pgp-verify-command-line' $B$r@_Dj$7$h$&!#(B"
2174  :type 'boolean
2175  :group 'navi2ch)
2176
2177;;; auto modify variables
2178(defcustom navi2ch-auto-modify-file t
2179  "*$B@_Dj$r<+F0E*$KJQ99$7$FJ]B8$9$k%U%!%$%k!#(B
2180t $B$J$i(B `navi2ch-init-file' $B$KJ]B8$7!"(B
2181nil $B$J$i!"(B`customize'$B$rMxMQ$7$F(B`custom-file'$B$KJ]B8$9$k!#(B
2182
2183$B$3$N%U%!%$%kC1BN$,<+F0E*$K%m!<%I$5$l$k$3$H$O$J$$$N$G!"(B
2184`navi2ch-init-file'$B0J30$N%U%!%$%k$r;XDj$7$?>l9g(B
2185\(`navi2ch-init-file'$B$r(B byte-compile $B$7$?>l9g$r4^$`(B)$B$OI,MW$K1~$8$F!"(B
2186
2187\(load navi2ch-auto-modify-file)
2188
2189$B$r(B`navi2ch-init-file'$B$KDI2C$9$k$J$I$NJ}K!$GL@<(E*$K%U%!%$%k$r(B
2190$B%m!<%I$9$k$3$H!#(B"
2191  :type '(choice (file :tag "$B%U%!%$%k(B")
2192		 (const :tag "custom-file" nil))
2193  :group 'navi2ch)
2194
2195(defcustom navi2ch-auto-modify-truncate-list-alist nil
2196  "*$B%j%9%H7?JQ?t$rJ]B8$9$k$H$-$N!"JQ?tL>$H$=$N:GBgMWAG?t$N(B alist$B!#(B
2197
2198$BNc$($P2<5-$NCM$r@_Dj$9$k$H!"(B
2199`navi2ch-article-message-filter-by-id-alist'$B$H(B
2200`navi2ch-article-message-filter-by-message-alist'$B$NMWAG$O!"(B
2201$B<+F0JQ99!&J]B8$N:]$K$=$l$>$l(B10$B8D0J2<!&(B100$B8D0J2<$K@Z$j5M$a$i$l$k!#(B
2202
2203'((navi2ch-article-message-filter-by-id-alist . 10)
2204  (navi2ch-article-message-filter-by-message-alist . 100))"
2205  :type '(repeat (cons (variable :tag "$BJQ?tL>(B")
2206		       (integer :tag "$B:GBgMWAG?t(B")))
2207  :group 'navi2ch)
2208
2209(defcustom navi2ch-icon-directory
2210  (cond ((condition-case nil
2211	     (progn
2212	       (require 'navi2ch-config)
2213	       navi2ch-config-icondir)
2214	   (error nil)))
2215	((fboundp 'locate-data-directory)
2216	 (locate-data-directory "navi2ch"))
2217	((let ((icons (expand-file-name "navi2ch/icons/"
2218					data-directory)))
2219	   (if (file-directory-p icons)
2220	       icons)))
2221	((let ((icons (expand-file-name "icons/"
2222					(file-name-directory
2223					 (locate-library "navi2ch")))))
2224	   (if (file-directory-p icons)
2225	       icons))))
2226  "* $B%"%$%3%s%U%!%$%k$,CV$+$l$?%G%#%l%/%H%j!#(Bnil $B$J$i%"%$%3%s$r;H$o$J$$!#(B"
2227  :type '(choice (directory :tag "directory") (const :tag "nil" nil))
2228  :group 'navi2ch)
2229
2230
2231;; Splash screen.
2232(defcustom navi2ch-splash-display-logo (and window-system
2233					    (or navi2ch-on-emacs21
2234						navi2ch-on-xemacs)
2235					    nil)
2236  "If it is non-nil, show graphic logo in the startup screen.
2237You can set it to a symbol `bitmap', `xbm' or `xpm' in order
2238to force the image format."
2239  :type '(radio (const :tag "Off" nil)
2240                (const :tag "On (any format)" t)
2241                (const xpm)
2242                (const xbm)
2243                (const :tag "bitmap (using BITMAP-MULE)" bitmap))
2244  :group 'navi2ch)
2245
2246(defcustom navi2ch-display-splash-screen t
2247  "*Display splash screen at start time."
2248  :type 'boolean
2249  :group 'navi2ch)
2250
2251(defcustom navi2ch-message-samba24-show nil
2252  "* non-nil $B$J$i(B $BO"B3Ej9F5,@)(B($BDL>N(BSAMBA24)$B$N7P2a;~4V%+%&%s%H%@%&%s$rI=<($9$k(B"
2253  :type 'boolean
2254  :group 'navi2ch-message)
2255
2256(defcustom navi2ch-message-samba24-wait-sleep nil
2257  "* non-nil $B$J$i(Bsamba$B5,@);~4V$N2r=|$^$G(Bsleep$B$9$k(B"
2258  :type 'boolean
2259  :group 'navi2ch-message)
2260
2261;; p2
2262(defcustom navi2ch-p2-use-p2 nil
2263  "* non-nil $B$J$i(Bp2$BMxMQ(B"
2264  :type 'boolean
2265  :group 'navi2ch)
2266
2267(defcustom navi2ch-p2-mail-address ""
2268  "* p2$B$N%a!<%k%"%I%l%9(B(ID)"
2269  :type 'string
2270  :group 'navi2ch)
2271
2272(defcustom navi2ch-p2-password ""
2273  "* p2$B$N%Q%9%o!<%I(B"
2274  :type 'string
2275  :group 'navi2ch)
2276
2277;; Mona fonts.
2278(defgroup navi2ch-mona nil
2279  "*Navi2ch, $B%b%J!<%U%)%s%H(B
2280
2281$B%b%J!<%U%)%s%H$O(B 2$B$A$c$s$M$k$N%"%9%-!<%"!<%H(B ($B0J2<(B AA) $B$r8+$k$?$a$K:n(B
2282$B$i$l$?%U%j!<$N%U%)%s%H$G$9!#(B
2283
22842$B$A$c$s$M$k$N%"%9%-!<%"!<%H$O$=$NB?$/$,%W%m%]!<%7%g%J%k%U%)%s%H$G$"$k(B
2285\$B!V(BMS P $B%4%7%C%/(B 12pt$B!W$rA[Dj$7$F$D$/$i$l$F$*$j!"(B UNIX $B$d(B Mac $B$N8GDjI}(B
2286$B%U%)%s%H$G8+$k$H$:$l$F$7$^$$$^$9!#%b%J!<%U%)%s%H$O%U%j!<$GG[I[$5$l$F$$(B
2287$B$kEl1@(B ($B$7$N$N$a(B) $B%U%)%s%H$NJ8;zI}$r(B MS P $B%4%7%C%/$K9g$o$;$?$b$N$G!"$3(B
2288$B$l$r;H$&$H(B Windows $B%f!<%68~$1$K:n$i$l$?(B AA $B$r%:%l$J$7$G8+$k$3$H$,$G$-(B
2289$B$^$9!#(B
2290
2291                              (http://monafont.sourceforge.net/ $B$h$j(B)"
2292  :prefix "navi2ch-"
2293  :link '(url-link :tag "$B%b%J!<%U%)%s%H(B $B%[!<%`%Z!<%8(B"
2294		   "http://monafont.sourceforge.net/")
2295  :group 'navi2ch
2296  :load 'navi2ch-mona)
2297
2298;; folder icons. filename relative to navi2ch-icon-directory
2299(defvar navi2ch-online-icon "plugged.xpm"
2300  "*Icon file for online state.")
2301(defvar navi2ch-offline-icon "unplugged.xpm"
2302  "*Icon file for offline state.")
2303
2304;;; hooks
2305(defvar navi2ch-hook nil)
2306(defvar navi2ch-exit-hook nil)
2307(defvar navi2ch-save-status-hook nil)
2308(defvar navi2ch-load-status-hook nil)
2309(defvar navi2ch-before-startup-hook nil)
2310(defvar navi2ch-after-startup-hook nil)
2311(defvar navi2ch-kill-emacs-hook nil)
2312(defvar navi2ch-list-mode-hook nil)
2313(defvar navi2ch-list-exit-hook nil)
2314(defvar navi2ch-list-after-sync-hook nil)
2315(defvar navi2ch-list-get-category-list-hook nil)
2316(defvar navi2ch-board-mode-hook nil)
2317(defvar navi2ch-board-exit-hook nil)
2318(defvar navi2ch-board-before-sync-hook nil)
2319(defvar navi2ch-board-after-sync-hook nil)
2320(defvar navi2ch-board-select-board-hook nil)
2321(defvar navi2ch-board-get-subject-list-hook nil)
2322(defvar navi2ch-article-mode-hook nil)
2323(defvar navi2ch-article-exit-hook nil)
2324(defvar navi2ch-article-before-sync-hook nil)
2325(defvar navi2ch-article-after-sync-hook nil)
2326(defvar navi2ch-article-arrange-message-hook nil)
2327(defvar navi2ch-article-get-message-list-hook nil)
2328(defvar navi2ch-article-next-message-hook nil)
2329(defvar navi2ch-article-previous-message-hook nil)
2330(defvar navi2ch-article-hide-message-hook nil)
2331(defvar navi2ch-article-cancel-hide-message-hook nil)
2332(defvar navi2ch-article-add-important-message-hook nil)
2333(defvar navi2ch-article-delete-important-message-hook nil)
2334(defvar navi2ch-bookmark-mode-hook nil)
2335(defvar navi2ch-bookmark-exit-hook nil)
2336(defvar navi2ch-articles-mode-hook nil)
2337(defvar navi2ch-articles-exit-hook nil)
2338(defvar navi2ch-history-mode-hook nil)
2339(defvar navi2ch-history-exit-hook nil)
2340(defvar navi2ch-search-mode-hook nil)
2341(defvar navi2ch-search-exit-hook nil)
2342(defvar navi2ch-message-mode-hook nil)
2343(defvar navi2ch-message-exit-hook nil)
2344(defvar navi2ch-message-before-send-hook nil)
2345(defvar navi2ch-message-after-send-hook nil)
2346(defvar navi2ch-message-setup-message-hook nil)
2347(defvar navi2ch-message-setup-sage-message-hook nil)
2348(defvar navi2ch-bm-mode-hook nil)
2349(defvar navi2ch-bm-select-board-hook nil)
2350(defvar navi2ch-bm-exit-hook nil)
2351(defvar navi2ch-popup-article-mode-hook nil)
2352(defvar navi2ch-popup-article-exit-hook nil)
2353(defvar navi2ch-head-mode-hook nil)
2354(defvar navi2ch-head-exit-hook nil)
2355(defvar navi2ch-mona-setup-hook nil)
2356(defvar navi2ch-mona-undo-setup-hook nil)
2357(defvar navi2ch-directory-mode-hook nil)
2358(defvar navi2ch-directory-exit-hook nil)
2359(defvar navi2ch-auto-modify-save-hook nil)
2360
2361;; load hooks
2362(defvar navi2ch-article-load-hook nil)
2363(defvar navi2ch-articles-load-hook nil)
2364(defvar navi2ch-board-misc-load-hook nil)
2365(defvar navi2ch-board-load-hook nil)
2366(defvar navi2ch-bookmark-load-hook nil)
2367(defvar navi2ch-face-load-hook nil)
2368(defvar navi2ch-head-load-hook nil)
2369(defvar navi2ch-history-load-hook nil)
2370(defvar navi2ch-list-load-hook nil)
2371(defvar navi2ch-message-load-hook nil)
2372(defvar navi2ch-mona-load-hook nil)
2373(defvar navi2ch-net-load-hook nil)
2374(defvar navi2ch-popup-article-load-hook nil)
2375(defvar navi2ch-search-load-hook nil)
2376(defvar navi2ch-util-load-hook nil)
2377(defvar navi2ch-vars-load-hook nil)
2378(defvar navi2ch-load-hook nil)
2379(defvar navi2ch-directory-load-hook nil)
2380
2381;;; errors symbols
2382(put 'navi2ch-update-failed 'error-conditions '(error navi2ch-errors navi2ch-update-failed))
2383
2384;;; global keybindings
2385;; $BJL$N>l=j$NJ}$,$$$$$s$+$J!#(B
2386(defvar navi2ch-global-map nil
2387  "navi2ch $B$N$I$N%b!<%I$G$b;H$($k(B keymap$B!#(B")
2388(unless navi2ch-global-map
2389  (let ((map (make-sparse-keymap)))
2390    (define-key map "\C-x\C-e" 'navi2ch-disabled-key) ; Navi2ch $BFb$G$OL58z$K(B
2391    (define-key map "\C-c\C-f" 'navi2ch-find-file)
2392    ;; (define-key map "\C-c\C-g" 'navi2ch-list-goto-board)
2393    (define-key map "\C-c\C-t" 'navi2ch-toggle-offline)
2394    (define-key map "\C-c\C-u" 'navi2ch-goto-url)
2395    (define-key map "\C-c\C-v" 'navi2ch-version)
2396    ;; (define-key map "\C-c1" 'navi2ch-one-pane)
2397    ;; (define-key map "\C-c2" 'navi2ch-two-pane)
2398    ;; (define-key map "\C-c3" 'navi2ch-three-pane)
2399    (define-key map "\C-c\C-o" 'navi2ch-message-jump-to-message-buffer)
2400    (define-key map "\C-c\C-n" 'navi2ch-article-forward-sticky-buffer)
2401    (define-key map "\C-c\C-p" 'navi2ch-article-backward-sticky-buffer)
2402    (define-key map "\C-c\C-l" 'navi2ch-be2ch-toggle-login)
2403    (define-key map "\C-c\C-s" 'navi2ch-search-web)
2404    (setq navi2ch-global-map map)))
2405
2406(defvar navi2ch-global-view-map nil
2407  "navi2ch $B$N(B message $B%b!<%I0J30$G;H$($k(B keymap$B!#(B")
2408(unless navi2ch-global-view-map
2409  (let ((map (make-sparse-keymap)))
2410    (set-keymap-parent map navi2ch-global-map)
2411    (suppress-keymap map t)
2412    (define-key map "1" 'navi2ch-one-pane)
2413    (define-key map "2" 'navi2ch-two-pane)
2414    (define-key map "3" 'navi2ch-three-pane)
2415    (define-key map "<" 'beginning-of-buffer)
2416    (define-key map ">" 'navi2ch-end-of-buffer)
2417    (define-key map "B" 'navi2ch-bookmark-goto-bookmark)
2418    (define-key map "g" 'navi2ch-list-goto-board)
2419    (define-key map "G" 'navi2ch-list-goto-board)
2420    (define-key map "n" 'next-line)
2421    (define-key map "p" 'previous-line)
2422    (define-key map "t" 'navi2ch-toggle-offline)
2423    (define-key map "V" 'navi2ch-version)
2424    (define-key map "\C-x\C-s" 'navi2ch-save-status)
2425    (setq navi2ch-global-view-map map)))
2426
2427(run-hooks 'navi2ch-vars-load-hook)
2428;;; navi2ch-vars.el ends here
2429