home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2 / Openstep-4.2-Intel-User.iso / usr / lib / emacs / lisp / rnews.elc < prev    next >
Text File  |  1991-09-12  |  24KB  |  379 lines

  1.  
  2. (provide (quote rnews))
  3.  
  4. (require (quote mail-utils))
  5.  
  6. (autoload (quote rmail-output) "rmailout" "\
  7. Append this message to Unix mail file named FILE-NAME." t)
  8.  
  9. (autoload (quote news-reply) "rnewspost" "\
  10. Compose and post a reply to the current article on USENET.
  11. While composing the reply, use \\[mail-yank-original] to yank the original
  12. message into it." t)
  13.  
  14. (autoload (quote news-mail-other-window) "rnewspost" "\
  15. Send mail in another window.
  16. While composing the message, use \\[mail-yank-original] to yank the
  17. original message into it." t)
  18.  
  19. (autoload (quote news-post-news) "rnewspost" "\
  20. Begin editing a new USENET news article to be posted." t)
  21.  
  22. (autoload (quote news-mail-reply) "rnewspost" "\
  23. Mail a reply to the author of the current article.
  24. While composing the reply, use \\[mail-yank-original] to yank the original
  25. message into it." t)
  26.  
  27. (defvar rmail-last-file (expand-file-name "~/mbox.news"))
  28.  
  29. (defvar news-startup-file "$HOME/.newsrc" "\
  30. Contains ~/.newsrc")
  31.  
  32. (defvar news-certification-file "$HOME/.news-dates" "\
  33. Contains ~/.news-dates")
  34.  
  35. (defvar news-ignored-headers "^Path:\\|^Posting-Version:\\|^Article-I.D.:\\|^Expires:\\|^Date-Received:\\|^References:\\|^Control:\\|^Xref:\\|^Lines:\\|^Posted:\\|^Relay-Version:\\|^Message-ID:\\|^Nf-ID:\\|^Nf-From:\\|^Approved:\\|^Sender:" "\
  36. All random fields within the header of a message.")
  37.  
  38. (defvar news-mode-map nil)
  39.  
  40. (defvar news-read-first-time-p t)
  41.  
  42. (defvar news-user-group-list nil)
  43.  
  44. (defvar news-current-news-group nil)
  45.  
  46. (defvar news-current-group-begin nil)
  47.  
  48. (defvar news-current-group-end nil)
  49.  
  50. (defvar news-current-certifications nil "\
  51. An assoc list of a group name and the time at which it is
  52. known that the group had no new traffic")
  53.  
  54. (defvar news-current-certifiable nil "\
  55. The time when the directory we are now working on was written")
  56.  
  57. (defvar news-message-filter nil "\
  58. User specifiable filter function that will be called during
  59. formatting of the news file")
  60.  
  61. (defvar news-list-of-files nil "\
  62. Global variable in which we store the list of files
  63. associated with the current newsgroup")
  64.  
  65. (defvar news-list-of-files-possibly-bogus nil "\
  66. variable indicating we only are guessing at which files are available.
  67. Not currently used.")
  68.  
  69. (defvar news-group-article-assoc nil)
  70.  
  71. (defvar news-current-message-number 0 "\
  72. Displayed Article Number")
  73.  
  74. (defvar news-total-current-group 0 "\
  75. Total no of messages in group")
  76.  
  77. (defvar news-unsubscribe-groups nil)
  78.  
  79. (defvar news-point-pdl nil "\
  80. List of visited news messages.")
  81.  
  82. (defvar news-no-jumps-p t)
  83.  
  84. (defvar news-buffer nil "\
  85. Buffer into which news files are read.")
  86.  
  87. (defmacro news-push (item ref) (byte-code "´ˆ    EEÇ" [ref item setq cons] 5))
  88.  
  89. (defmacro news-cadr (x) (byte-code "ˋ´DDÇ" [x car cdr] 3))
  90.  
  91. (defmacro news-cdar (x) (byte-code "ˋ´DDÇ" [x cdr car] 3))
  92.  
  93. (defmacro news-caddr (x) (byte-code "ˋ´´DDDÇ" [x car cdr] 4))
  94.  
  95. (defmacro news-cadar (x) (byte-code "ˋ´ˋDDDÇ" [x car cdr] 4))
  96.  
  97. (defmacro news-caadr (x) (byte-code "ˋˋ´DDDÇ" [x car cdr] 4))
  98.  
  99. (defmacro news-cdadr (x) (byte-code "ˋ´ˋDDDÇ" [x cdr car] 4))
  100.  
  101. (defmacro news-wins (pfx index) (byte-code "´ˆ˜¯    DFDÇ" [pfx index file-exists-p concat "/" int-to-string] 6))
  102.  
  103. (defvar news-max-plausible-gap 2 "\
  104. * In an rnews directory, the maximum possible gap size.
  105. A gap is a sequence of missing messages between two messages that exist.
  106. An empty file does not contribute to a gap -- it ends one.")
  107.  
  108. (defun news-find-first-and-last (prefix base) (byte-code "´ˆ˜    !Q!į    ˘#¯    ˙#BÇ" [prefix base file-exists-p "/" int-to-string news-find-first-or-last -1 1] 8))
  109.  
  110. (defmacro news-/ (a1 a2) (byte-code "´ˆ˜¯\"!ˆ    EÁ\"˘˙¨E²ˆ²D    EDˆ    EFÇ" [a1 a2 zerop / -1 2 if < 0 -] 8))
  111.  
  112. (defun news-find-first-or-last (pfx base dirn) (byte-code "    ˘
  113. ˙¨     \\!Q!IJ    ˚\"ÉÈÁȸ    ˚\"Éȸ    ˚\"³ ˝\"ÄL˘
  114. ˙¨˛      #!Q!ÄA     \\Éȸ ˚\"ÉÈÁ&)Ȳ\"³ ˝\"Äg˘
  115. ˙¨˛      #!Q!?Äs ZÉÈÁSÈ ˝U      \\Áɡ
  116. ˛      ##))Ç" [original-dir dirn pfx base offset news-max-plausible-gap file-exists-p "/" int-to-string * 2 / /= 0 + news-find-first-or-last] 21))
  117.  
  118. (defun rnews nil "\
  119. Read USENET news for groups for which you are a member and add or
  120. delete groups.
  121. You can reply to articles posted and send articles to any group.
  122.  
  123. Type \\[describe-mode] once reading news to get a list of rnews commands." (interactive) (byte-code "˜È˘ ˙¨!Ȳ˚¸!É!ȳ ÈÉȘÉÈ˝ È¯ÉÈ˛¯!Èˇ—!ȱ¼!Ƚ È¾ Èà )Ç" [last-buffer news-buffer news-buffer-save buffer-read-only nil t buffer-name make-local-variable rmail-last-file switch-to-buffer get-buffer-create "*news*" news-mode erase-buffer set-buffer-modified-p sit-for 0 message "Getting new USENET news..." news-set-mode-line news-get-certifications news-get-new-news] 13))
  124.  
  125. (defun news-group-certification (group) (byte-code "´ˆ    \"!Ç" [group news-current-certifications cdr-safe assoc] 4))
  126.  
  127. (defun news-set-current-certifiable nil (byte-code "    ˜¯˘
  128. #P˙¨²!Å!8É)Ç" [file news-path news-current-news-group news-current-certifiable string-subst-char 47 46 5 file-attributes file-symlink-p] 5))
  129.  
  130. (defun news-get-certifications nil (byte-code "ÊˋË)Ç" [news-current-certifications ((byte-code "ˋ´ˆ˜Ï!ÉÇ" [news-current-certifications car-safe var (byte-code "ˆ    !˜!¯!Ģ
  131. ˙\"Ȩβ˚ !)*Ç" [file news-certification-file buf substitute-in-file-name find-file-noselect file-exists-p switch-to-buffer norecord ((byte-code "ˋ!Ç" [buf kill-buffer] 2)) read-from-string buffer-string] 7) ((error (byte-code "¹Ç" [nil] 1)))] 4))] 1))
  132.  
  133. (defun news-write-certifications nil (byte-code "ʈË)Ç" [news-current-certifications buf news-certification-file ((byte-code "ˆÐ˜!Ñȯˆ!˘    !È˙¨
  134. !!Ȳ    !)Ç" [news-current-certifications buf news-certification-file "*CeRtIfIcAtIoNs*" print get-buffer switch-to-buffer write-file substitute-in-file-name kill-buffer] 7))] 1))
  135.  
  136. (defun news-set-current-group-certification nil (byte-code "˜    
  137. \"¯ \"Á     B
  138. BÉ)Ç" [cgc news-current-news-group news-current-certifications news-current-certifiable assoc setcdr] 4))
  139.  
  140. (defun news-set-minor-modes nil "\
  141. Creates a minor mode list that has group name, total articles,
  142. and attribute for current article." (byte-code "˜    ¯
  143. ˘ RBCÉÈ˙¨!ÅÉÇ" [news-minor-modes news-current-message-number news-total-current-group minor-modes foo "/" news-get-attribute-string boundp minor-mode-alist] 6))
  144.  
  145. (defun news-set-message-counters nil "\
  146. Scan through current news-groups filelist to figure out how many messages
  147. are there. Set counters for use with minor mode display." (byte-code "?Ä´ÉÇ" [news-list-of-files news-current-message-number 0] 2))
  148.  
  149. (if news-mode-map nil (setq news-mode-map (make-keymap)) (suppress-keymap news-mode-map) (define-key news-mode-map "." (quote beginning-of-buffer)) (define-key news-mode-map " " (quote scroll-up)) (define-key news-mode-map "" (quote scroll-down)) (define-key news-mode-map "n" (quote news-next-message)) (define-key news-mode-map "c" (quote news-make-link-to-message)) (define-key news-mode-map "p" (quote news-previous-message)) (define-key news-mode-map "j" (quote news-goto-message)) (define-key news-mode-map "q" (quote news-exit)) (define-key news-mode-map "e" (quote news-exit)) (define-key news-mode-map "j" (quote news-goto-news-group)) (define-key news-mode-map "n" (quote news-next-group)) (define-key news-mode-map "p" (quote news-previous-group)) (define-key news-mode-map "l" (quote news-list-news-groups)) (define-key news-mode-map "?" (quote describe-mode)) (define-key news-mode-map "g" (quote news-get-new-news)) (define-key news-mode-map "f" (quote news-reply)) (define-key news-mode-map "m" (quote news-mail-other-window)) (define-key news-mode-map "a" (quote news-post-news)) (define-key news-mode-map "r" (quote news-mail-reply)) (define-key news-mode-map "o" (quote news-save-item-in-file)) (define-key news-mode-map "" (quote rmail-output)) (define-key news-mode-map "t" (quote news-show-all-headers)) (define-key news-mode-map "x" (quote news-force-update)) (define-key news-mode-map "A" (quote news-add-news-group)) (define-key news-mode-map "u" (quote news-unsubscribe-current-group)) (define-key news-mode-map "U" (quote news-unsubscribe-group)) (define-key news-mode-map "" (quote news-caesar-buffer-body)))
  150.  
  151. (defun news-mode nil "\
  152. News Mode is used by M-x rnews for reading USENET Newsgroups articles.
  153. New readers can find additional help in newsgroup: news.announce.newusers .
  154. All normal editing commands are turned off.
  155. Instead, these commands are available:
  156.  
  157. .    move point to front of this news article (same as Meta-<).
  158. Space    scroll to next screen of this news article.
  159. Delete  scroll down previous page of this news article.
  160. n    move to next news article, possibly next group.
  161. p    move to previous news article, possibly previous group.
  162. j    jump to news article specified by numeric position.
  163. M-j     jump to news group.
  164. M-n     goto next news group.
  165. M-p     goto previous news group.
  166. l       list all the news groups with current status.
  167. ?       print this help message.
  168. C-c C-r caesar rotate all letters by 13 places in the article's body (rot13).
  169. g       get new USENET news.
  170. f       post a reply article to USENET.
  171. a       post an original news article.
  172. A       add a newsgroup. 
  173. o    save the current article in the named file (append if file exists).
  174. C-o    output this message to a Unix-format mail file (append it).
  175. c       \"copy\" (actually link) current or prefix-arg msg to file.
  176.     warning: target directory and message file must be on same device
  177.         (UNIX magic)
  178. t       show all the headers this news article originally had.
  179. q    quit reading news after updating .newsrc file.
  180. e    exit updating .newsrc file.
  181. m    mail a news article.  Same as C-x 4 m.
  182. x       update last message seen to be the current message.
  183. r    mail a reply to this news article.  Like m but initializes some fields.
  184. u       unsubscribe from current newsgroup.
  185. U       unsubscribe from specified newsgroup." (interactive) (byte-code "¸È³ È˝¹!ÈˋÉÈ˝˛!È˝´!ÈˇÉÈ˝ˆ!ÈˇÉÈ˝—!È˝±!È˝˜!ȼÉÈ˝½!ȾÉÈàá!ÂFâÉÁJãÉÈä Èå!Èç!È
  186. É    Èèé!Ç" [news-read-first-time-p t news-current-group-begin news-current-message-number version-control major-mode mode-name text-mode-syntax-table news-mode-map local-abbrev-table text-mode-abbrev-table nil kill-all-local-variables make-local-variable news-current-news-group 0 news-total-current-group news-buffer-save never news-point-pdl news-mode boundp minor-mode-alist ("NEWS" news-minor-modes) "NEWS" news-set-mode-line set-syntax-table use-local-map run-hooks news-mode-hook] 15))
  187.  
  188. (defun string-subst-char (new old string) (byte-code "˜¯˘    !!
  189. ˙˜OÉȨ    
  190. \"ÉÄ 
  191. IÈÁ)È
  192. Ç" [index old string new nil regexp-quote char-to-string 0 string-match] 7))
  193.  
  194. (defmacro news-update-message-read (ngroup nno) (byte-code "´ˆ˜¯ED    EÇ" [ngroup nno setcar news-cdadr assoc news-group-article-assoc] 5))
  195.  
  196. (defun news-parse-range (number-string) "\
  197. Parse string representing range of numbers of he form <a>-<b>
  198. to a list (a . b)" (byte-code "´ˆ    \"˜    ¯O!˜    T˘O!BÁ#˜    !ÉÈB)Ç" [n number-string string-match "-" string-to-int 0 nil] 7))
  199.  
  200. (defun news-get-new-news nil "\
  201. Get new USENET news, if there is any for the current user." (interactive) (byte-code "´È??Ä
  202. ˛ È´ÉÈ´ÉÈˇ— \"ȱ !´ʼ !´´´´
  203.     qȽbȾസ#ÄÕ`ÉÈá È`ÉÈâ È`É    ÈãäZ\"É
  204. Èåã    \"! ç
  205.     \"Âzˇè
  206. \"ÁÐ
  207. B
  208.  @ A AED    BÉ)ÈÁ7Èé!-)Èê!ÉÈˇë!Èì!ÈÉÈÄ”Æ@´\"?įAÉÈÁ®È?±ˇí!Á¾ˇª!*Ç" [news-user-group-list news-group-article-assoc nil news-startup-file file temp-user-groups newsrcbuf start end endofline tem t range news-buffer news-update-newsrc-file message "Looking up %s file..." substitute-in-file-name find-file-noselect 0 search-forward ": " beginning-of-line end-of-line buffer-substring 2 news-parse-range assoc "You are subscribed twice to %s; I ignore second" kill-buffer nreverse "Prefrobnicating..." switch-to-buffer news-read-files-into-buffer "No news is good news." ""] 20))
  209.  
  210. (defun news-list-news-groups nil "\
  211. Display all the news groups to which you belong." (interactive) (byte-code "˜È˙ÐÊqȨcȲcÈ
  212. ˜    ÄM˚    @\"@cÈ Â)¸Á*³jÈ˝A@A@!cÈ Â>˛cÁ@ˇjÈ    A ?É)ÈÁ*)ÑÇ" [standard-output temp news-user-group-list flag nil item news-group-article-assoc "*Newsgroups*" "News Group        Msg No.       News Group        Msg No.
  213. " "-------------------------       -------------------------
  214. " assoc 52 20 int-to-string "
  215. " 33] 6))
  216.  
  217. (defun news-set-mode-line nil "\
  218. Set mode line string to something useful." (byte-code "˘˙    !¨    !Á²˚˙
  219. !¨
  220. !Á
  221. RÉȸ ³˝˝˛ GZ]OQÉÈˇ¯!È—˝!Ç" [mode-line-process news-current-message-number news-current-group-end mode-line-buffer-identification news-current-news-group t " " integerp int-to-string "??" "/" "NEWS: " "                 " 0 17 set-buffer-modified-p sit-for] 11))
  222.  
  223. (defun news-goto-news-group (gp) "\
  224. Takes a string and goes to that news group." (interactive (byte-code "ˋ´\"CÇ" [news-group-article-assoc completing-read "NewsGroup: "] 3)) (byte-code "´Èˆ˜    \"ȯ    !Ȉ˘    \"Ç" [news-group-article-assoc gp nil message "Jumping to news group %s..." news-select-news-group "Jumping to news group %s... done."] 5))
  225.  
  226. (defun news-select-news-group (gp) (byte-code "˙    
  227. \"?¨² \"Á&˚˙
  228. \"A@A@A\"ȸ@˘\"ȳ )Ç" [grp gp news-group-article-assoc news-startup-file news-current-news-group news-point-pdl nil assoc error "Group not subscribed to in file %s." setcar news-read-files-into-buffer news-set-mode-line] 7))
  229.  
  230. (defun news-goto-message (arg) "\
  231. Goes to the article ARG in current newsgroup." (interactive "p") (byte-code "´È?Ĉ˜¯\"ÉÈ˘    !Ç" [current-prefix-arg arg nil read-no-blanks-input "Go to article: " "" news-select-message] 3))
  232.  
  233. (defun news-select-message (arg) (byte-code ";Ä
  234. ²!ÉÈ
  235. ˚¸³ #˝R @A>A@Å!˛UÄ*ˇ @\"ÈÉÈ—    !ÂC¨±    !ȼ )ÁJ¼ È½¾\")Ç" [arg file news-path news-current-news-group news-point-pdl news-list-of-files news-current-message-number buffer-read-only nil string-to-int string-subst-char 47 46 "/" 0 setcdr file-exists-p news-read-in-file news-set-mode-line error "Article %d nonexistent"] 10))
  236.  
  237. (defun news-force-update nil "\
  238. updates the position of last article read in the current news group" (interactive) (byte-code "´Èˆ@    \"Ș¯    \"Ç" [news-point-pdl news-current-message-number nil setcdr message "Updated to %d"] 4))
  239.  
  240. (defun news-next-message (arg) "\
  241. Move ARG messages forward within one newsgroup.
  242. Negative ARG moves backward.
  243. If ARG is 1 or -1, moves to next or previous newsgroup if at end." (interactive "p") (byte-code "¨È    
  244. \\ WÅ VÂ1    ²U ˚ È¸ Á.    ³UÂ+˝ Á.˛ˇ!ÁT—
  245. \"    ±WÂK¼    [SA@8!ÁS¼    S@8!))Ç" [no arg news-current-message-number news-current-group-begin news-current-group-end t plist news-list-of-files nil 1 news-set-current-group-certification news-next-group -1 news-previous-group error "Article out of range" news-get-motion-lists 0 news-select-message] 9))
  246.  
  247. (defun news-previous-message (arg) "\
  248. Move ARG messages backward in current newsgroup.
  249. With no arg or arg of 1, move one message
  250. and move to previous newsgroup if at beginning.
  251. A negative ARG means move forward." (interactive "p") (byte-code "ˋÈ´[!Ç" [arg nil news-next-message] 2))
  252.  
  253. (defun news-move-to-group (arg) "\
  254. Given arg move forward or backward to a new newsgroup." (byte-code "    ˘ \"˙¨WÂ![S
  255. A@8ÉŲ˚!Á-
  256. @8ÉÅ-²¸!ȳ !*)Ç" [cg news-current-news-group plist news-user-group-list ngrp arg news-get-motion-lists nil 0 error "No previous news groups" "No more news groups" news-select-news-group] 5))
  257.  
  258. (defun news-next-group nil "\
  259. Moves to the next user group." (interactive) (byte-code "ˋÈ´ˆ!È?Ä´ˆ!ÈÁÇ" [news-list-of-files nil news-move-to-group 0] 4))
  260.  
  261. (defun news-previous-group nil "\
  262. Moves to the previous user group." (interactive) (byte-code "ˋÈ´ˆ!È?Ä´ˆ!ÈÁÇ" [news-list-of-files nil news-move-to-group -1] 4))
  263.  
  264. (defun news-get-motion-lists (arg listy) "\
  265. Given a msgnumber/group this will return a list of two lists;
  266. one for moving forward and one for moving backward." (byte-code "    ˆ˜¯Í*Ç" [temp listy result nil out (byte-code "Ä(ˆ@    \"˜¯A
  267. CB\"Á$˘@C
  268. \"ÉÈAÉÈÁÇ" [temp arg result equal throw out nconc] 6)] 2))
  269.  
  270. (defun news-read-in-file (filename) (byte-code "´ È`ˆ    !Ș Èbȯ˘!ÈmÂ˙¨!Áb)Ç" [start filename erase-buffer insert-file-contents news-convert-format forward-line 1 message "(Empty file?)"] 6))
  271.  
  272. (defun news-convert-format nil (byte-code "ÊÌ`˜˘˙Ϙ˜    Ä@¨    \"ÈbȲ˚˜¯#ÉÈ
  273. ?Ä' Ä9bȲ¸!ȳ È˝ È˝ È˛!Èb,))Ç" [start end has-from has-date nil t (byte-code "¹ˋ!È`Ç" [search-forward "
  274.  
  275. "] 2) ((error (byte-code "¹Ç" [nil] 1))) narrow-to-region search-forward "
  276. From:" "
  277. Date:" beginning-of-line kill-line news-delete-headers] 8))
  278.  
  279. (defun news-show-all-headers nil "\
  280. Redisplay current news item with all original headers" (interactive) (byte-code "´È´´˘ È˙ È¨ ²˚¸ #³˝!R!*Ç" [news-ignored-headers buffer-read-only nil news-path news-current-news-group news-current-message-number erase-buffer news-set-mode-line news-read-in-file string-subst-char 47 46 "/" int-to-string] 9))
  281.  
  282. (defun news-delete-headers (pos) (byte-code "bÈ    ;Ä#˜    ´ˆ#Ä#¯ È˘`˜˙!Ȩ²!È`\"ÈÁÇ" [pos news-ignored-headers nil t re-search-forward beginning-of-line delete-region "
  283. [^     ]" forward-char -1] 8))
  284.  
  285. (defun news-exit nil "\
  286. Quit news reading session and update the .newsrc file." (interactive) (byte-code "ˆÈ˜¯!Â0˘˙\"Ȩ È² È˘˚\"È˘¸!ȳ˝!Ä%˝p!È˛    !ȈÉÁ3˘ˇ!Ç" [news-startup-file news-buffer-save news-user-group-list nil y-or-n-p "Do you really wanna quit reading news ? " message "Updating %s..." news-update-newsrc-file news-write-certifications "Updating %s... done" "Now do some real work" fboundp bury-buffer switch-to-buffer ""] 11))
  287.  
  288. (defun news-update-newsrc-file nil "\
  289. Updates the .newsrc file in the users home dir." (byte-code "¸³    !! ¨Ê??Ä˝˛\"A@A@A\"Èˇ!È
  290. Ä{˛
  291. @\"ÉÈ A@A@ A@AA@UÂD¨Ár—bȱ @¼P¨²#ÂX½¨!Áa¾ @à\"Èáâ!Ⱦã A@@!äã A@A@!#È
  292. AÉÈÁ$È
  293. ĉ˛
  294. @\"ÉÈ—bȱ @¼P¨²#Ćáå!Ƚ¨!Ⱦçã A@@!äã A@A@!$È
  295. AÉ
  296. ÈÁ|Èè Èép!)+Ç" [newsrcbuf news-startup-file tem news-user-group-list group news-current-news-group news-group-article-assoc news-point-pdl nil t news-unsubscribe-groups find-file-noselect substitute-in-file-name setcar assoc switch-to-buffer 0 search-forward ": " kill-line insert ": 
  297. " backward-char 1 int-to-string "-" 2 "! " save-buffer kill-buffer] 25))
  298.  
  299. (defun news-unsubscribe-group (group) "\
  300. Removes you from newgroup GROUP." (interactive (byte-code "ˋ´\"CÇ" [news-group-article-assoc completing-read "Unsubscribe from group: "] 3)) (byte-code "´Èˆ    !Ç" [news-group-article-assoc group nil news-unsubscribe-internal] 2))
  301.  
  302. (defun news-unsubscribe-current-group nil "\
  303. Removes you from the newsgroup you are now reading." (interactive) (byte-code "ˋÈ´ˆ!Ä ˜!Ç" [news-current-news-group nil y-or-n-p "Do you really want to unsubscribe from this group ? " news-unsubscribe-internal] 3))
  304.  
  305. (defun news-unsubscribe-internal (group) (byte-code "˘    
  306. \"Â,     BÉÈ˙˘    
  307. \"A@A @A\"Ȩ    \"Ä%² È˚¸!Á0³˝    \")Ç" [tem group news-group-article-assoc news-unsubscribe-groups news-point-pdl news-current-news-group assoc setcar equal news-next-group message "" error "Not subscribed to group: %s"] 9))
  308.  
  309. (defun news-save-item-in-file (file) "\
  310. Save the current article that is being read by appending to a file." (interactive "FSave item in file: ") (byte-code "ˋÈ´ed#Ç" [file nil append-to-file] 4))
  311.  
  312. (defun news-get-pruned-list-of-files (gp-list end-file-no) "\
  313. Given a news group it finds all files in the news group.
  314. The arg must be in slashified format.
  315. Using ls was found to be too slow in a previous version." (byte-code "    Ä³˝ ˛
  316. !\"ʢÉ?Äóˇ—±
  317. #P˜        Ä:¼½¾    !Q!Ä:à    á#
  318. ˘˜ÉÈ
  319. Âl˘
  320. É È
  321.     VÄg
  322. BÉÈ
  323. SÉ
  324. ÈÁOÈ Áòâ!?Åyã!? ˜ÁòäåçÏÉÈ É    È    Ä˜èé    @\"?Åfiâ½    @Q!Åfiê    @!    XÄ„ë    @ \"ÉÈ    AÉ    ÈÁÌÈ ?½ìÉ ȘÁòÆê \"ÉÈí ª\"ÉÈî GS\"É È +Åüï È˜)Ç" [answer end-file-no gp-list news-list-of-files nil news-list-of-files-possibly-bogus t file-directory news-path tem last-winner news-current-group-end equal news-set-current-certifiable news-group-certification string-subst-char 47 46 file-exists-p "/" int-to-string news-find-first-or-last 1 file-directory-p file-readable-p error (byte-code "ˋ!Ç" [file-directory directory-files] 2) ((file-error (byte-code "ˆ˜8¯\"¢˙    \"Á¨²A\"È´Ç" [error gp-list nil string= 2 "permission denied" message "Newsgroup %s is read-protected" signal file-error] 5))) string-match "^[0-9]*$" string-to-int delq 0 mapcar sort < elt news-set-current-group-certification] 18))
  325.  
  326. (defun news-read-files-into-buffer (group reversep) (byte-code "—    
  327. \"A@@A@˘    ÉÈ˘ÉÈ˘É    È± È¼     \"ȱ È@A@BCÉ
  328. È ?ÂT½ È É    È É È Éȱ È˘ÁÞ @É ÈÂh    ÉÁ~ @ VÄx¾
  329. @ @\"È ÉÈà È± Èáâãä    #åç!R!Èà È± Èˇ,Ç" [files-start-end group news-group-article-assoc start-file-no end-file-no buffer-read-only nil news-current-news-group news-current-message-number news-current-group-end news-point-pdl news-list-of-files news-current-group-begin reversep news-path t assoc news-set-mode-line news-get-pruned-list-of-files erase-buffer setcdr news-set-message-counters news-read-in-file string-subst-char 47 46 "/" int-to-string] 16))
  330.  
  331. (defun news-add-news-group (gp) "\
  332. Resubscribe to or add a USENET news group named GROUP (a string)." (interactive "sAdd news group: ") (byte-code "˘È    ˝˛ˇ
  333. #PÊ—
  334. \"?•±¼!!½!Âfl¾ !ÈàbÈá
  335. âP˘˙#ÂBãä
  336. \"Èåç!Èèé!ÈêcÁNãë
  337. \"Èì ÈÆ
  338. í\"Ȫ
  339. ˘˙#È˘˘˘˘ 
  340.     áî˘˙#È`É    Èï È`ÉÈð È`É
  341. Èñ    çZ\"É ÈŁñ    
  342. \"!   @ A AED BÉ),ÈØ ÈŒp!Á‡ãº
  343. \")Á»ãò
  344. \"))Ç" [file-dir news-path gp news-group-article-assoc newsrcbuf news-startup-file nil t start end endofline tem range string-subst-char 47 46 assoc find-file-noselect substitute-in-file-name file-directory-p switch-to-buffer 0 search-forward "! " message "Re-subscribing to group %s." backward-char 2 delete-char 1 ":" "Added %s to your list of newsgroups." end-of-buffer insert ": 1-1
  345. " search-backward ": " beginning-of-line end-of-line buffer-substring news-parse-range save-buffer kill-buffer "Newsgroup %s doesn't exist." "Already subscribed to group %s."] 26))
  346.  
  347. (defun news-make-link-to-message (number newname) "\
  348. Forges a link to an rnews message numbered number (current if no arg)
  349. Good for hanging on to a message that might or might not be
  350. automatically deleted." (interactive "P
  351. FName to link to message: ") (byte-code "¯È˘˙¨²    #˚
  352. ¸
  353. !Á R \"Ç" [news-path news-current-news-group number news-current-message-number newname nil add-name-to-file string-subst-char 47 46 "/" prefix-numeric-value] 7))
  354.  
  355. (defun caesar-region (&optional n) "\
  356. Caesar rotation of region by N, default 13, for decrypting netnews." (interactive (byte-code " ´!CÁˋCÇ" [current-prefix-arg nil prefix-numeric-value] 2)) (byte-code "ˋȳ
  357. !?½ÉÁ'
  358. ˛WÂ!ˇ—
  359. [ˇ\"ZÉÁ'—
  360. ˇ\"Éȱ
  361. !?Äö¼˜!?Å>½ ¾H¾
  362. \\\"Ä⁄˛àˋáâ!Èãä˛\"ÉÈäWÄg IÈTÉÈÁTÈPå!˛ÉÈˇWÄ÷ ¾\\
  363. \\HIÈ ç\\
  364. \\HIÈTÉÈÁyÈáè!+Èé ê ˛ˋˋ 
  365.     ë    \"É
  366. È
  367. GÉ È WÄì
  368. 
  369. HHIÈTÉÈÁ˘ÈbÈì    \"È
  370. c-Ç" [current-prefix-arg nil n t caesar-translate-table i lower upper from to str len numberp 13 0 26 % zerop boundp /= 97 "abcdefghijklmnopqrstuvwxyz" message "Building caesar-translate-table..." make-vector 256 upcase 65 "Building caesar-translate-table... done" region-beginning region-end buffer-substring kill-region] 19))
  371.  
  372. (defun news-caesar-buffer-body (&optional rotnum) "\
  373. Caesar rotates all letters in the current buffer by 13 places.
  374. Used to encode/decode possibly offensive messages (commonly in net.jokes).
  375. With prefix arg, specifies the number of places to rotate each letter forward.
  376. Mail and USENET news headers are not rotated." (interactive (byte-code " ´!CÁˋCÇ" [current-prefix-arg nil prefix-numeric-value] 2)) (byte-code "ˋÈÊ ˋÉȨebȲ˚¸ ³\"½Á˚Qˋ˘#Â'`Á(e!ÈdbÈ˛!È
  377. É))Ç" [current-prefix-arg nil buffer-status buffer-read-only major-mode mail-header-separator t rotnum set-mark search-forward "
  378. " equal news-mode "" caesar-region] 6))
  379.