Newsgroups: fj.editor.mule,fj.editor.emacs
Path: galaxy.trc.rwcp.or.jp!coconuts.jaist!wnoc-tyo-news!infoweb-news!news.tokyo.infoweb.or.jp!fgwnews!fdmnews!flabnews!meridian!flab.fujitsu!tanaka
From: tanaka@flab.fujitsu.co.jp (Hiroshi TANAKA)
Subject: Re: [Q] view charter in GNUS
In-Reply-To: ozawa@prince.pe.u-tokyo.ac.jp's message of 24 May 1995 08:21:18 GMT
Message-ID: <TANAKA.95May25103648@ikuko.pssys.flab.fujitsu.co.jp>
Followup-To: fj.editor.mule
Sender: news@akashi.flab.fujitsu.co.jp
Nntp-Posting-Host: sayumi.pssys.flab.fujitsu.co.jp
Organization: Fujitsu Laboratories Ltd., Akashi, Japan.
References: <OZAWA.95May24172616@rose.pe.u-tokyo.ac.jp>
Date: Thu, 25 May 1995 01:37:03 GMT
Dnas-Posting-Host: ikuko.pssys.flab.fujitsu.co.jp
Lines: 152
Xref: galaxy.trc.rwcp.or.jp fj.editor.mule:283 fj.editor.emacs:5422
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.editor.emacs&nb=5422&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.

$BEDCf!w$U8&$G$9!#(B

In article <OZAWA.95May24172616@rose.pe.u-tokyo.ac.jp> ozawa@prince.pe.u-tokyo.ac.jp (OZAWA Sakuro) writes:

 >$B$*$O$:$+$7$$8B$j$G$9$,!"(Bcharter $B$r(B GNUS $B$+$i8+$kJ}K!$r65$($F$/$@$5$$!#(B
 >$B3N$+$=$N<j$N4X?t$,$"$C$?$H;W$&$N$G$9$,!"(B

gnus4.1$B$K$J$C$F!"%5!<%P$+$i(Bcharter$B$r<h$C$F$/$k%W%m%H%3%k$O%5%]!<%H$5$l(B
$B$^$7$?!J(Bnntp-request-list-newsgroups$B!K$,!"$=$l$r5/F0$9$k%$%s%?%U%'!<%9(B
$B$OMQ0U$5$l$F$$$^$;$s!#(B

 >$B$K$O$=$l$C$]$$$N$,0z$C$+$+$j$^$;$s$G$7$?!#JL$N%Q%C%1!<%8$,$"$k$N$G$7$g(B
 >$B$&$+!)(B

$B$"$k$K$O$"$j$^$9$,!"<RFb@lMQ$N%3!<%I$H%;%C%H$K$J$C$F$$$k$N$G!"(Bcharter
$B4X78$@$1H4$-=P$9$N$,LLE]$J$s$G$9$h$M!A!J>P!K(B

$B$+$D$F!"(Bgnus3.13$BMQ$K(Bcharter$B$r<h$C$F$/$k5!G=$@$1$rDI2C$7$?%Q%C%1!<%8$r(B
$B:n$C$?;v$,$"$j$^$9!J(Bfj$B$K%]%9%H$7$^$7$?!K$N$G!"$=$l$r(Bgnus 4.1$BMQ$K=q$-49(B
$B$($?$b$N$r:n$C$F$_$^$7$?!#(B
$B0J2<$r(Beval$B$7$F$+$i!"KvHx$N(BUsage$B$N$h$&$K@_Dj$7$F2<$5$$!#(B

$B$3$l$K$h$j!"8=:_$N%K%e!<%9%0%k!<%W$N(Bcharter$B$r%_%K%P%C%U%!$KI=<($9$k;v(B
$B$,$G$-$^$9!#(B

$B!t$H!";W$$$^$9!#%F%9%HITB-$J$N$G!#!#!#(B
$B!t$H$j$"$($:;n$7$F$_$F2<$5$$!#(B(_O_)

$B$J$*!"%K%e!<%9%0%k!<%W%P%C%U%!$NCf$K!"Nc$($P(B
======================================================================
  6: fj.editor.emacs                EMACS editors of different flavors.
 20: fj.editor.mule                 Discussion about Mule.
 18: fj.rec.sports.soccer           About soccer (Association Football).
======================================================================
$B$3$s$J46$8$GI=<($9$k$?$a$K$O!"B>$K$b?t2U=j$N%Q%C%A$rEv$F$kI,MW$,$"$j$^(B
$B$9!#$3$N5!G=$@$1$rH4$-=P$9$N$O$A$g$C$HLLE]$J$N$G!":#2s$O4*J[$7$F2<$5$$(B
$B$M!#(B

------------CutHere--------------CutHere--------------CutHere------------
;;
;; defvar
;;
(defvar gnus-charter-file '(("NewsHost" "~/lib/news/newsgroups.NewsHost"))
  "*Charter file used by gnus-request-list-newsgroups instead of system charter.
   Format: '((HOST1 FILE1) (HOST2 FILE2) ...)")

(defvar gnus-charter-hashtb nil
  "Hashtable for Charter info.")

;;
;; Charter functions
;;

;;
;; new functions
;;
(defun gnus-group-read-charter (arg)
  "Read charter in this newsgroup.
  If ARG is non-nil, ask newsgroup name.
  Else, current group is used."
  (interactive "P")
  (let ((group (gnus-group-group-name))) ;Newsgroup name to read.
    (if (or arg (not group))
(setq group (completing-read "[Charter] group name: "
     gnus-active-hashtb nil 'require-match)))
    (let ((charter (nth 1 (gnus-gethash group gnus-charter-hashtb))))
      (if (stringp charter)
  (message charter)
(message (format "No Charter for the Newsgroup \"%s\"" group))))))

(defun gnus-summary-read-charter (arg)
  "Read charter in this newsgroup.
  If ARG is non-nil, ask newsgroup name.
  Else, current group (last selected group) is used."
  (interactive "P")
  (let ((group gnus-newsgroup-name))
    (if (or arg (not group))
(setq group (completing-read "[Charter] group name: "
     gnus-active-hashtb nil 'require-match)))
    (let ((charter (nth 1 (gnus-gethash group gnus-charter-hashtb))))
      (if (stringp charter)
  (message charter)
(message (format "No Charter for the Newsgroup \"%s\"" group))))))

(defun gnus-read-charter ()
  "Get charter from NNTP server."
  (message "Reading Charter...")
  (let ((elm (assoc gnus-nntp-server gnus-charter-file))
ret)
    (setq gnus-charter-hashtb (gnus-make-hashtable))
    (setq ret (gnus-request-list-newsgroups))
    (if elm
(setq ret (gnus-read-charter-file (expand-file-name (nth 1 elm)) ret)))
    (if ret
(save-excursion
  (set-buffer nntp-se[Yt
  (gnus-charter-gnus-format)
  (message "Reading Charter... done"))
      (message "Cannot read Charter from NNTP server."))))

(defun gnus-read-charter-file (file add)
  "Get charter from FILE."
  (if (not (file-exists-p file))
      nil
    (save-excursion
      (set-buffer nntp-server-buffer)
      (or add
  (erase-buffer))
      (goto-char (point-max))
      (insert-file-contents file)
      (buffer-size))))

(defun gnus-charter-gnus-format ()
  "Convert charter info. to internal format."
  ;; Delete unnecessary lines.
  (goto-char (point-min))
  (delete-matching-lines "^to\\..*$")
  ;; Store active file in hashtable.
  (goto-char (point-min))
  (while
      (re-search-forward
       "^\\([^ \t]+\\)[ \t]+\\(.*\\)$"
       nil t)
    (gnus-sethash
     (buffer-substring (match-beginning 1) (match-end 1))
     (list (buffer-substring (match-beginning 1) (match-end 1))
   (buffer-substring (match-beginning 2) (match-end 2)))
     gnus-charter-hashtb)
    ))


;;
;; Usage
;;
;(add-hook 'gnus-startup-hook
;  (function
;   (lambda ()
;     (gnus-read-charter))))
;(add-hook 'gnus-group-mode-hook
;  '(lambda ()
;     (define-key gnus-group-mode-map "\C-c?" 'gnus-group-read-charter)
;     ))
;(add-hook 'gnus-summary-mode-hook
;  '(lambda ()
;     (define-key gnus-summary-mode-map "\C-c?" 'gnus-summary-read-charter)
;     ))
------------CutHere--------------CutHere--------------CutHere------------
--
Simple is BEST. (^-^)
$BIY;NDL8&5f=j(B
$BEDCf(B   $B9((B
tanaka@flab.fujitsu.CO.JP
