• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/emacs-93/emacs/lisp/obsolete/

Lines Matching defs:news

1 ;;; rnews.el --- USENET news reader for GNU Emacs
7 ;; Keywords: news
40 ;; made news-{next,previous}-group skip groups with no new messages; and
41 ;; added checking for unsubscribed groups to news-add-news-group
46 ;; added news-rotate-buffer-body
48 ;; made messages more user friendly, cleaned up news-inews
51 ;; added caesar-region, rename news-caesar-buffer-body, hacked accordingly
64 (defvar news-buffer-save)
65 (defvar news-group-name)
66 (defvar news-minor-modes)
72 (autoload 'news-reply "rnewspost"
78 (autoload 'news-mail-other-window "rnewspost"
84 (autoload 'news-post-news "rnewspost"
85 "Begin editing a new USENET news article to be posted."
88 (autoload 'news-mail-reply "rnewspost"
94 (defvar news-group-hook-alist nil
99 (defvar rmail-last-file (expand-file-name "~/mbox.news"))
102 ;(defvar news-path "/usr/spool/news/"
103 ; "The root directory below which all news files are stored.")
105 (defvar news-startup-file "$HOME/.newsrc" "Contains ~/.newsrc")
106 (defvar news-certification-file "$HOME/.news-dates" "Contains ~/.news-dates")
109 (defvar news-ignored-headers
113 (defvar news-mode-map nil)
114 (defvar news-read-first-time-p t)
115 ;; Contains the (dotified) news groups of which you are a member.
116 (defvar news-user-group-list nil)
118 (defvar news-current-news-group nil)
119 (defvar news-current-group-begin nil)
120 (defvar news-current-group-end nil)
121 (defvar news-current-certifications nil
124 (defvar news-current-certifiable nil
127 (defvar news-message-filter nil
129 formatting of the news file")
131 ;(defvar news-mode-group-string "Starting-Up"
133 (defvar news-list-of-files nil
136 (defvar news-list-of-files-possibly-bogus nil
142 (defvar news-group-article-assoc nil)
144 (defvar news-current-message-number 0 "Displayed Article Number")
145 (defvar news-total-current-group 0 "Total no of messages in group")
147 (defvar news-unsubscribe-groups ())
148 (defvar news-point-pdl () "List of visited news messages.")
149 (defvar news-no-jumps-p t)
150 (defvar news-buffer () "Buffer into which news files are read.")
152 (defmacro news-push (item ref)
155 (defmacro news-cadr (x) (list 'car (list 'cdr x)))
156 (defmacro news-cdar (x) (list 'cdr (list 'car x)))
157 (defmacro news-caddr (x) (list 'car (list 'cdr (list 'cdr x))))
158 (defmacro news-cadar (x) (list 'car (list 'cdr (list 'car x))))
159 (defmacro news-caadr (x) (list 'car (list 'car (list 'cdr x))))
160 (defmacro news-cdadr (x) (list 'cdr (list 'car (list 'cdr x))))
162 (defmacro news-wins (pfx index)
165 (defvar news-max-plausible-gap 2
170 (defun news-find-first-and-last (prefix base)
171 (and (news-wins prefix base)
172 (cons (news-find-first-or-last prefix base -1)
173 (news-find-first-or-last prefix base 1))))
175 (defmacro news-/ (a1 a2)
183 (defun news-find-first-or-last (pfx base dirn)
186 (while (news-wins pfx (+ base dirn))
188 (setq dirn (news-/ dirn 2))
190 (let ((offset (news-/ dirn 2)))
192 (if (news-wins pfx (+ base dirn offset))
194 (setq offset (news-/ offset 2))))
196 (let ((offset (* news-max-plausible-gap original-dir)))
197 (while (and (/= offset 0) (not (news-wins pfx (+ base dirn offset))))
201 (news-find-first-or-last pfx (+ base dirn offset) original-dir)))))
204 "Read USENET news for groups for which you are a member and add or
208 Type \\[describe-mode] once reading news to get a list of rnews commands."
212 (switch-to-buffer (setq news-buffer (get-buffer-create "*news*")))
213 (news-mode)
214 (setq news-buffer-save last-buffer)
220 (message "Getting new USENET news...")
221 (news-set-mode-line)
222 (news-get-certifications)
223 (news-get-new-news)))
225 (defun news-group-certification (group)
226 (cdr-safe (assoc group news-current-certifications)))
229 (defun news-set-current-certifiable ()
231 (let ((file (concat news-path
232 (string-subst-char ?/ ?. news-current-news-group))))
233 (setq news-current-certifiable
237 (defun news-get-certifications ()
241 (setq news-current-certifications
245 ((file (substitute-in-file-name news-certification-file))
255 (defun news-write-certifications ()
263 (print news-current-certifications))
266 (write-file (substitute-in-file-name news-certification-file))
269 (defun news-set-current-group-certification ()
270 (let ((cgc (assoc news-current-news-group news-current-certifications)))
271 (if cgc (setcdr cgc news-current-certifiable)
272 (news-push (cons news-current-news-group news-current-certifiable)
273 news-current-certifications))))
275 (defun news-set-minor-modes ()
278 (setq news-minor-modes (list (cons 'foo
279 (concat news-current-message-number
281 news-total-current-group
282 (news-get-attribute-string)))))
284 ;; directly from news-minor-modes by using a list for mode-name.
286 (setq minor-modes news-minor-modes)))
288 (defun news-set-message-counters ()
289 "Scan through current news-groups filelist to figure out how many messages
291 (if (null news-list-of-files)
292 (setq news-current-message-number 0)))
294 (if news-mode-map
296 (setq news-mode-map (make-keymap))
297 (suppress-keymap news-mode-map)
298 (define-key news-mode-map "." 'beginning-of-buffer)
299 (define-key news-mode-map " " 'scroll-up)
300 (define-key news-mode-map "\177" 'scroll-down)
301 (define-key news-mode-map "n" 'news-next-message)
302 (define-key news-mode-map "c" 'news-make-link-to-message)
303 (define-key news-mode-map "p" 'news-previous-message)
304 (define-key news-mode-map "j" 'news-goto-message)
305 (define-key news-mode-map "q" 'news-exit)
306 (define-key news-mode-map "e" 'news-exit)
307 (define-key news-mode-map "\ej" 'news-goto-news-group)
308 (define-key news-mode-map "\en" 'news-next-group)
309 (define-key news-mode-map "\ep" 'news-previous-group)
310 (define-key news-mode-map "l" 'news-list-news-groups)
311 (define-key news-mode-map "?" 'describe-mode)
312 (define-key news-mode-map "g" 'news-get-new-news)
313 (define-key news-mode-map "f" 'news-reply)
314 (define-key news-mode-map "m" 'news-mail-other-window)
315 (define-key news-mode-map "a" 'news-post-news)
316 (define-key news-mode-map "r" 'news-mail-reply)
317 (define-key news-mode-map "o" 'news-save-item-in-file)
318 (define-key news-mode-map "\C-o" 'rmail-output)
319 (define-key news-mode-map "t" 'news-show-all-headers)
320 (define-key news-mode-map "x" 'news-force-update)
321 (define-key news-mode-map "A" 'news-add-news-group)
322 (define-key news-mode-map "u" 'news-unsubscribe-current-group)
323 (define-key news-mode-map "U" 'news-unsubscribe-group)
324 (define-key news-mode-map "\C-c\C-r" 'news-caesar-buffer-body))
326 (defun news-mode ()
328 New readers can find additional help in newsgroup: news.announce.newusers .
332 . move point to front of this news article (same as Meta-<).
333 Space scroll to next screen of this news article.
334 Delete scroll down previous page of this news article.
335 n move to next news article, possibly next group.
336 p move to previous news article, possibly previous group.
337 j jump to news article specified by numeric position.
338 M-j jump to news group.
339 M-n goto next news group.
340 M-p goto previous news group.
341 l list all the news groups with current status.
344 g get new USENET news.
346 a post an original news article.
353 t show all the headers this news article originally had.
354 q quit reading news after updating .newsrc file.
356 m mail a news article. Same as C-x 4 m.
358 r mail a reply to this news article. Like m but initializes some fields.
363 (make-local-variable 'news-read-first-time-p)
364 (setq news-read-first-time-p t)
365 (make-local-variable 'news-current-news-group)
366 ; (setq news-current-news-group "??")
367 (make-local-variable 'news-current-group-begin)
368 (setq news-current-group-begin 0)
369 (make-local-variable 'news-current-message-number)
370 (setq news-current-message-number 0)
371 (make-local-variable 'news-total-current-group)
372 (make-local-variable 'news-buffer-save)
375 (make-local-variable 'news-point-pdl)
377 ; (make-local-variable 'news-group-article-assoc)
378 (setq major-mode 'news-mode)
379 (setq mode-line-process '(news-minor-modes))
381 (news-set-mode-line)
383 (use-local-map news-mode-map)
385 (run-mode-hooks 'news-mode-hook))
396 (defmacro news-update-message-read (ngroup nno)
398 (list 'news-cdadr
399 (list 'assoc ngroup 'news-group-article-assoc))
402 (defun news-parse-range (number-string)
419 (defun news-get-new-news ()
420 "Get new USENET news, if there is any for the current user."
422 (if (not (null news-user-group-list))
423 (news-update-newsrc-file))
424 (setq news-group-article-assoc ())
425 (setq news-user-group-list ())
426 (message "Looking up %s file..." news-startup-file)
427 (let ((file (substitute-in-file-name news-startup-file))
441 (let ((range (news-parse-range
443 (if (assoc tem news-group-article-assoc)
447 news-group-article-assoc
451 news-group-article-assoc)))))
455 (switch-to-buffer news-buffer)
456 (setq news-user-group-list temp-user-groups)
458 (not (news-read-files-into-buffer
462 (message "No news is good news.")
465 (defun news-list-news-groups ()
466 "Display all the news groups to which you belong."
475 (let ((temp news-user-group-list)
478 (let ((item (assoc (car temp) news-group-article-assoc)))
481 (insert (int-to-string (news-cadr (news-cadr item))))
488 (defun news-set-mode-line ()
492 (if (integerp news-current-message-number)
493 (int-to-string news-current-message-number)
496 (if (integerp news-current-group-end)
497 (int-to-string news-current-group-end)
498 news-current-group-end)))
501 news-current-news-group
504 0 (max 0 (- 17 (length news-current-news-group))))))
508 (defun news-goto-news-group (gp)
509 "Takes a string and goes to that news group."
511 news-group-article-assoc)))
512 (message "Jumping to news group %s..." gp)
513 (news-select-news-group gp)
514 (message "Jumping to news group %s... done." gp))
516 (defun news-select-news-group (gp)
517 (let ((grp (assoc gp news-group-article-assoc)))
521 (news-update-message-read news-current-news-group
522 (news-cdar news-point-pdl))
523 (news-read-files-into-buffer (car grp) nil)
524 (news-set-mode-line)))))
526 (defun news-goto-message (arg)
531 (news-select-message arg))
533 (defun news-select-message (arg)
535 (let ((file (concat news-path
536 (string-subst-char ?/ ?. news-current-news-group)
539 (or (news-cadr (memq (news-cdar news-point-pdl) news-list-of-files))
541 (setcdr (car news-point-pdl) arg))
542 (setq news-current-message-number arg)
545 (news-read-in-file file)
546 (news-set-mode-line))
547 (news-set-mode-line)
550 (defun news-force-update ()
551 "updates the position of last article read in the current news group"
553 (setcdr (car news-point-pdl) news-current-message-number)
554 (message "Updated to %d" news-current-message-number))
556 (defun news-next-message (arg)
561 (let ((no (+ arg news-current-message-number)))
562 (if (or (< no news-current-group-begin)
563 (> no news-current-group-end))
565 (news-set-current-group-certification)
566 (news-next-group))
568 (news-previous-group))
570 (let ((plist (news-get-motion-lists
571 news-current-message-number
572 news-list-of-files)))
574 (news-select-message (nth (1- (- arg)) (car (cdr plist))))
575 (news-select-message (nth (1- arg) (car plist))))))))
577 (defun news-previous-message (arg)
583 (news-next-message (- arg)))
585 (defun news-move-to-group (arg)
587 (let ((cg news-current-news-group))
588 (let ((plist (news-get-motion-lists cg news-user-group-list))
591 (or (setq ngrp (nth (1- (- arg)) (news-cadr plist)))
592 (error "No previous news groups"))
594 (error "No more news groups")))
595 (news-select-news-group ngrp))))
597 (defun news-next-group ()
601 (news-move-to-group 0)
602 (while (null news-list-of-files)
603 (news-move-to-group 0)))
606 (defun news-previous-group ()
610 (news-move-to-group -1)
611 (while (null news-list-of-files)
612 (news-move-to-group -1)))
615 (defun news-get-motion-lists (arg listy)
628 (defun news-read-in-file (filename)
632 (news-convert-format)
634 (let ((hooks news-group-hook-alist))
637 (if (string-match (car (car hooks)) news-group-name)
646 (defun news-convert-format ()
663 (news-delete-headers start)
666 (defun news-show-all-headers ()
667 "Redisplay current news item with all original headers"
669 (let (news-ignored-headers
672 (news-set-mode-line)
673 (news-read-in-file
674 (concat news-path
675 (string-subst-char ?/ ?. news-current-news-group)
676 "/" (int-to-string news-current-message-number)))))
678 (defun news-delete-headers (pos)
680 (and (stringp news-ignored-headers)
681 (while (re-search-forward news-ignored-headers nil t)
688 (defun news-exit ()
689 "Quit news reading session and update the .newsrc file."
691 (if (y-or-n-p "Do you really wanna quit reading news ? ")
692 (progn (message "Updating %s..." news-startup-file)
693 (news-update-newsrc-file)
694 (news-write-certifications)
695 (message "Updating %s... done" news-startup-file)
698 (switch-to-buffer news-buffer-save)
699 (setq news-user-group-list ()))
702 (defun news-update-newsrc-file ()
705 (substitute-in-file-name news-startup-file)))
706 (tem news-user-group-list)
709 (if (not (null news-current-news-group))
710 (news-update-message-read news-current-news-group
711 (news-cdar news-point-pdl)))
714 (setq group (assoc (car tem) news-group-article-assoc))
715 (if (= (news-cadr (news-cadr group)) (news-caddr (news-cadr group)))
721 (insert (int-to-string (car (news-cadr group))) "-"
722 (int-to-string (news-cadr (news-cadr group)))))
724 (while news-unsubscribe-groups
725 (setq group (assoc (car news-unsubscribe-groups)
726 news-group-article-assoc))
732 (insert "! " (int-to-string (car (news-cadr group)))
733 "-" (int-to-string (news-cadr (news-cadr group))))))
734 (setq news-unsubscribe-groups (cdr news-unsubscribe-groups)))
739 (defun news-unsubscribe-group (group)
742 news-group-article-assoc)))
743 (news-unsubscribe-internal group))
745 (defun news-unsubscribe-current-group ()
749 (news-unsubscribe-internal news-current-news-group)))
751 (defun news-unsubscribe-internal (group)
752 (let ((tem (assoc group news-group-article-assoc)))
755 (setq news-unsubscribe-groups (cons group news-unsubscribe-groups))
756 (news-update-message-read group (news-cdar news-point-pdl))
757 (if (equal group news-current-news-group)
758 (news-next-group))
762 (defun news-save-item-in-file (file)
767 (defun news-get-pruned-list-of-files (gp-list end-file-no)
768 "Given a news group it finds all files in the news group.
775 (equal (news-set-current-certifiable)
776 (news-group-certification gp-list))
777 (setq news-list-of-files nil
778 news-list-of-files-possibly-bogus t)))
779 (let* ((file-directory (concat news-path
784 (news-wins file-directory end-file-no)
785 (news-find-first-or-last file-directory end-file-no 1))))
786 (setq news-list-of-files-possibly-bogus t news-list-of-files nil)
789 (setq news-list-of-files-possibly-bogus t
790 news-current-group-end last-winner)
792 (news-push last-winner news-list-of-files)
794 news-list-of-files)
798 (setq news-list-of-files
807 (setq tem news-list-of-files)
814 (setq news-list-of-files
815 (delq (car tem) news-list-of-files)))
817 (if (null news-list-of-files)
818 (progn (setq news-current-group-end 0)
820 (setq news-list-of-files
821 (mapcar 'string-to-number news-list-of-files))
822 (setq news-list-of-files (sort news-list-of-files '<))
823 (setq news-current-group-end
824 (elt news-list-of-files
825 (1- (length news-list-of-files))))
826 news-list-of-files)))))))
827 (or answer (progn (news-set-current-group-certification) nil))))
829 (defun news-read-files-into-buffer (group reversep)
830 (let* ((files-start-end (news-cadr (assoc group news-group-article-assoc)))
832 (end-file-no (news-cadr files-start-end))
834 (setq news-current-news-group group)
835 (setq news-current-message-number nil)
836 (setq news-current-group-end nil)
837 (news-set-mode-line)
838 (news-get-pruned-list-of-files group end-file-no)
839 (news-set-mode-line)
842 (setq news-point-pdl (list (cons (car files-start-end)
843 (news-cadr files-start-end))))
844 (if (null news-list-of-files)
846 (setq news-current-group-end end-file-no)
847 (setq news-current-group-begin end-file-no)
848 (setq news-current-message-number end-file-no)
849 (news-set-mode-line)
852 (setq news-current-group-begin (car news-list-of-files))
854 (setq news-current-message-number news-current-group-end)
855 (if (> (car news-list-of-files) end-file-no)
856 (setcdr (car news-point-pdl) (car news-list-of-files)))
857 (setq news-current-message-number news-current-group-begin))
858 (news-set-message-counters)
859 (news-set-mode-line)
860 (news-read-in-file (concat news-path
864 news-current-message-number)))
865 (news-set-message-counters)
866 (news-set-mode-line)
869 (defun news-add-news-group (gp)
870 "Resubscribe to or add a USENET news group named GROUP (a string)."
872 ; @@ could be based on news library file ../active (slightly fascist)
873 ; @@ or (expensive to compute) all directories under the news spool directory
874 (interactive "sAdd news group: ")
875 (let ((file-dir (concat news-path (string-subst-char ?/ ?. gp))))
877 (if (null (assoc gp news-group-article-assoc))
879 (substitute-in-file-name news-startup-file))))
887 ;;@@ news-unsubscribe-groups isn't being used
888 ;;(setq news-unsubscribe-groups
889 ;; (delq gp news-unsubscribe-groups))
907 (let ((range (news-parse-range
909 (setq news-group-article-assoc
913 news-group-article-assoc))))
919 (defun news-make-link-to-message (number newname)
926 (concat news-path
927 (string-subst-char ?/ ?. news-current-news-group)
930 news-current-message-number))
970 ;;; news-caesar-buffer-body written by paul@media-lab.mit.edu Wed Oct 1, 1986
972 (defun news-caesar-buffer-body (&optional rotnum)
976 Mail and USENET news headers are not rotated."
984 (set-mark (if (equal major-mode 'news-mode)