diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/ChangeLog dgnus/lisp/ChangeLog *** pub/dgnus/lisp/ChangeLog Mon May 15 20:17:16 1995 --- dgnus/lisp/ChangeLog Wed May 17 19:25:00 1995 *************** *** 1,3109 **** ! Mon May 15 18:29:20 1995 Lars Magne Ingebrigtsen ! * gnus.el (gnus-summary-insert-line): Make sure Lines is a number. ! ! (gnus-summary-select-article): Don't scroll to the end of the ! article buffer. ! Mon May 15 16:38:04 1995 Lars Magne Ingebrigtsen ! * gnus.el (gnus-summary-sort): Hide threads after sorting, if that ! is wanted. ! Sun May 14 01:10:51 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-verbose): New variable. ! (gnus-group-mark-group): Stop when there are no more groups to go. ! (gnus-group-search-forward): Message when attempting to go too far ! back. ! ! * gnus.el: Use it. ! (gnus-group-add-to-virtual): New command and keystroke. ! ! * gnus-vm.el: Did not load vm. ! ! * gnus.el (gnus-summary-mode-map): New keystroke for saving with ! vm. ! ! * gnus-score.el (gnus-score-load-file): (adapt t) will work ! independently of gnus-use-adaptive-scoring. ! ! * gnus.el (gnus-summary-recenter): New implementation. ! ! Sat May 13 19:52:35 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-nov-parse-line): Would not read Xrefs. ! ! * gnus-score.el (gnus-score-save): Don't pp adaptive score files. ! (gnus-score-adaptive): Put adaptive entries in a separate score ! file. ! (gnus-score-followup): Put entries into the adaptive score file. ! ! * gnus.el (gnus-use-scoring): New variable. ! ! Sat May 13 11:16:31 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-refer-article): Mark fetched articles as ! read. ! (gnus-summary-catchup): Mark articles as expirable when they are ! supposed to be. ! (gnus-group-expire-articles): Allow `total-expire'. ! (gnus-summary-reselect-current-group): Kill the summary buffer ! before reselecting. ! ! * gnus-vis.el (gnus-summary-highlight-line): Would occationally ! bug out. ! ! * gnus.el (gnus-summary-prepare-threads): Do right number of ! sub-threads under adopted (etc) articles. ! (gnus-read-descriptions-file): Don't barf on strange formats. ! ! * gnus-score.el (gnus-score-adaptive): Ignore pseudos. ! (gnus-score-remove-lines-adaptive): Ditto. ! ! * nnml.el (nnml-get-new-mail): Handle a list of spool files. ! ! * gnus.el (gnus-windows-old-to-new): Translate 3.13-selects to 4.1 ! symbols. ! (gnus-request-article-this-buffer): Always check whether the ! connection is down. ! (gnus-summary-save-article): Did not init hashtb. ! (gnus-matches-options-n): Reversed comparison. ! (gnus-configure-windows): Use the horizontal spec. ! (gnus-group-goto-unread): New variable. ! (gnus-group-next-unread-group): Use it. ! ! * gnus-cache.el (gnus-cache-retrieve-headers): Don't barf if the ! cache file doesn't exist. ! ! Thu May 11 12:03:10 1995 Per Abrahamsen ! ! * gnus.el (gnus-simplify-buffer-fuzzy): New function. ! (gnus-simplify-subject-fuzzy): Use it. ! ! * gnus-score.el: Support fuzzy matches. ! ! Sat May 13 11:09:30 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-newsrc-to-gnus-format): New implementation. ! ! Wed May 10 08:42:21 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-format-max-width): Don't choke on numbers. ! ! * nnmh.el (nnmh-request-list): Don't chase links. ! ! * gnus.el (gnus-parse-n-options): Would reverse the 'ignore and ! strings. ! (gnus-summary-remove-lines-marked-as-read): Also count ! gnus-ancient-marks as a read mark. ! ! * nnspool.el (nnspool-inews-switches): Added the no-sig switch. ! ! * gnus.el (gnus-summary-sort): Don't recurse for all time. ! ! Wed May 10 07:01:42 1995 Lars Magne Ingebrigtsen ! ! * gnus-msg.el (gnus-summary-cancel-article): Remove process marks ! after cancelling. ! ! * gnus.el (gnus-summary-show-all-dormant): Update lines. ! (gnus-summary-show-all-expunged): Ditto. ! (gnus-group-process-prefix): Did not understand C-u C-u prefixes ! and the like. ! (gnus-group-catchup-current): Advance to the next unread group. ! (gnus-summary-catchup): Mark articles at exit if adaptive scoring ! is used. ! (gnus-server-edit-server): Did not configure windows properly. ! ! * gnus.el: 0.67 is released. ! ! Tue May 9 10:18:16 1995 Per Abrahamsen ! ! * gnus-vis.el (gnus-article-press-button): New function. ! ! * gnus.el (gnus-article-mode-map): Bind it. ! ! * gnus-cite.el (gnus-cite-hide-percentage): Upped to 50% (like ! inews). ! (gnus-cite-hide-absolute): Upped to 10 lines. ! ! * gnus-vis.el (gnus-face-dark-name-list): Some colors was not ! available everywhere. New colors suggested by ! John Salmon . ! (gnus-article-highlight-headers): Turn of `buffer-read-only'. ! (gnus-button-message-id): Do not switch to the summary buffer ! first. ! ! * gnus.el: (gnus-article-add-button): Added autoload. ! (gnus-article-hide-citation): Replace with autoload from ! `gnus-cite.el'. ! ! Wed May 10 06:49:33 1995 Lars Magne Ingebrigtsen ! ! * gnus-vis.el: Name changes from gnus-visual-summary-* to ! gnus-summary-*. ! ! Tue May 9 10:18:16 1995 Per Abrahamsen ! ! * gnus-score.el (gnus-summary-immediately-*): Added functions and ! keybidnings. ! ! Wed May 10 06:01:34 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-windows-old-to-new): Applied '+ to wrong list. ! ! Tue May 9 12:26:34 1995 Lars Ingebrigtsen ! ! * gnus-uu.el (gnus-uu-digest-headers): New variable. ! (gnus-uu-save-article): Use it. ! ! * gnus-vis.el (gnus-carpal-setup-buffer): Did not work at all. ! ! * gnus.el (gnus-get-unread-articles): Would un-activate already ! activated groups from secondary servers. ! (gnus-group-transpose-groups): New implementation. ! (gnus-group-yank-group): Allow moving even to the end of the ! buffer. ! ! * nnbabyl.el: General tune-up and serious bug-fix all over. ! ! * gnus.el (gnus-parse-newsrc-body): Would create two dummy.groups ! when no .newsrc.eld files existed. ! (gnus-summary-setup-buffer): Be really sure that we want to return ! to the old buffer. ! ! * nnbabyl.el (nnbabyl-read-mbox): Insert "OPTIONS" in empty babyl ! files. ! ! * gnus.el (gnus-group-change-level): Insert new groups at the end ! of the group alist. ! ! Tue May 9 04:49:53 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.66 is released. ! ! * gnus.el (gnus-rebuild-remove-articles): Would make all articles ! read and go to the wrong article. ! (gnus-summary-update-lines): Allow highlighting of a region. ! ! * gnus-kill.el (gnus-kill-file-mode-map): Three commands bound to ! the same key. ! ! * gnus-vis.el: Hilit code transferred here. ! ! * gnus-hilit.el: Obsolete file. ! ! * gnus-cite.el (gnus-cite-face-list): New file. ! ! * gnus.el (gnus-member-of-valid): New function. ! ! * gnus-score.el (gnus-score-integer): Reversed comparison. ! ! * gnus.el (gnus-maintainer): New address. ! (gnus-get-unread-articles): Secondary groups would be doubly ! activated. ! ! Mon May 8 11:11:22 1995 Lars Ingebrigtsen ! ! * gnus-msg.el (gnus-post-news): Use process/prefix. ! (gnus-mail-reply-using-mail): Use process/prefix. ! (gnus-summary-cancel-article): Ditto. ! ! * gnus-vis.el (gnus-carpal-mode): New mode and stuff. ! ! * gnus.el (gnus-configure-windows): New implementation. ! (gnus-window-configuration): New syntax. ! (gnus-windows-old-to-new): Conversion between old and new. ! (gnus-split-window): Obsolete variable. ! (gnus-remove-some-windows): New function. ! (gnus-bug): Put point a different place. ! ! Sun May 7 01:12:04 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.65 is released. ! ! * gnus.el (gnus-get-unread-articles): Would not activate some ! native groups. ! ! * nndigest.el (nndigest-first-article-separator): New variable. ! (nndigest-narrow-to-article): Use it. ! (nndigest-request-group): Would be one off in counting messages. ! ! * gnus.el (gnus-summary-setup-buffer): Don't create the buffer if ! it already exists. ! (gnus-summary-read-group): If the summary buffer exists, just ! switch to it. ! (gnus-summary-subject-string): Would bug out on pseudo-articles. ! ! * gnus-vm.el: New file. ! ! * gnus-msg.el (gnus-mail-reply-using-mail): In-reply-to was ! possibly not correct. ! ! * gnus-uu.el: Undefined keymaps. ! ! * gnus.el (gnus-article-date-ut): `lapsed' was some hours off. ! ! Sat May 6 01:48:06 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-article-de-quoted-unreadable): Did not set ! buffer-read-only to nil. ! ! * gnus-score.el (gnus-score-save): Would not save score file if ! the directory didn't exist. ! ! * gnus-vis.el (gnus-summary-make-menu-bar): Added sort-by-score. ! ! * gnus.el (gnus-read-active-file): Don't pretend that we have read ! the active file when we haven't. ! (gnus-summary-catchup): Make catchup-and-exit faster. ! (gnus-summary-sort-by-score): Make the `reverse' element optional ! on all score functions. ! (gnus-read-descriptions-file): Don't barf if the server if down. ! ! * gnus-uu.el (gnus-uu-initialize): Chmod work dir. ! ! * gnus.el (gnus-nov-parse-line): Allow strings as Lines headers. ! (gnus-summary-dummy-line-format): Not aligned properly. ! (gnus-summary-goto-subject): Skip dummy articles. ! (gnus-group-first-unread-group): Went to the first group, not the ! first unread group. ! ! * gnus.el: 0.64 is released. ! ! Mon May 1 01:51:25 1995 Lars Ingebrigtsen ! ! * gnus-vis.el (gnus-server-make-menu-bar): New function. ! ! * gnus.el: Pushed gnus-uu autoloads out to a keymap in gnus-uu. ! (gnus-rebuild-thread): New function. ! (gnus-rebuild-remove-articles): New function. ! (gnus-group-mode-map): Changes. ! ! * gnus-score.el ! (gnus-summary-temporarily-lower-followups-to-author): New command. ! (gnus-summary-lower-followups-to-author): Raised instead of ! lowering. ! ! * gnus.el (gnus-article-date-ut): `lapsed' would give incorrect ! time. ! (gnus-group-mark-group, gnus-group-unmark-group, ! gnus-group-mark-region): New commands and keystrokes. ! (gnus-group-process-prefix): New function. ! (gnus-group-goto-group): New function. ! (gnus-group-catchup-current): Use pro/pre. ! (gnus-group-expire-articles): Ditto. ! (gnus-group-expire-all-groups): Double ditto. ! (gnus-group-set-current-level): Ditto. ! (gnus-delete-line): New function. ! (gnus-summary-mark-article): Don't unconditionally request article ! when using the cache. ! ! Tue May 2 01:52:56 1995 Christian Limpach ! ! * gnus.el (gnus-article-display-x-face): cleaned up and use ! call-process-region now. ! ! Mon May 1 23:40:32 1995 Christian Limpach ! ! * gnus.el (gnus-group-fetch-faq): fixed fetching faq of foreign ! groups ! ! Mon May 1 21:04:22 1995 Scott Byer ! ! * gnus.el (gnus-unread-articles) Put back in dropped change to ! prevent activation of unsubscribed foreign newsgroups. ! ! Sun Apr 30 04:11:31 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-sorted-complement): Would reverse the result given ! a nil list. ! (gnus-summary-refer-article): Would not let you refer expunged ! articles. ! (gnus-summary-goto-article): Give a return value. ! ! * gnus.el: Changes here and there to use the cache. ! ! * gnus-cache.el: New file. ! ! * gnus.el (gnus-article-de-quoted-unreadable): Have interactive ! calls force un-quoting. ! (gnus-article-date-ut): Would choke on distant dates. ! (gnus-summary-respool-article): Use the current backend as a ! default prompt. ! (gnus-summary-respool-article): Behave grafully on nil input. ! (gnus-get-unread-articles): Would barf on virtual servers. ! (gnus-use-cache): New variable. ! ! * gnus.el: 0.63 is released. ! ! Sun Apr 30 01:29:34 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-raise-thread): Would incorrectly not stay ! on the same line when that was required. ! (gnus-article-date-ut): Required arguments. ! ! * gnus-score.el (gnus-score-load-file): Would reset ! gnus-adaptive-score-alist. ! ! Sat Apr 29 22:27:46 1995 Lars Magne Ingebrigtsen ! ! * gnus-uu.el (gnus-uu-post-news): Work in mail buffers as ! well. General cleanup. ! ! * nntp.el (nntp-default-sentinel): Ignore servers that do not ! exist. ! ! * gnus-score.el (gnus-score-add-followups): Used exact match ! instead of substring. ! ! Sat Apr 29 17:58:42 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-gnus-to-quick-newsrc-format): Inhibit quitting in ! a particularly tricky spot. ! (gnus-read-newsrc-el-file): The same. ! (gnus-server-edit-server): New layout. ! (gnus-server-read-server): Wrong interactive spec and returned to ! the wrong buffer. ! (gnus-group-browse-foreign-server): Also allow browsing of ! servers. ! ! * nnml.el (nnml-request-list): Did not set nnml-group-alist. ! ! * gnus.el (gnus-summary-respool-article): Would not let you ! respool. ! ! Sat Apr 29 00:35:17 1995 Lars Magne Ingebrigtsen ! ! * gnus-score.el (gnus-score-add-followups): Did not work. ! ! * nntp.el (nntp-request-article): Would fetch articles even if ! async-fetched. ! (nntp-async-fetch-articles): Would re-fetch the first article. ! ! * gnus.el: 0.62 is released ! ! Fri Apr 28 00:24:34 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-set-mode-line): Would bug out on nil max-lens. ! (gnus-summary-read-group): Did not properly configure windows on ! breaks. ! (gnus-summary-select-article): Would not configure windows ! properly. ! (gnus-summary-exit-no-update): Would go to next group, not next ! unread group. ! (gnus-summary-enter-digest-group): End gracefully if executed on ! something that is not a digest. ! (gnus-server-read-server): New command. ! (gnus-nov-field): Would not grab the last char on the line. ! ! * gnus.el: 0.61 is released ! ! Wed Apr 26 19:48:36 1995 Scott Byer ! ! * gnus.el (gnus-group-get-new-news) Off by one with relation to ! the fix in gnus-get-unread-articles. ! ! Thu Apr 27 23:46:32 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-next-article): Would bug out on nndigest ! groups. ! ! Thu Apr 27 13:45:21 1995 Scott Byer ! ! * nnfolder.el (nnfolder-request-group) Fixed it so it returns an ! active list even when the flag for not checking mail is t. ! ! * gnus.el (gnus-get-unread-articles) Changed comparison with level ! to < to fix fencepost error. Forced active to nil in the case ! where a foreign newsgroup shouldn't be activated. ! ! Wed Apr 26 19:48:36 1995 Scott Byer ! ! * nnfolder.el (nnfolder-request-group) Small performance tweak. ! ! * nnfolder.el (nnfolder-save-mail) Moved the code to kill previous ! newsgroups headers into the loop, affects mail saved to multiple ! folders so that they don't have multiple newsgroup markers ! anymore. ! ! * nnfolder.el (various) Made sure buffer needed saving before each ! request. ! ! Thu Apr 27 22:34:13 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-parse-newsrc-body): Would reverse the list of ! groups if no .newsrc.eld file is present. ! (gnus-parse-newsrc-body): Would subscribe unsubscribed groups. ! (gnus-summary-mode-map): Many keymap changes. ! ! Thu Apr 27 21:45:05 1995 Lars Magne Ingebrigtsen ! ! * gnus-msg.el (gnus-inews-organization): Use the standard work ! buffer. ! (gnus-post-news): Did not use followup-to. ! ! Thu Apr 27 12:38:41 1995 Lars Magne Ingebrigtsen ! ! * gnus-kill.el (gnus-apply-kill-file-internal): Give abetter error ! massage on rn kill files. ! ! * gnus.el (gnus-article-de-quoted-unreadable): No interactive spec. ! ! Wed Apr 26 15:57:28 1995 Lars Magne Ingebrigtsen ! ! * gnus-message.el (gnus-inews-check-post): Would warn about too ! long lines when the last line didn't have a newline. ! ! * gnus-score.el (gnus-score-string): Would loop forever on empty ! matches. ! ! * gnus.el: 0.60 is released. ! ! Wed Apr 26 15:08:00 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-groups-to-gnus-format): Would ding on non-existant ! groups. ! (gnus-summary-next-group): Did not keep pint in group buffer ! updated. ! ! Wed Apr 26 14:42:17 1995 Lars Magne Ingebrigtsen ! ! * nntp.el (nntp-request-article): Would sometime deliver the wrong ! article in async mode. ! ! Wed Apr 26 10:08:36 1995 Lars Ingebrigtsen ! ! * gnus-message.el (gnus-summary-post-forward): New command and ! keystroke. ! ! * gnus-uu.el (gnus-uu-digest-mail-forward): Name change. ! (gnus-uu-digest-post-forward): New command and keystroke. ! ! * nntp.el (nntp-open-server): Refuse to connect to servers that ! have previously timed out. ! ! * gnus.el (gnus-summary-next-group): Allow 0 as a pointer to go to ! the next group. ! (gnus-group-edit-group): All group editing functions have changed. ! ! Tue Apr 25 20:35:40 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-exit-no-update): Go to the right (next) ! group on all kinds of exits. ! (gnus-article-mode-map): Slight improvement in the duplicated ! keystrokes. ! ! Tue Apr 25 16:33:58 1995 Lars Magne Ingebrigtsen ! ! * nnspool.el (nnspool-sift-nov-with-sed): New function. ! (nnspool-sift-nov-with-sed): New variable. ! ! * gnus-score.el (gnus-score-remove-lines-adaptive): New function. ! ! * gnus.el (gnus-summary-remove-lines-marked-with): Do the adaptive ! thing. ! ! * gnus-score.el (gnus-score-string): Allow exact matches. ! (gnus-score-adaptive): Use exact matches. ! ! * gnus.el (gnus-article-de-quoted-unreadable): Replaced with Per's ! functions. ! ! * gnus-score.el (gnus-default-adaptive-score-alist): Name change. ! ! Tue Apr 25 14:20:52 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-insert-pseudos): Didn't treat ! pseudos-separately properly. ! ! Tue Apr 25 15:08:38 1995 Scott Byer ! ! * nnmail.el (nnmail-request-post-buffer) changed how this function ! deals with the list form of follow-to. Before calling mail-setup, ! it now gathers and strips out of the list all "To" headers, and ! calls mail-setup with that collection. This avoids the nasty ! empty To: field problem. Also made sure that additional fields ! are inserted after the To: field. ! ! * gnus-message.el (gnus-mail-reply-using-mail) Added the same fix ! for replying. ! ! Tue Apr 25 12:54:28 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-valid-select-methods): nnvirtual groups should not ! have the address in the name. ! (gnus-article-prepare): When trying to refer an article that ! didn't exist, the current article pointers would become confused. ! (gnus-summary-line-format-alist): Make sure `thread' is defined. ! ! * gnus.el: 0.59 is released. ! ! Mon Apr 24 10:50:09 1995 Scott Byer ! ! * gnus.el (gnus-get-unread-articles) Closed each group after ! checking the number of unread articles in order to minimize memory ! usage when using a file-based backend (e.g., nnfolder). ! ! * nnfolder.el (nnfolder-possibly-change-group) Added check on ! modtime of mbox. This should help those who use procmail. ! ! * nnfolder.el (nnfolder-close-group) Added use of ! nnfolder-always-close. ! ! * nnfolder.el (nnfolder-always-close) Added this variable to ! determine if nnfolder should got for speed or minimize space ! requirements. The old tradeoff. If this new variable is t, ! nnfolder will try and keep only one mbox open at a time. This ! will cost some time! ! ! * nnfolder.el (nnfolder-ignore-active-file) Renamed ! nnfolder-active-file--paranoia to something mor reasonable. Did ! not change the sense. ! ! * nnfolder.el (nnfolder-read-folder) Consolidated the min-max loop ! when being paranoid or recovering from bad active file. ! ! Tue Apr 25 12:27:03 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-server-to-method): Did not find method for native ! groups. ! (gnus-article-x-face-command): Value fix. ! ! Tue Apr 25 11:06:36 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-next-page): Would not allow exit from the ! last group. ! ! * gnus-message.el (gnus-post-news): Would not allow posting from ! the group buffer. ! (gnus-inews-remove-headers): New function to remove headers before ! posting. ! (gnus-inews-lines): Would compute an incorrect Lines header. ! ! * gnus.el (gnus-article-de-quoted-unreadable): Make sure that the ! article really is quoted-unreadable. ! ! Mon Apr 24 17:38:36 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.58 is released. ! ! * nntp.el (nntp-kill-connection): Add a small wait after timing ! out. ! ! * gnus.el (gnus-format-max-width): Didn't work with numbers. ! (gnus-group-first-unread-group): Wouldn't select the first group. ! ! * nntp.el (nntp-default-sentinel): Would fail to find the name of ! the server. ! ! * gnus.el (gnus-group-unsubscribe-current-group): Did not toggle ! properly. ! (gnus-group-set-current-level): Warn about illegal levels. ! ! Mon Apr 24 17:22:27 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-recenter): New version from Sudish. ! ! Mon Apr 24 00:05:59 1995 Christian Limpach ! ! * gnus.el (gnus-article-display-x-face): avoid ! re-search-forwarding the whole article buffer ! ! Mon Apr 24 16:46:06 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-seconds-since-epoch): New function. ! ! * nntp.el (nntp-open-server): Set wrong variable for the port ! number. ! ! * gnus.el (gnus-summary-refer-article): Don't bug out on nil ! refer-article-methods. ! ! Mon Apr 24 16:05:56 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-article-x-face-command): New value. ! ! Sun Apr 23 11:19:32 1995 Lars Ingebrigtsen ! ! * nnspool.el (nnspool-request-post): Post asynchronously. ! ! * nntp.el: Many changes related to asynchronous article fetching. ! ! * gnus.el (gnus-asynchronous): New variable. ! (gnus-article-date-ut, gnus-article-date-local, ! gnus-article-date-lapsed): New commands and keystrokes. ! ! Sun Apr 23 05:34:11 1995 Lars Magne Ingebrigtsen ! ! * gnus-score.el (gnus-score-adaptive-alist): New variable. ! (gnus-score-adaptive): New function. ! ! * gnus.el (gnus-article-de-quoted-unreadable): Translate = on the ! end of lines. ! (gnus-del-mark): Name change from gnus-dread-mark. ! (gnus-use-adaptive-scoring): New variable. ! (gnus-summary-exit): Use it. ! ! * gnus-message.el (gnus-post-news): Don't bug out on posting with ! followup-to methods. ! ! * gnus.el (gnus-group-set-current-level): Bug fix. ! (gnus-request-post-buffer): Open server if it isn't open. ! ! Sat Apr 22 07:27:25 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: Pushed all score code out to a separate file. ! ! * gnus-score.el: New file. ! ! * gnus.el (gnus-newsrc-alist): Name change from gnus-newsrc-assoc. ! ! * gnus.el: 0.57 is released. ! ! Sat Apr 22 04:54:11 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: Many patches from Hallvard B Furuseth on XEmacs and ! kill-buffer matters. ! ! * gnus-uu.el (gnus-uu-digest-and-forward): Make a better name and ! kill the temp buffer. ! ! * gnus.el (gnus-split-methods): Doc fix. ! (gnus-summary-copy-article): Activate non-active newsgroups. ! (gnus-summary-insert-pseudos): View pseudos non-separately. ! (gnus-view-pseudos-separately): New variable. ! ! Fri Apr 21 11:00:53 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-start-news-server): Arguments in incorrect order ! for substring. ! (gnus-summary-refer-article): Always open the server before asking ! for articles. ! (gnus-simplify-subject-fuzzy): Installed Sudish' and Hallvard's ! version. ! ! Fri Apr 21 09:26:06 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-set-current-level): Changed meaning of ! prefix. ! (gnus-level-default-unsubscribed): Missing value. ! (gnus-simplify-subject-fuzzy): substring instead of ! buffer-substring. ! ! * nnml.el (nnml-request-expire-articles): Would sometimes bomb, ! for reasons unknown. ! ! * nnmh.el (nnmh-request-list): Don't list empty groups. ! ! * gnus.el (gnus-mail-forward-using-mail): Use emacs-lisp mode ! map. ! ! * gnus.el: 0.56 is released. ! ! Sun Apr 16 00:34:51 1995 Christian Limpach ! ! * gnus.el (gnus-article-prepare): fixed moving to bookmark when ! displaying article ! ! Fri Apr 21 05:56:51 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-score-check-syntax): Add file names to error ! message. ! (gnus-browse-foreign-server): Numbers would be one off. ! ! * nntp.el (nntp-request-group): Just use the GROUP command. ! ! Fri Apr 21 05:56:34 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.55 is released. ! ! Fri Apr 21 02:50:11 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-start-news-server): Set nnmh-directory in the ! select method. ! ! * nnfolder.el: Installed Scott Byer's patches. ! ! * nnheader.el (nnheader-make-complex-temp-name): New variable. ! ! * gnus-mh.el: Installed Eric Selberg's patches. ! ! * gnus.el (gnus-summary-check-current): New variable. ! (gnus-summary-search-subject): Use variable. ! Did the (replace-match "" t t) thing. ! (gnus-simplify-subject-fuzzy): Buffer implementation. ! ! * nnspool.el (nnspool-seconds-since-epoch): Returned incorrect ! data. ! ! * gnus.el (gnus-article-prepare): Go to the next subject if the ! article is canceled. ! ! Fri Apr 21 02:48:19 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.54 is released. ! ! Thu Apr 20 06:36:33 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-setup-news): Read .newsrc.eld before reading the ! active file. ! (gnus-group-edit-group-parameters): New command and keystroke. ! ! * nntp.el (nntp-server-list-active-group): Improperly initialised. ! ! * gnus.el (gnus-retrieve-groups): New function. ! (gnus-groups-to-gnus-format): New function. ! (gnus-read-active-file): New semantics: `some'. ! (gnus-level-subscribed, gnus-level-unsubscribed, ! gnus-level-zombie, gnus-level-killed): New variables. ! (gnus-inews-check-post): Many of the checks didn't actually check ! anything. ! (gnus-check-before-posting): New variable. ! (gnus-group-edit-group-method): New command and keystroke. ! (gnus-group-mode-map): Change in keymap for edit-group. ! (gnus-server-extend-method): Didn{t properly recognise native ! groups. ! ! * gnus.el: Changes throughout to use the level variables instead ! of the hard-coded level numbers. ! ! Thu Apr 20 04:23:34 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.53 is released. ! ! Thu Apr 20 01:56:59 1995 Lars Magne Ingebrigtsen ! ! * gnus-uu.el (gnus-uu-part-number): New function. ! ! * gnus.el (gnus-post-news): Don't require a group name to be legal ! to allow composing the article. ! (gnus-set-mode-line): Would bug out on a non-numerical ! non-string-length. ! (gnus-mail-reply-using-mail): Would go to the summary buffer ! instead of the mail buffer with non-standard window configs. ! (gnus-summary-next-page): Go to the summary buffer. ! (gnus-mail-reply-using-mail): Yank before hook. ! (gnus-group-mode-map): Reinstituted to old keystrokes. ! Installed Eric Selberg's mh and split-window patches. ! ! * nntp.el (nntp-open-server-function): New variable. ! (nntp-rlogin-parameters): New variable. ! (nntp-rlogin-user-name): New variable. ! (nntp-open-rlogin-stream): New function. ! (nntp-open-network-stream): New function. ! (nntp-retrieve-groups): New function. ! (nntp-open-server): Don't break on a defs list containing just ! "nntp" or a port number. ! ! Wed Apr 19 07:19:31 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.52 is released. ! ! Wed Apr 19 05:51:27 1995 Lars Magne Ingebrigtsen ! ! * nntp.el (nntp-request-group): Error in regexp when using LIST ! ACTIVE. ! ! * gnus.el (gnus-parse-newsrc-body): Don't reset levels. ! (gnus-group-always-list-unread): New variable. ! ! * gnus-uu.el (gnus-uu-save-files): Ask user whether to overwrite ! existing files. ! ! * nnmbox.el (nnmbox-request-expire-articles): Fix from Ilja Weis. ! ! Tue Apr 18 02:45:28 1995 Christian Limpach ! ! * gnus.el (gnus-point-at-bol): new subst ! (gnus-point-at-eol): new subst ! * gnus.el: changed all save-excursions to find point at the ! beginning or end of a line to use either gnus-point-at-bol or ! gnus-point-at-eol. ! ! Wed Apr 19 03:59:04 1995 Lars Magne Ingebrigtsen ! ! * gnus-visual.el (gnus-visual-highlight-selected-summary): ! Highlight correctly with no mouse-face present. ! ! * gnus.el (gnus-current-score-file-nondirectory): New function. ! (gnus-mode-non-string-length): New semantics from Sudish Joseph. ! ! * gnus-uu.el: Included all of Eric Selbergs PostScript functions. ! ! * gnus.el (gnus-summary-mode-line-format-alist): Missing ?s in g ! spec. ! (gnus-summary-read-group): Go to the next group if the group can't ! be selected. ! (gnus-update-summary-mark-positions): Don't bug out on threads. ! (gnus-summary-copy-article): Accept the prefix as the default ! group. ! ! Wed Apr 19 03:28:37 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: Major changes in server handling; new mode; and lots of ! stuff all over in all files. ! ! * gnus.el: 0.51 is released. ! ! Mon Apr 17 08:38:57 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-clear-system): Kill nntp-server-buffer upon exit. ! ! * gnus.el: Added "*" to the beginning of the docs strings of all ! user variables. ! ! Sun Apr 16 03:18:15 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-post-news): Yank before running ! news-reply-header-hook. ! (gnus-group-list-groups): Go to the right group after listing. ! (gnus-summary-respool-article): Allow respooling from newsgroups. ! (gnus-split-methods): New variable. ! (gnus-read-save-file-name): New function. ! (gnus-summary-save-in-rmail): Have all the saving functions use ! this new function. ! ! * gnus-visual.el (gnus-summary-make-menu-bar): Menu change. ! ! * gnus.el (gnus-cancel-news): Don't ask experts. ! (gnus-summary-mark-region-as-read): New command and keystroke. ! ! Sun Apr 16 20:45:38 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-save-newsrc-file): Run save-newsrc-hook even if ! the file is not saved. ! (gnus-summary-insert-pseudos): Would interleave pseudos and real ! articles. ! (gnus-cancel-news): Generate a better error message. ! ! * nnmh.el (nnmh-request-list): Do not try to read unreadable ! directories. ! ! * gnus.el (gnus-copy-sequence): Would choke on just a single cons ! cell. ! (gnus-inews-article): Would insert two \n's too many. ! ! Sat Apr 15 04:29:22 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-use-long-file-name): One quote symbol too many. ! (gnus-article-x-face-command): New variable. ! (gnus-article-display-x-face): New command and keystroke. ! (gnus-newsgroup-active): New internal variable. ! (gnus-update-read-articles): Use this variable to ensure that new ! articles that have arrived while the summary buffer existed are ! not inadvertantly marked as read. ! (gnus-score-headers): Remove exluded score files from the list of ! score file alists. Probably. ! ! * nntp.el (nntp-news-default-headers): New variable. ! (nntp-request-post-buffer): Use it. ! ! * gnus.el (gnus-inews-insert-headers): Extended syntax of ! gnus-required-headers. ! ! Sun Apr 16 00:02:02 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-update-line): Don't mark ancient and read ! articles as low-scored. ! (gnus-inews-article): Would insert headers one line too early. ! ! * gnus.el: 0.50 is released. ! ! Sat Apr 15 22:16:26 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-score-headers): Changed to allow score alists ! returned from function in... ! (gnus-score-find-score-files-function): Wider semantics. ! (gnus-parse-options-lines): Don't parse options if there aren't ! any. ! (gnus-group-default-list-level): New variable. ! (gnus-use-long-file-name): Extended semantics. ! (gnus-group-list-groups): Use new variable. ! (gnus-group-jump-to-group): Bux fix. ! ! Fri Apr 14 08:05:42 1995 Lars Ingebrigtsen ! ! * gnus.el: Installed Fabrice Popineau's XEmacs patches. ! ! * nnfolder.el: Installed Scott Byer's version. ! ! * nntp.el (nntp-request-group): Use LIST ACTIVE group if the ! server supports it. ! ! Fri Apr 14 17:14:44 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-post-news): Set gnus-newsgroup-name when posting. ! ! * nnfolder.el (nnfolder-request-expire-articles): Setcar the wrong ! thing. ! ! * gnus.el (gnus-summary-catchup): Would catchup no matter what ! answer the user gave. ! ! * nnfolder.el (nnfolder-request-close): New function to remove ! nnfolder buffers. ! ! Fri Apr 14 17:09:40 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.49 is released. ! ! Fri Apr 14 00:29:43 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-list-active-group): New function. ! (gnus-browse-server-mode-map): New keystrokes: `l' and ! `L', which both return to the group buffer. ! ! * nntp.el (nntp-list-active-group): New function. ! ! * gnus.el: New spec for current score file. ! (gnus-simplify-subject-fuzzy): Made fuzzier on white space. ! (gnus-summary-cancel-article): Heade headers after replying, etc. ! (gnus-user-mail-address): New variable. ! (gnus-score-orphans): Orphan functions added. ! ! Wed Apr 12 23:13:17 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-score-body): New function. ! (gnus-summary-raise-by-body): All the raise/lower functions and ! keystrokes are added. ! ! Wed Apr 12 17:23:32 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-mail-reply-using-mail): Allow reply-to function to ! return a list of headers to insert. ! (gnus-summary-save-article): Don't re-request articles before ! saving. ! (gnus-summary-read-group): If all articles have been expunged on ! accound of low scores, display all articles. ! (gnus-score-check-syntax): Don't choke on empty score entries. ! ! Wed Apr 12 00:23:01 1995 Lars Ingebrigtsen ! ! * gnus.el: Doc fix. ! (gnus-score-integer): New function. ! (gnus-score-date): New function. ! ! * nntp.el (nntp-accept-response): Give a better error message. ! ! * nnvirtual.el (nnvirtual-update-marked): Removal of article marks ! now propagates to the source groups. ! ! * gnus.el (gnus-select-newsgroup): Adjust marked lists after ! really entering group. ! ! Tue Apr 11 23:08:25 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-catchup-and-goto-next-group): New command ! and keystroke. ! (gnus-summary-toggle-header): Set point at the start up the buffer ! when toggling the header. ! (gnus-score-transform-old-to-new): Would rewrite 'files atoms ! incorrectly. ! ! * nnmail.el (nnmail-request-post-buffer): Bind buffer-read-only to ! nil before attempting to change the buffer. ! ! * gnus-uu.el (gnus-uu-save-files): Don't choke on non-existing ! files. ! ! * gnus.el (gnus-score-save): Make sure that the directory that the ! score file is written to actually exists. ! ! * gnus-kill.el (gnus-kill-file-raise-followups-to-author): ! Misleading message. ! ! * gnus.el (gnus-summary-save-article): Remove any X-Gnus header ! lines before saving. ! ! Tue Apr 11 00:03:35 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-number-of-articles-in-thread): New ! function. ! (gnus-summary-score-entry): A slightly more elaborate prompt. ! (gnus-group-first-unread-group): New function and keystroke. ! ! Mon Apr 10 20:41:55 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-mark-as-read-forward): Overwrite E marks. ! (gnus-group-jump-to-group): Allow jumping to groups not in the ! active file. ! (gnus-summary-line-format-alist): New spec: number of articles in ! the current subthread. ! ! * nnml.el (nnml-possibly-create-directory): Create directories on ! the fly instead of creating all possible directories at startup. ! ! * nnmail.el (nnmail-article-group): Allow nnmail-split-methods to ! be a function to be called. ! ! * gnus.el (gnus-nov-parse-line): Allow articles without ! message-ids to pass through. Fudge temporary ids. ! ! * nnml.el (nnml-make-nov-line): Create dummy message-ids for ! articles that do not have them. ! ! * gnus.el (gnus-group-make-group): Refuse to create groups that ! already exist. ! (gnus-group-change-level): Don't enter foreign groups into killed ! lists. ! (gnus-parse-n-options): Handle options -n lines as the were ! supposed to - sequentially. ! (gnus-newsrc-options-n-yes, gnus-newsrc-options-n-no): Obsolete ! variables. ! (gnus-newsrc-options-n): New variable. ! (gnus-matches-options-n): New function. ! (gnus-summary-next-group): Kill summary buffer even when C-g'ing ! while choosing the next group after n'ing. ! (gnus-summary-mode-line-format-alist): New format spec added. ! (gnus-short-group-name): New function. ! (gnus-mail-forward-using-mail): Use From line instead of grup name ! in the Subject header when forwarding. ! (gnus-summary-mode-line-format-alist): Added user-defined spec to ! the mode line alists. ! (gnus-score-save): Would set `gnus-score-cache' to nil. ! ! * gnus-uu.el (gnus-uu-mark-sparse): Did not create hashtb before ! using it. ! ! * gnus.el (gnus-mail-other-window-using-mail): Used lisp keymap. ! ! Mon Apr 10 20:29:26 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-move-article): Didn't remove articles from ! list of unreads. ! ! Mon Apr 10 14:59:49 1995 Lars Magne Ingebrigtsen ! ! * gnus.el, gnus-uu.el: Changed all instances of ! mail-header-separator to use regexp-quote and anchors. ! ! * gnus.el (gnus-nov-parse-line): Don't choke on malformed NOV ! lines. ! ! Sun Apr 2 13:16:03 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-inews-insert-headers): Didn't check new ! -gather-limit correctly. ! (gnus-summary-prepare-threads): Print subjects if `fuzzy' was ! used, but subjects aren't equal. ! ! Sun Apr 2 12:11:17 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.47 & 0.48 is released. ! ! * nnmh.el (nnmh-article-pathname): Wouldn't find groups that were ! located in directories that had "." in the directory names. ! ! * gnus.el (gnus-score-load-file): Changing score alists would have ! no effect. ! ! Sat Apr 1 16:45:14 1995 Lars Ingebrigtsen ! ! * gnus-visual.el (gnus-visual-highlight-selected-summary): Would ! mess up selected face when no mouse highlights were used. ! ! * nnml.el (nnml-request-create-group): Really create groups that ! are created. ! ! * gnus.el (gnus-setup-news): If the local server can't be ! contacted, just ignore it and offer to continue. ! (gnus-group-post-news): Set newsgroup name to nil before offering ! to post. ! (gnus-summary-read-group): Summary buffer wouldn't be killed when ! `n'-ing to a group that had all its articles expired. ! ! * nntp.el (nntp-open-server): Allow quitting when setting up ! connection to a server. ! ! * gnus.el (gnus-articles-to-read): Ticked articles would become ! read when newsgroups were entered with C-u SPC. ! (gnus-inews-check-post): Check outgoing post for long lines. ! (gnus-score-load-score-alist): Ignore empty score files. ! (gnus-score-check-syntax): Check score file syntax. ! ! Sat Apr 1 10:41:11 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-move-article): Did not remove ticked and ! dormant articles from relevant lists. ! ! Fri Mar 31 11:49:44 1995 Lars Magne Ingebrigtsen ! ! * gnus-kill.el (gnus-apply-kill-file-internal): Did not add kill ! buffers to the buffer list for later killing. ! ! * nnml.el (nnml-request-expire-articles): Would bug out on empty ! groups. ! ! Wed Mar 29 13:34:45 1995 Lars Ingebrigtsen ! ! * nnspool.el (nnspool-request-newgroups): Use floats instead of ! fudging. ! ! * gnus.el (gnus-adjust-marked-articles): Remove expired reply ! marks. ! ! * nnvirtual.el (nnvirtual-create-mapping): Ignore marks on ! articles that are expired. ! ! * gnus.el (gnus-gather-threads): Allow fuzzy comparisons. ! (gnus-simplify-subject-fuzzy): New function. ! ! * nnml.el (nnml-request-create-group): New function. ! ! * gnus.el (gnus-group-make-group): Create nnml groups when ! requested. ! (gnus-request-create-group): New function. ! ! * nntp.el (nntp-request-article): Avoid obsolete concating of ! numbers-as-strings. ! ! Wed Mar 29 10:21:00 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.46 is released. ! ! Wed Mar 29 09:55:15 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-score-load-file): Use different method for ! figuring out whether score file names are relative. ! ! Wed Mar 29 08:54:25 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-set-info): Bugged out on lists instead of ! ranges. ! ! * nntp.el (nntp-open-server): Would try to send MODE READER even ! when opening was unsuccessful. ! ! Wed Mar 29 03:56:05 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-faq-directory): Change in value. ! ! Tue Mar 28 11:06:18 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-archive-directory): New variable. ! (gnus-group-make-archive-group): New command and keystroke. ! (gnus-get-unread-articles): Did not properly activate nnvirtual ! groups. ! (gnus-summary-insert-pseudos): Didn't initialize hashtb before ! inserting pseudos. ! ! Mon Mar 27 20:58:05 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-sort): If used in summary-prepare-hook, ! would lead to infinite recursion. ! ! Mon Mar 27 19:09:35 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-mail-other-window-using-mail): Would give wrong ! parameters to sendamil function. ! ! Mon Mar 27 19:06:58 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.45 is released. ! ! Mon Mar 27 18:31:05 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-catchup-to-here): Would mark everything as ! read. ! ! * nnml.el (nnml-request-expire-articles): Max without apply. ! ! Mon Mar 27 12:16:37 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-no-groups-message): New variable. ! (gnus-group-best-unread-group): Don't just to the current group. ! ! Mon Mar 27 11:18:40 1995 Lars Magne Ingebrigtsen ! ! * gnus-kill.el (gnus-kill): Would remove all kill entries from ! kill files. ! ! * gnus.el (gnus-post-news): Did not work from the group buffer. ! (gnus-score-load-file): Would unconditionally overwrite expunge ! and mark levels. ! ! Mon Mar 27 11:13:43 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.41-0.44 released in quick succession. Fixed new range ! operators. ! ! Sat Mar 25 05:05:26 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-compress-newsrc-assoc, ! gnus-uncompress-newsrc-assoc): Compress lists of marked articles ! before writing them to the .newsrc.eld file. ! (gnus-select-newsgroup): auto-expire match on full name. ! (gnus-select-newsgroup): New element in select methods: ! auto-expire. ! (gnus-save-scores): New variable. ! (gnus-summary-exit): Use it. ! (gnus-newsrc-to-gnus-format): If .newsrc was newer than ! .newsrc.eld, all foreign groups would be hosed. ! ! * gnus.el: All range functions have changed to allow an extended ! syntax. ! ! Fri Mar 24 07:17:20 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-move-article): Copy marks when moving ! articles. ! (gnus-set-sorted-intersection): Would compute incorrect ! intersection. ! ! * nndoc.el (nndoc-retrieve-headers): Insert Lines header. ! * nnmh.el (nnmh-retrieve-headers): Ditto. ! (nndigest-retrieve-headers): Ditto. ! ! * nndigest.el (nndigest-narrow-to-article): Don't include the ! closing digest separator in an article. ! ! * gnus.el (gnus-group-change-level): When subscribing to ! non-existant groups, would claim that there was one unread article ! in the group. ! (gnus-summary-delete-article): Remove process mark after deleting ! articles. ! (gnus-score-load-file): 'files was not properly handled, and edits ! would end up with the wrong alist as the current one. ! (gnus-score-edit-alist): Name change from -file. ! (gnus-score-edit-file): New function and keystroke. ! ! * nntp.el (nntp-request-newgroups): Would bug out due to a `let' ! instead of a `let*'. ! ! * gnus.el (gnus-score-save): Score files would not be saved. ! (gnus-summary-update-line): Would mark as read-below even when ! attempting to remove the mark. ! ! Thu Mar 23 08:29:56 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-save-article-file, ! gnus-summary-save-article-folder, ! gnus-summary-save-article-rmail): New commands and keystrokes. ! (gnus-summary-sort): All sort commands now also work when ! threading is used. ! (gnus-summary-mode-map): Several key changes. ! ! * nnml.el (nnml-request-expire-articles): Update active file as ! well. ! * nnbabyl.el (nnbabyl-request-expire-articles): Ditto. ! * nnfolder.el (nnfolder-request-expire-articles): Ditto. ! * nnmbox.el (nnmbox-request-expire-articles): Ditto. ! ! * nnmail.el (nnmail-tmp-directory): New variable. ! (nnmail-move-inbox): Use it. ! ! * nnvirtual.el (nnvirtual-update-marked): Would insert non-visible ! component groups into the group buffer. ! ! * nnmh.el (nnmh-get-new-mail): Don't create directories unless ! mail reading is wanted. ! ! * nnfolder.el (nnfolder-read-folder): Insert number of lines in ! the article. ! ! * gnus.el (gnus-group-unsubscribe-group): Would refuse to ! subscribe to groups not in active file. ! ! Thu Mar 23 13:23:45 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: Remove two calls to `debug'. ! ! * gnus.el: 0.40 is released. ! ! Thu Mar 23 06:29:03 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.39 is released. ! ! Thu Mar 23 04:10:52 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-mail-other-window-using-mail): Allow yanking, and ! fix winconf on exit. ! (gnus-group-faq-directory): Wrong default value. ! (gnus-group-fetch-faq): Did not work. ! (gnus-score-save): Would save score files even when there wasn't ! one. ! ! * gnus-uu.el (gnus-uu-decode-uu-and-save): Use an uu default ! directory. ! ! * nnfolder.el (nnfolder-read-folder): Would bug out if there was ! no active file. ! ! * gnus.el (gnus-ask-server-for-new-groups): Did not really work ! for any backends. ! (gnus-group-unsubscribe-group): Would not let you susbcribe to ! killed groups. ! (gnus-summary-catchup): Would not catchup expired articles. ! ! Thu Mar 22 14:23:03 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.38 is released. ! ! Wed Mar 22 13:55:21 1995 Lars Ingebrigtsen ! ! * nntp.el (nntp-send-mode-reader): Blocked reading of active list. ! ! Wed Mar 22 13:55:05 1995 Lars Ingebrigtsen ! ! * gnus.el: 0.37 is released. ! ! Wed Mar 22 08:37:15 1995 Lars Magne Ingebrigtsen ! ! * nntp.el (nntp-send-mode-reader): Actually send the mode reader ! command. ! ! Wed Mar 22 00:00:01 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-make-threads-and-expunge): Really, really expunge ! low-scored articles. Right. ! (gnus-make-threads): Simpler function to speed things up when ! expunging is not needed. ! ! * nnvirtual.el (nnvirtual-create-mapping): Would bug out in the ! presence of bogus groups. ! ! * nnspool.el (nnspool-possibly-change-directory): Don't error out ! when errors occur, but return a message instead. ! ! * nndoc.el (nndoc-possibly-change-buffer): Would bug out if the ! file didn't exist. ! ! * gnus.el (gnus-mark-xrefs-as-read): Handled crossrefs to groups ! with no read articles strangely. Also didn't perform crossreffing ! when select methods were only almost equal. ! (gnus-make-articles-unread): Would bug out when nnmh was the ! native server. ! ! * nnbabyl.el (nnbabyl-read-mbox): Did not properly label articles. ! ! * gnus.el (gnus-set-mode-line): Do unread-and-unticked by default. ! (gnus-summary-pop-article): New command and keystroke. ! (gnus-mode-non-string-length): New variable. ! (gnus-set-mode-line): Use it. ! (gnus-score-mode): New mode to edit score files. ! (gnus-inews-date): Did the opposite thing of what it was supposed ! to do with time zones. ! (gnus-group-make-group): Don't prompt for address if that is ! irrelevant. ! ! Tue Mar 21 10:01:20 1995 Lars Ingebrigtsen ! ! * nnfolder.el (nnfolder-read-folder): Would only work if incoming ! mail was split by Gnus. ! ! * gnus.el (gnus-score-transform-old-to-new): Function for ! rewriting old score files. ! (gnus-score-expiry-days): Name change from ! `gnus-kill-expiry-days'. ! (gnus-score-headers): All score functions rewritten to deal with ! the new format. ! (gnus-summary-goto-unread): New variable. ! (gnus-summary-mark-forward): Use it. ! ! Tue Mar 21 04:50:05 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-mark-article): Low-scored articles in ! auto-expirable grups should be expirable. ! ! Mon Mar 20 00:07:36 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-post-news): Also prompt for Subject, if that is ! required. ! (gnus-global-score-files): New variable. ! (gnus-score-score-files): Use it. ! (gnus-score-save): Don't attempt to save read-only score files. ! (gnus-summary-mode-map): Score map error. ! (gnus-score-load-score-alist): New function. ! (gnus-summary-*-raise/lower-by-id): New commands and keystrokes ! for raising/lowering by message-id. ! ! * nntp.el (nntp-request-post-buffer): Don't rely on any Gnus ! variables. ! ! * gnus.el: Lots and lots of doc fixes. ! (gnus-execute): Would not allow use from summary buffer. ! (gnus-local-timezone): Removed variable. ! (gnus-summary-followup): Don't display article. ! ! Sun Mar 19 04:34:30 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-activate-newsgroup): If a server can't be reached, ! there's not much point in trying to request groups from it. ! (gnus-mark-xrefs-as-read): Also do Xrefs to unsubscribed groups ! unconditionally if virtual groups are used. ! ! * nntp.el (nntp-open-server): Set up timeouts for connections. ! (nntp-connection-timeout): New variable. ! ! * gnus.el (gnus-get-unread-articles): Allow activation of virtual ! groups. ! (gnus-kill-file-mode): Reinstated most GNUS functions and took out ! all gnus-raise/lower code. ! (gnus-summary-mode): Doc fix. (Snicker.) ! (gnus): Move startup hook backwards. ! (gnus-articles-to-read): Use total-number as the default. ! (gnus-member-of-range): Minor inaccuracy. ! (gnus-sorted-complement): New, faster function. ! (gnus-articles-to-read): Use it. ! (gnus-sorted-intersection, gnus-set-sorted-intersection): New ! functions. ! (gnus-select-newsgroup): Use them. ! ! Sun Mar 19 02:46:15 1995 Lars Magne Ingebrigtsen ! ! * nnvirtual.el (nnvirtual-retrieve-headers): Would leave extra ! spaces before the Xref sometimes, causing problems for subsequent ! Xref handling. ! ! Sun Mar 19 02:46:01 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.36 is released. ! ! Sun Mar 19 00:03:37 1995 Lars Magne Ingebrigtsen ! ! * nnvirtual.el (nnvirtual-retrieve-headers): When NOV lines only ! had seven tabs, this would deliver incorrect results. ! ! * gnus.el (gnus-execute-1): Would not search through article ! bodies. ! (gnus-summary-prepare-threads): 'empty was not properly respected. ! ! * nntp.el (nntp-open-server): Would bug out if server refused ! connection. ! ! * gnus.el (gnus-make-threads): Expunge non-scored articles, if ! wanted. ! (gnus-summary-prepare-threads): When not threading, expunge ! nmon-scored, if wanted. ! ! Sat Mar 18 23:39:47 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-insert-line): Would bug out if ! gnus-summary-default-score was nil. ! (gnus-inews-news): If `gnus-mail-courtesy-message' is nil, don't ! append one. ! ! Sat Mar 18 16:39:59 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-group-edit-group): Use pp. ! (gnus-score-change-score-file): New command and keystroke. ! ! * nntp.el (nntp-request-post-buffer): Pass the request on to ! nnmail if that is wanted. ! ! * gnus.el (gnus-post-news): Send mail even when requesting post ! when `to-address' is set. ! ! * nntp.el (nntp-server-opened-hook): Doc fix. ! (nntp-send-mode-reader, nntp-send-authinfo): New functions. ! ! * gnus.el (gnus-score-find-bnews): Would bug out when presented ! with the file "SCORE". ! ! Fri Mar 17 14:05:54 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-exit): Buffer-local vectors would not be ! garbage-collected, leading to a major memory drain. ! ! Thu Mar 16 22:14:14 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-update-read-articles): Would mark ticked articles ! not displayed as read. ! (gnus-member-of-range): Also accept single-range ranges. ! (gnus-get-unread-articles-in-group): Adjust ticked and dormant ! articles before computing the number of unread articles. ! (gnus-summary-next-article): Would need an extra C-n before ! moving to the right groups (sort of). ! ! Thu Mar 16 16:52:19 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.35 is released. ! ! Thu Mar 16 15:47:33 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-read-descriptions-file): Changed pattern to ! delete. ! (gnus-group-describe-group): Added "force" prefix. ! ! Thu Mar 16 00:08:23 1995 Lars Ingebrigtsen ! ! * nnvirtual.el (nnvirtual-create-mapping): Be more lenient with ! component groups that can't be requested. ! ! * nnml.el (nnml-possibly-change-directory): Don't signal errors. ! ! * gnus.el (gnus-group-get-new-news-this-group): Display better ! error messages when errors occur. ! ! * nnspool.el (nnspool-request-group): Return an error message if ! the group can't be selected. ! ! * nntp.el (nntp-open-server): Don't bug out if getting a C-g while ! waiting for initial contact. ! ! * nnspool.el (nnspool-request-newgroups): Now also supported by ! nnspool. ! ! * gnus-visual.el (gnus-group-make-menu-bar): -make-doc-group did ! not exist. ! ! * gnus.el (gnus-group-faq-directory): Missing leading slash. ! ! * nnfolder.el (nnfolder-request-list): The first time this is ! called, create the active file. ! ! * gnus.el (gnus-group-change-level): When subscribing to killed ! groups with no articles, would enter wrong number of read ! articles. ! ! * nnspool.el (nnspool-server-opened): Would return t even when not ! opened. ! ! Wed Mar 15 23:47:52 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-get-new-news-in-group): Give a sensible return ! value. ! (gnus-group-get-new-news-this-group): Beep if group can't be ! activated. ! ! * nnfolder.el (nnfolder-request-group): Complain if the group ! doesn't exist. ! ! Wed Mar 15 19:14:47 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-refer-article): Would behave strangely ! when refering an article already present in the summary buffer. ! ! Wed Mar 15 17:53:14 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.34 is released. ! ! Wed Mar 15 00:53:47 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-post-news): Would bug out when posting from the ! group buffer. ! ! * gnus-uu.el (gnus-uu-grab-articles): Don't mark ticked (etc) ! articles as read. ! ! * gnus.el (gnus-find-method-for-group): Before no groups were ! entered, a bug here would result in an incorrect error message ! when the nntp server couldn't be contacted. ! (gnus-summary-mode-map): Several changes. ! (gnus-read-descriptions-file): Would delete lines that were valid. ! ! Tue Mar 14 23:11:30 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-next-article): Enable the use of C-n and ! C-p when choosing "next group" in the summary buffer. ! (gnus-summary-recenter): Behaves in a slightly modified ! fashion. Now also works with absolutely all sizes. ! ! Mon Mar 13 11:13:41 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-catchup): Would mark all as read, even if ! to-here was non-nil. ! (gnus-summary-catchup-to-here): Disable prompting. ! (gnus-summary-update-lines): Do updateing even with gnus-visual ! nil. ! (gnus-score-load-file): New atom - mark-and-expunge. ! ! * nnmail.el (nnmail-split-methods): New semantics. ! (nnmail-article-group): Use them. ! ! * gnus.el (gnus-group-list-matching): Fix and bound to keys and ! menus. ! (gnus-group-list-all-matching): New command. ! (gnus-group-sort-groups): Would make all groups disappear. ! ! * (-request-move-article, -request-accept-article): Only do saving ! after the last article has been moved. ! ! * nnml.el (nnml-save-nov): Only save modified buffers. ! ! * gnus.el (gnus-summary-move-article): Only save nov files once ! when moving many articles. ! (gnus-post-news): Did not allow interactive calls. ! ! Sun Mar 12 16:52:50 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-mail-forward-using-mail): Would not bind ! `gnus-mail-send-and-exit' to `C-c C-c'. ! ! Sun Mar 12 16:30:28 1995 Lars Ingebrigtsen ! ! * gnus.el: 0.33 is released. ! ! Sun Mar 12 09:42:11 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-prepare-threads, gnus-make-threads): ! Really expunge all low-marked articles if that is wanted. ! (gnus-score-score-files): Would bug out if `gnus-use-long-names' ! was nil and no score file exists. ! ! Sat Mar 11 19:14:05 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-toggle-threads): Go to the last article if ! none is present on the current line. ! (gnus-summary-prepare-threads): Cull dormant and low-scored ! articles when displaying non-threaded summary buffers. ! (gnus-post-news, gnus-mail-reply-using-mail): Respect ! `gnus-use-full-window'. ! (gnus-summary-copy-article): New command and keystroke. ! ! Fri Mar 10 05:24:11 1995 Lars Ingebrigtsen ! ! * gnus.el: 0.32 is released. ! ! Fri Mar 10 05:24:11 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-next-article, gnus-summary-prev-article, ! gnus-summary-prev-group): New implementations. ! (gnus-article-prepare): The summary mode line would say "1 unread" ! when there were none. ! (gnus-summary-toggle-header): Did not hide headers after using ! MIME. ! (gnus-check-bogus-newsgroups): Removed checking for duplicate ! killed groups. ! (gnus-check-duplicate-killed-groups): New function. ! (gnus-summary-update-mark): Allow summary-clear-mark to clear even ! the low-score-mark. ! (gnus-check-first-time-used): Don't re-subscribe default groups ! when re-scanning, before creating the .newsrc files. ! ! * gnus-uu.el (gnus-uu-decode-save): Insisted on saving to an ! existing file. ! ! Thu Mar 9 08:44:18 1995 Lars Ingebrigtsen ! ! * nnfolder.el (nnfolder-request-move-article): Did not work. ! ! * nnmbox.el (nnmbox-request-move-article): Did not work at all. ! ! * nnvirtual.el (nnvirtual-retrieve-headers): Did not properly ! translate xrefs from foreign groups. ! ! Mon Mar 6 06:13:26 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-fetch-faq): New command and keystroke. ! (gnus-group-faq-directory): New variable. ! (gnus-group-fetch-faq): New command and keystroke. ! (gnus-apply-kill-file): No longer calls expunge-below. ! ! * nntp.el (nntp-request-group-description): New function. ! ! * gnus.el (gnus-extract-address-components): Understands some ! formats better. ! (gnus-cut-thread): Make sure all expunged articles are marked as ! read. ! (gnus-group-sort-groups): New command and keystroke. ! (group-group-sort-by-alphabet, gnus-group-sort-by-unread, ! gnus-group-sort-by-level): New functions. ! (gnus-group-sort-function): New variable. ! (gnus-group-describe-group): Use XGTITLE for group descriptions. ! (gnus-group-get-description): New function. ! (gnus-request-group-description): New function. ! ! * nnmbox.el (nnmbox-request-move-article): Did not work and would ! destroy the active list. ! ! * gnus.el (gnus-score-load-file): Add a 'touched to the alist if ! there isn't one already. ! (gnus-score-save): Remove 'touched before writing score file. ! (gnus-score-find-bnews): Always return the local score file, even ! if it doesn't exist. ! (gnus-score-load-file): Really execute special atoms. ! (gnus-score-set, gnus-score-get): Return to the old definitions of ! these functions. ! (gnus-cut-thread): Cut dormant and ancient articles from the ! threads. ! (gnus-summary-show-all-dormant): New implementation. ! (gnus-summary-hide-all-dormant): New command and keystroke. ! (gnus-make-threads): Now expunges articles with low scores. ! (gnus-summary-show-all-expunged): New implementation. ! (gnus-summary-catchup): Did not mark expunged articles as read. ! ! Sun Mar 5 01:29:49 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-mark-article): Also auto-expire caught up ! articles. ! (gnus-group-make-kiboze-group): Would produce incorrect score ! files. ! (gnus-group-insert-group-line): Would scroll the top off the ! screen. ! ! Sat Mar 4 02:32:11 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-read-group): Would do strange stuff to the ! window configuration when not using full screen. ! (gnus-get-unread-articles-in-group): Check for illegal read ! numbers. ! ! * gnus-uu.el (gnus-uu-save-files): Would bug if the file already ! existed. ! ! Sat Mar 4 00:32:07 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-mark-xrefs-as-read): Would compute the wrong ! number of unread articles. ! ! Fri Mar 3 23:52:28 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-search-forward): Would ignore level 5 ! groups. ! ! Fri Mar 3 00:41:42 1995 Lars Magne Ingebrigtsen ! ! * nnml.el (nnml-request-group): Would not work if the active file ! was changed from without. ! ! * gnus.el (gnus-summary-move-article): Have the group prefix be ! the initial string. ! (gnus-group-edit-group-done): pop instead of switch to edit ! buffer. ! (gnus-group-set-info): Now also accepts group name changes. ! (gnus-group-prepare-flat): Sort killed and zombie groups. ! (gnus-extract-address-components): New variable. ! ! * gnus.el: 0.31 is released ! ! Thu Mar 2 01:57:30 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-refer-article-method): New variable. ! (gnus-summary-refer-article): Use it. ! (gnus-find-method-for-group): Use the results of the usage. ! (gnus-request-article-this-buffer): Use it even more. ! (gnus-group-mode-map): make-directory-group and make-doc-group ! have moved. ! (gnus-group-make-doc-group): Check whether the doc group exists ! before creating it. ! (gnus-group-make-kiboze-group): New command and keystroke. ! ! * nnfolder.el: New one-file one-group mail backend. ! ! * nnmail.el (nnmail-move-inbox): Would occationally kill a random ! buffer. Just to keep the users on their toes. Just for the heck of ! it. ! ! * nnvirtual.el (nnvirtual-create-mapping): Would barf if component ! groups were unactivated. ! (nnvirtual-retrieve-headers): Would deliver incorrect Xrefs if ! component groups were foreign. ! ! * gnus.el (gnus-summary-insert-pseudos): Use the `not-confirm' ! value of gnus-view-pseudos. ! (gnus-group-suspend): Don't kill the dribble buffer. ! ! Wed Mar 1 20:58:35 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-save-newsrc-file): Would bug after suspending. ! ! Wed Mar 1 17:01:49 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-article-remove-cr): Didn't set read-only to nil. ! (gnus-browse-foreign-server): Ignore the groups that should be ! ignored. ! ! * nnspool.el (nnspool-retrieve-headers-with-nov): Misplaced paren. ! (nnspool-nov-directory): New variable. ! (nnspool-retrieve-headers-with-nov): Use variable. ! ! * gnus.el (gnus-inews-domain-name): Try to guess the domain name ! from (system-name) if all else fails. ! (gnus-score-find-bnews): Get even that trailing "/" deleted from ! the kill file dir name. ! ! Wed Mar 1 17:01:25 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.30 is released. ! ! Wed Mar 1 00:16:38 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-inews-unique-id): New message-id look. ! ! * nnml.el (nnml-request-group): Returned nothing if called without ! having been pre-activated by the presence of new mail. ! ! * gnus.el (gnus-group-prepare-flat): Did not list groups with only ! ticked articles. ! (gnus-update-read-articles): Miscalculated number of unread ! articles. ! (gnus-summary-line-format-alist): %N defined as a number. ! (gnus-summary-exit): When `gnus-use-full-window' was nil, strange ! stuff would happen. ! (gnus-subscribe-newsgroup): Bugged out on near-empty group ! buffers. ! (gnus-check-new-newsgroups): Can now specify a list of select ! methods to be asked. ! (gnus-group-set-current-level): Advance after setting level. ! (gnus-view-pseudos): New value: not-confirm, for totally automatic ! viewing. ! (gnus-get-new-news-in-group): Would break on killed groups. ! (gnus-update-read-articles): Would break on non-active groups. ! ! Tue Feb 28 22:56:22 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-select-newsgroup): Kill the summary buffer if the ! group can't be entered. ! ! * nnml.el (nnml-request-group): Occationally replied nil. ! ! * gnus.el (gnus-group-make-doc-group): Did not work at all. ! (gnus-summary-enter-digest-group): Would mess with ! `gnus-newsrc-assoc'. ! ! Tue Feb 28 19:16:05 1995 Lars Magne Ingebrigtsen ! ! * nnkiboze.el (nnkiboze-request-group): Would bug on empty groups. ! ! Tue Feb 28 18:12:30 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.29 is released. ! ! Tue Feb 28 00:25:04 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-group-prepare-function): New variable. ! ! * nnml.el (nnml-request-group): Faster implementation. ! ! * gnus.el: All y-or-n-p's and yes-or-no-p's delete their messages ! from the echo area. ! ! * nnselect.el: New backend. ! ! * gnus.el (gnus-batch-score): Can now also be used interactively. ! ! Mon Feb 27 17:22:54 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-update-format-specifications): Would read active ! file when %D was in the group line spec unconditionally. ! (gnus-group-make-doc-group): Look through path for doc group. ! (gnus): Don't show describe-briefly. ! ! Mon Feb 27 14:52:48 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-use-dribble-file): New variable. ! ! Sun Feb 26 19:42:24 1995 Lars Ingebrigtsen ! ! * nnbabyl.el: New backend for reading rmail files. ! ! * nnml.el (nnml-request-replace-article): Update nov lines after ! accepting an edited article. ! ! * gnus.el (gnus-update-summary-mark-positions): The user can now ! also specify where the marks are to go (with some limits). ! ! Sat Feb 25 19:14:40 1995 Lars Ingebrigtsen ! ! * nnvirtual.el (nnvirtual-update-marked): Handles all marks ! properly (again). ! ! * gnus.el (gnus-start-news-server): Would not accept non-nntp ! select methods interactively. ! ! * nnvirtual.el (nnvirtual-retrieve-headers): Pass on NOV lines ! instead of HEADers to Gnus. ! (nnvirtual-convert-headers): Convert HEADers, if nnvirtual is ! handed them, into NOV lines. ! ! * nntp.el (nntp-retrieve-headers-with-xover): Would reply t the ! first time used, even if the server wasn't XOVER capable. ! ! Sat Feb 25 16:44:26 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-list-zombies): Let the user know if there ! are no zombie groups. ! ! Sat Feb 25 16:01:13 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.28 is released. ! ! Sat Feb 25 16:01:13 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-exit): Kill expunged buffer on exit. ! ! Sat Feb 25 13:44:56 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-unsubscribe-group): Don't require a matching ! name if the active have haven't been read. ! (gnus-article-word-wrap): And all the other article functions ! didn't set buffer-read-only to nil first. ! (gnus-sorted-header-list): Added To: to the list of default ! visible headers. ! (gnus-score-set): Always enter scores into the local score file. ! (gnus-summary-raise-thread): Update mode line. ! ! Sat Feb 25 01:38:07 1995 Lars Ingebrigtsen ! ! * nnvirtual.el: Rewrite. Got rid of that pesky vector. Also enable ! reading read articles from the source groups. ! ! Fri Feb 24 22:30:38 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-options-subscribe, gnus-options-not-subscribe): ! New variables. ! (gnus-parse-options-lines): Use new variables. ! ! Fri Feb 24 18:32:38 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-describe-all-groups): Did not work. ! ! Fri Feb 24 17:34:55 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.26 is released. ! ! * nntp.el (nntp-maximum-request): Set to 400. ! ! * gnus.el (gnus-summary-search-article): Would bug if executed ! at the end of the buffer. ! ! Fri Feb 24 00:03:04 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-insert-pseudos): Insert pseudo-articles ! after the articles from whence they came. ! (gnus-group-make-doc-group): New command and keystroke. ! (gnus-check-first-time-used): Subscribe to the doc group if this ! is the first time used. ! ! * gnus-uu.el (gnus-uu-grab-articles): Have article numbers ! associated with pseudos. ! ! * gnus.el (gnus-group-list-groups): The group buffer would ! sometimes be killed at this point. ! ! * nndoc.el: New backend for reading a single mbox-like file as one ! newsgroup. ! ! * nndigest.el (nndigest-close-group): Kill the nndigest group ! buffer. ! ! * gnus.el (gnus-configure-windows): Summary and article buffers ! would spuriously change to buffer-read-only nil. ! (gnus-summary-work-articles): Would sort instead of reverse the ! list of processable articles. ! ! Thu Feb 23 23:30:14 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-read-mark): Both `R' and `D' marks. ! ! * nnmbox.el ('nnmbox-request-post-buffer): Cyclic definition. ! ! * gnus.el (gnus-summary-mail-forward): Would not restore window ! configuration properly after sending mail. ! ! Thu Feb 23 16:09:54 1995 Lars Magne Ingebrigtsen ! ! * gnus.el: 0.25 is released. ! ! Thu Feb 23 10:20:46 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-enter-digest-group): New command. ! (gnus-summary-mode-map): `E' - expiry, `e' - edit article. ! ! * nndigest.el: New backend. ! ! * gnus.el (gnus-mark-xrefs-as-read): Would not mark xrefs as read ! when select methods were similar. ! (gnus-group-insert-group-line): %t did not work properly in the ! specs. ! (gnus-score-hierarchical): Removed variable. ! (gnus-score-find-single, gnus-score-find-hierarchical): New ! functions. ! (gnus-score-find-bnews): Renamed function. ! (gnus-score-headers): Call these new functions from here. ! (gnus-summary-move-article): Remove any process marks. ! Removed all old digest functions. ! ! Thu Feb 23 09:49:46 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-mode-map): `M H' for ! gnus-summary-catchup-to-here. ! ! * gnus-uu.el (gnus-uu-mark-all): Would loop indefinitely. ! ! * gnus.el (gnus-summary-mode-map): `e' sets the expiry mark. ! ! Wed Feb 22 17:32:37 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-activate-newsgroup): Make Gnus take heed of server ! ports. ! (gnus-summary-raise-by-subject & friends): Remove "Re: " from ! subjects by default. ! (gnus-summary-mode-map): Changed `M C-d' and `M C-s' to `M D' and ! `M S'. ! ! Wed Feb 22 10:12:14 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-mode-map): Changed `M-d' and `C-M-d' back ! to `x' and `X'. ! (gnus-summary-quit): Would kill the group buffer. ! (gnus-summary-exit): `gnus-exit-group-hook' was not allowed to ! fiddle with important variables. ! (gnus-summary-search-group): Would select groups that had no ! unread articles. ! ! * gnus.el: 0.24 is released ! ! Sun Feb 19 08:02:38 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-read-group): Did not configure windows ! properly. ! (gnus-summary-hide-thread): Would not properly hide all threads. ! (gnus-summary-next-group): `n' on the last article, and then 0 ! articles would return to an empty group buffer. ! ! * gnus.el: 0.23 released. ! ! Sat Feb 18 15:11:39 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-mark-xrefs-as-read): Use gnus-use-cross-references ! as it was meant to be used. ! (gnus-score-load): Don't check for special members in ! gnus-score-alist. ! ! Sat Feb 18 11:22:05 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-post-news): Don't insert any Bcc if it already ! exists. ! ! * gnus.el: 0.21 released ! ! Sat Feb 18 04:47:50 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-inews-article-header-hook): New hook. ! ! Fri Feb 17 08:40:18 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-followup-and-reply, ! gnus-summary-followup-and-reply-with-original): New functions and ! keystrokes for sending both followup and reply. ! ! * nntp.el (nntp-request-post-buffer): 'ask setting on ! gnus-auto-mail-to-author. ! ! * gnus.el (gnus-inews-article): Use the foreign server to post the ! article if a prefix is given to `gnus-inews-news'. ! ! * gnus-uu.el: New automatic view commands and keystrokes. ! (gnus-uu-mark-series): New function and keystroke. ! (gnus-uu-mark-all): New function and keystroke. ! ! * gnus.el (gnus-group-search-forward): Did not go to next group ! with unread articles, just went to the next group. ! (gnus-article-prepare): Mark cancelled articles as such. ! (gnus-request-replace-article): Functions for replacing an article ! in all mail backends. ! (gnus-summary-edit-article): Function and keystroke for editing a ! (mail) article. ! (gnus-group-best-unread-group): New command and keystroke. ! (gnus-keep-same-level): Now supports `best' as a value to go to ! the "best" next newsgroup. ! (gnus-mark-xrefs-in-unsubscribed): New variable. ! (gnus-mark-xrefs-as-read): Use the new variable. ! (gnus-group-add-group): Adding a group in an empty group buffer ! bugged. ! (gnus-summary-hide-all-threads): Would loop indefinitely. ! (gnus-view-pseudos): New variable for automatic pseudo-article ! viewing. ! ! * nnmail.el (nnmail-request-post-buffer): Have followups go to ! From, To and Cc. ! ! * gnus.el: When switching between many summary buffers, the ! gnus-summary-buffer variable would sometimes point to the wrong ! buffer, in some functions. ! ! * gnus.el (gnus-group-insert-group-line): Would by when using ! %num,numD type of format specs on numbers. ! ! Fri Feb 17 05:06:28 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-mail-reply-using-mail): Don't remove all text ! properties from headers, just invisible. ! ! Thu Feb 16 04:21:19 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-browse-foreign-server): Did not intern the ! select method. ! (gnus-summary-search-subject): Don't ignore hidden articles. ! (gnus-make-directory): Would not properly create new directories. ! (gnus-mail-reply-using-mail): Include Cc's when replying. ! (gnus-adjust-marked-articles): Infinite loop. ! ! * nnvirtual.el (nnvirtual-retrieve-headers): Would not allow ! people to enter groups. ! ! * gnus-mh.el (gnus-mail-other-window-using-mhe): Tried to fetch ! subject where none was to be fetched. ! ! * gnus.el (gnus-browse-read-group): Movement commands did not ! work. ! (gnus-score-interactive-default-score): New variable, default ! 1000. ! ! Thu Feb 16 01:37:30 1995 Lars Ingebrigtsen ! ! * nnmail.el (nnmail-move-inbox): Now (probably) supports ! popmail. (Function taken from rmail.el). ! ! * gnus.el (gnus-mark-xrefs-as-read): If a mail article is marked ! as expirable, the cross-reffed articles will also be marked as ! expirable. ! (gnus-summary-mode-map): Changed all keybindings back to the GNUS ! 4.1 bindings. All new keybindings are now at S-letter. ! ! Wed Feb 15 06:44:14 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-score-find-score-files-function): New variable. ! (gnus-summary-display-article): Don't configure to article buffer ! if it isn't wanted. ! ! * nntp.el (nntp-default-sentinel): Don't signal an error if a ! connection closes. ! ! * gnus.el (gnus-score-file-suffix): Renamed gnus-score-file-name. ! ! Mon Feb 6 15:44:42 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-configure-windows): Bury the group buffer ! somewhat. ! (gnus-mail-reply-using-mail): Don't bind `C-c C-y' to anything in ! the mail buffer. ! ! * nndir.el (nndir-retrieve-headers): Retrieve with NOV, if that is ! posssible. ! ! Sun Feb 5 21:15:45 1995 Lars Ingebrigtsen ! ! * gnus.el: Introduction of pseudo-articles. Changes throughout ! Gnus. ! ! * gnus-uu.el: Rewrite. New keymap and new interface. ! ! * gnus.el (gnus-get-newsgroup-headers): Would barf on In-Reply-To headers. ! Sat Feb 4 18:16:21 1995 Lars Ingebrigtsen ! ! * gnus-uu.el (gnus-uu-get-list-of-articles): Would not get list of ! articles. ! Sat Feb 4 13:47:14 1995 Lars Magne Ingebrigtsen ! * gnus.el (gnus-summary-quit): Did not the kill summary buffer. ! * gnus-visual.el (gnus-visual-highlight-selected-summary): Limit ! the highligting to the same area highligted by mouse-face. ! Sat Feb 4 09:49:31 1995 Per Abrahamsen ! * gnus.el (gnus-build-get-header): Faster searching. ! Fri Feb 3 18:25:42 1995 Per Abrahamsen ! * gnus.el (gnus-newsgroup-ancient): New variable. ! (gnus-summary-local-variables): Initialize it. ! (gnus-build-get-header): Build it. ! (gnus-trim-thread): New function. ! (gnus-make-threads): Call it. ! (gnus-ancient-mark): New variable. ! (gnus-summary-prepare-threads): Use it. ! (gnus-fetch-old-headers): Updated documentation. ! Mon Jan 30 05:11:47 1995 Per Abrahamsen ! * gnus.el (gnus-articles-to-read): Don't inform the user if the ! only scored articles are tiched or dormant. ! Sat Feb 4 09:39:21 1995 Lars Ingebrigtsen ! * gnus.el (gnus-read-init-file): Also load .gnus.el and .gnus.elc. ! * gnus.el: Removed the last vestiges of the invisible text in the ! group and summary buffers. ! Fri Feb 3 19:27:29 1995 Lars Ingebrigtsen ! * gnus.el (gnus-group-make-directory-group): New command and ! keystroke. ! (gnus-subscribe-hierarchical-interactive): Would not let you ! subscribe to anything. ! (gnus-get-newsgroup-headers): Would barf when presented with ! message-id-less articles. ! * nndir.el: New backend for reading directories. ! ! Thu Feb 2 17:42:51 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-group-prepare): Zombie and killed groups could not ! be chosen. ! (gnus-group-search-forward): Didn't return nil when no group was ! found. ! (gnus-summary-prepare): Sorting was done after gathering loose ! threads, so the losse threads were not sorted properly. ! ! Thu Feb 2 15:31:11 1995 Per Abrahamsen ! ! * gnus.el: Implemented support for SCORE files. ! ! Thu Feb 2 17:23:17 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-group-list-groups): Don't go to the first group ! after listing. ! (gnus-group-list-groups): Go to the first unread group at startup, ! not the second. ! ! Tue Jan 31 15:13:10 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-inews-full-address): Use the full machine name in ! the message-ids. ! (gnus-get-unread-articles-in-group): Groups that have no articles ! are marked as such. ! ! * nnmail.el (nnmail-article-group): Catch regexp overflow errors. ! ! * gnus.el (gnus-update-read-articles): Would not update virtual ! groups. ! (gnus-mail-send-and-exit): Don't return to the Gnus window ! configuration from the mail buffer if Gnus isn't active. ! (gnus-summary-next-group): Go to the group buffer if the user ! answers "0" after selecting a new group from a different group. ! (gnus-select-newsgroup): Catch up properly if the only articles in ! a group have expired. ! ! Tue Jan 31 08:01:19 1995 Per Abrahamsen ! ! * gnus.el (gnus-kill): Arguments to `gnus-days-between' was ! swapped. ! ! Tue Jan 31 07:09:36 1995 Per Abrahamsen ! ! * gnus.el (gnus-pp-gnus-kill): Don't quote quoted objects. ! ! Tue Jan 31 05:51:52 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus): Check whether Gnus has been started already. If ! so, don't re-start, just switch to the buffer and get new news. ! (gnus-batch-score): Didn't work. ! ! * nnspool.el (nnspool-nov-is-evil): New variable. ! (nnspool-lib-dir): New variable. ! (nnspool-retrieve-headers-with-nov): nnspool can now return NOV ! lines instead of plain article headers. ! ! * nntp.el (nntp-nov-is-evil): Changed name of `nntp-xover-is-evil' ! to `nntp-nov-is-evil'. ! ! Mon Jan 30 12:27:30 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-search-subject): Would go to the first ! article when searching backward. ! (gnus-gather-threads): When gathering loose threads, they would be ! gathered in reverse order. ! (gnus-summary-prev-article): Did retrieve old articles when ! executed on the first article in the buffer. ! (gnus-read-header): Would not read old headers when requested one ! by one. ! ! * gnus.el: Converted all mark variables from strings to characters. ! ! Sun Jan 29 05:56:51 1995 Per Abrahamsen ! ! * gnus.el (gnus-select-group-hook): Remove description of how to ! sort, since it doesn't work. ! (gnus-make-sub-thread): Removed silly lambda expression. ! (gnus-thread-sort-functions): New variable. ! (gnus-make-threads): Do not sort here. ! (gnus-thread-sort-by-number): New function. ! (gnus-thread-sort-by-author): New function. ! (gnus-thread-sort-by-subject): New function. ! (gnus-thread-sort-by-date): New function. ! (gnus-thread-sort-by-score): New function. ! (gnus-thread-sort-by-total-score): New function. ! (gnus-thread-total-score): New function. ! (gnus-thread-header): New function. ! (gnus-sort-threads): New function. ! (gnus-summary-prepare): Sort here. ! ! Sat Jan 28 18:44:09 1995 Per Abrahamsen ! ! * gnus.el (gnus-articles-to-read): Provide default values instead ! of initial input. ! ! Mon Jan 30 01:41:43 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-mark-article-hook): Don't mark expirable articles ! as read when selecting them. ! (gnus-summary-mode): Removed " Thread" from the summary mode line. ! (gnus-inews-message-id): Use domain name instead of host name in ! message-ids. ! ! Sun Jan 29 09:37:31 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-apply-kill-file): Update dates when expiring ! kills. ! (gnus-article-mode): Changed all the mode lines to really use a ! buffer-local spec. ! (gnus-group-search-forward): gnus-keep-same-level now works. ! ! * gnus.el: Got rid of all the invisible text and changed all the ! functions to use text properties. ! ! Sat Jan 28 03:13:13 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-inews-insert-headers): Remove any old ! NNTP-Posting-Host headers. ! (gnus-group-catchup): Mark dormant as read. ! ! Fri Jan 27 20:50:07 1995 Per Abrahamsen ! ! * gnus.el (gnus-inews-news): Make followups default to all groups. ! ! Fri Jan 27 20:07:31 1995 Per Abrahamsen ! ! * gnus.el (gnus-summary-prepare-threads): Move assignment to ! `gnus-tmp-prev-subject' to after the check for equality with ! `subject'. ! ! Thu Jan 26 15:47:35 1995 Per Abrahamsen ! ! * gnus.el (gnus-set-mouse-face): New function. ! (gnus-parse-format): New function. ! (gnus-parse-simple-format): Renamed from `gnus-parse-format'. ! (gnus-group-insert-group-line): Do not set mouse face here. ! (gnus-summary-insert-line): Do not set mouse face here. ! (gnus-group-line-format): Add mouse face delimiters. ! (gnus-summary-line-format): Add mouse face delimiters. ! (gnus-update-format-specifications): Don't depend on ! `gnus-group-line-format-spec' being a simple list. ! ! Tue Jan 24 20:18:42 1995 Per Abrahamsen ! ! * gnus.el (gnus-clear-system): Kill global KILL file. ! ! Tue Jan 24 14:43:33 1995 Per Abrahamsen ! ! * gnus.el (gnus-inews-insert-headers): Only check if first ! `gnus-summary-gather-subject-limit' characters are the same. ! ! Mon Jan 23 22:18:56 1995 Per Abrahamsen ! ! * gnus.el (gnus-summary-update-line): Protect call to ! `gnus-summary-mark-article' with `save-excursion'. ! ! Sat Jan 28 00:55:19 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-extract-address-components): Would fail if the ! address contained special characters. ! ! Fri Jan 27 04:45:09 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-active-to-gnus-format): Condition-cased the active ! file reading to be a bit more lenient with active files. ! (gnus-group-get-new-news): Would always request info on each ! individual group, even when the active file has been read. ! ! Thu Jan 26 00:16:45 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-inews-unique-id): Check for illegal characters in ! the user name. ! (gnus-summary-set-score): Removed the invisible score from the ! summary lines. (assq article-number gnus-newsgroup-scored) can be ! used instead. ! (gnus-add-to-range): Would not give the right result if the ranges ! did not start at 1. ! ! Wed Jan 25 02:49:39 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-move-article): Would not properly respool ! articles. ! (gnus-pp-gnus-kill): Removed (quote) from where it wasn't needed. ! ! * nnml.el (nnml-request-accept-article): Wouldn't do anything ! much. ! (nnml-request-move-article): Would not properly move an article. ! ! * gnus.el (gnus-apply-kill-file): Don't score already scored ! articles. ! (gnus-newsgroup-scored): New list of articles. ! (gnus-select-newsgroup, gnus-articles-to-read): Changed to take ! into account previously scored articles, if any. ! ! Tue Jan 24 00:19:11 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-inews-organization): If organization is wanted, ! and no organization is found, the user will be prompted for one. ! (gnus-inews-check-post): Bug in checking for multuple headers. ! (gnus-inews-check-post): Check for version and sendsys. ! (gnus-inews-insert-signature): Don't insert stuff that looks like ! file names in signatures. ! ! * nntp.el (nntp-request-article): unwind-protect the article ! fetching. Might have caused bugs elsewhere. ! ! * gnus.el (gnus-inews-organization): New implementation. The ! `gnus-local-organization' variable can now also be a function. ! (gnus-inews-check-post): Check for multiple headers. ! (gnus-check-bogus-newsgroups): Would not remove bogus dead groups. ! ! Mon Jan 23 23:49:15 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-inews-user-name): Use `user-mail-address' only as ! a last resort. ! ! Mon Jan 23 19:40:02 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-build-get-header): Did not work with multiple ! articles with the same message-id. ! (gnus-inews-organization): Remove trailing newlines. ! ! * nnspool.el (nnspool-find-article-by-message-id): Grep for ! message-ids instead of loading the entire history file. ! ! Mon Jan 23 18:59:27 1995 Per Abrahamsen ! ! * gnus-visual.el (gnus-visual-summary-highlight): Use and document ! free variables. ! (gnus-visual-summary-highlight-line): Remove unnecessary test for ! `gnus-visual' and add workaround face changes in start of line. ! ! Mon Jan 23 18:48:31 1995 Lars Magne Ingebrigtsen ! ! * nnmbox.el (nnmbox-read-mbox): Fix for no newsgroups. ! ! * gnus.el (gnus-ask-server-for-new-groups): Did not work. :-) ! (gnus-summary-make-false-root): This variable has now swallowed ! the functionality of `gnus-gather-loose-threads'. ! ! Mon Jan 23 18:03:21 1994 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-unsubscribe-current-group): Would go two ! steps forward. ! ! Mon Jan 23 17:09:10 1995 Lars Magne Ingebrigtsen ! ! * nnmail.el (nnmail-insert-lines): Compute a new Lines header and ! remove any old ones. ! ! * nnvirtual.el (nnvirtual-retrieve-headers): Removed checking for ! multiple articles with the same ID. ! ! * gnus.el (gnus-get-newsgroup-headers): Ignore multiple articles ! with the same Message-ID. ! (gnus-get-newsgroup-headers-xover): The same. ! ! Mon Jan 23 00:42:33 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-inews-insert-headers): Ask when empty headers ! are detected. ! (gnus-cancel-news): Avoid sending an empty cancel message. ! (gnus-signature-function): New variable to return a signature file ! name. ! (gnus-inews-insert-signature): Now warns the user if the signature ! is more than 4 lines long. Also uses `gnus-signature-function'. ! Also, if the string isn't a file name, the string itself is ! inserted as a signature. ! (gnus-inews-insert-signature): If mail-signature has already ! inserted a .sig, delete this and insert Gnus' own. ! (gnus-inews-check-post): Warn the user if the article to be posted ! is more than 60k long. ! (gnus-inews-insert-headers): Insert Sender header if the From ! header doesn't seem to be the name of the user that posts. ! (gnus-inews-check-post): Check for control characters. ! (gnus-inews-insert-headers): Added "_-_" to message-id if the ! thread has changed name. ! ! Sun Jan 22 02:37:06 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-article-prepare): Mark cancelled articles as ! cancelled. ! (gnus-summary-expire-articles): Mark expired articles as ! cancelled. ! (gnus-inews-insert-signature): Changed .sig predix from "--" to ! "-- ". ! (gnus-article-display-hook): Added "treat overstrike" to the ! default display hook. ! (gnus-inews-date): Changed to generate a valid date. ! ! * nnmbox.el (nnmbox-request-article): Don't include the "From " ! line when returning an article. ! ! * nnmh.el (nnmh-save-mail): Rename "From " lines. ! ! * nnml.el (nnml-save-mail): Rename "From " lines. ! ! * gnus.el (gnus-gnus-to-newsrc-format): Don't write foreign groups ! to .newsrc. ! (gnus-summary-remove-lines-marked-as-read, ! gnus-summary-remove-lines-marked-with): Renamed functions ! from *-delete-marked-*. ! (gnus-check-new-newsgroups): New possible value: `ask-server'. ! (gnus-ask-server-for-new-groups): Ask the server for new groups ! instead of comparing the killed list and the active hashtb. ! (gnus-parse-newsrc-body): Parse ! and : in the way they are ! supposed to be parsed. ! (gnus-get-unread-articles): Now works with any combination of ! startup level, gnus-read-active-file status and ! gnus-activate-foreign-newsgroup level. ! ! Sat Jan 21 21:27:23 1995 Lars Ingebrigtsen ! ! * nnvirtual.el: Big rewrite. ! (nnvirtual-update-marked): Now updates marks in source groups. ! (nnvirtual-create-mapping): Use marks from source groups. ! (nnvirtual-possibly-change-newsgroups): Several nnvirtual groups ! may be active at the same time. nnvirtual groups can also include ! other nnvirtual groups. ! ! * gnus.el (gnus-add-marked-articles): New function, ! ! Sat Jan 21 15:22:51 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-mark-xrefs-as-read): Would mark xreffed articles ! that were ticked (or dormant) as read. ! (gnus-summary-refer-parent-article): Now understands the numeric ! prefix. ! (gnus-build-get-header): Would make it impossible to select old ! fetched articles. ! ! * gnus-visual.el (gnus-article-make-menu-bar): Added all treatment ! functions to a menu. ! ! * gnus.el (gnus-close-group): New backend call to perform ! cleanups. ! (gnus-article-de-quoted-unreadable): New article treatment ! function. ! ! Sat Jan 21 01:15:26 1995 Lars Ingebrigtsen ! ! * nnmail.el (nnmail-article-group): Don't enter a mail into the ! same mail group twice, ! ! * gnus.el (gnus-build-old-threads): Don't build old threads ! backwards from dormant articles. ! ! Fri Jan 20 23:31:16 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-mark-article): Changed the expiry mark. It ! is now a "read" mark, and occupies the same position as the other ! read marks ("DX+- "). ! ! Fri Jan 20 19:19:01 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-get-unread-articles): Did not properly activate ! foreign newsgroups. ! ! Fri Jan 20 18:49:58 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-list-matching): New function and keystroke. ! ! Tue Jan 17 19:19:30 1995 Per Abrahamsen ! ! * gnus.el (gnus-summary-keysort-summary, ! gnus-summary-sort-summary, gnus-keysort-headers, gnus-keysort, ! gnus-sort-headers, gnus-string-lessp, gnus-date-lessp): Deleted. ! (gnus-sortable-date): New function. ! (gnus-summary-sort-by-date, gnus-summary-sort-by-subject, ! gnus-summary-sort-by-author, gnus-summary-sort-by-number): Use it. ! (gnus-summary-sort-by-score): New function. ! (gnus-summary-mode-map): Bind it. ! (gnus-select-group-hook): Updated documentation. ! ! * gnus.el (gnus-summary-best-unread-article): New function. ! (gnus-summary-mode-map): Add binding. ! (gnus-summary-mode): Document it. ! ! Mon Jan 16 15:49:37 1995 Per Abrahamsen ! ! * gnus.el (gnus-summary-gather-subject-limit): New variable. ! (gnus-gather-threads): Use it. ! ! * nntp.el (nntp-request-post-buffer): Support ! `gnus-auto-mail-to-author'. ! ! * gnus.el (gnus-mail-self-blind): New variable. ! (gnus-post-news): Use it. ! (gnus-inews-news): Recognize "BCC" field. ! ! Thu Jan 19 21:37:33 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-build-old-threads): Fetch old headers and build ! complete threads. ! ! Wed Jan 18 08:36:26 1995 Lars Ingebrigtsen ! ! * nnmh.el: Rewrite. ! ! * gnus.el (gnus-get-newsgroup-headers): New implementation. Twice ! as fast. ! ! * nnmbox.el: Rewrite. Now supports crossposting. ! ! * nnml.el: Rewrite. ! ! * nnmail.el: Gathered all mail support functions in this file. ! ! * nnmbox.el: Renamed nnmail to nnmbox. ! ! * gnus.el (gnus-summary-exit): Kill expunged buffer on exit. ! ! * nntp.el (nntp-server-opened-hook): Send "MODE READER" to the ! server at startup. ! ! Mon Jan 16 11:56:39 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-summary-read-group): Update the specs after the ! select-group-hook has bene run. ! ! Sun Jan 15 11:01:20 1995 Per Abrahamsen ! ! * gnus.el: Add autoload for `gnus-article-make-menu-bar'. ! (gnus-article-mode-map): Call `gnus-article-make-menu-bar'. ! ! * gnus-visual.el (gnus-group-make-menu-bar): Added entry for ! `gnus-group-edit-global-kill', ! (gnus-summary-make-menu-bar): Added entry for ! `gnus-summary-raise-followups-to-author', and ! `gnus-summary-lower-followups-to-author'. Removed entries for ! `gnus-summary-raise-by-thread', and ! `gnus-summary-lower-by-thread'. ! Renamed `xref' to `crossposting' since more people know that term. ! Merged `Sort' menu with `Misc' since the menu-bar had not space ! enough for all entries. ! (gnus-article-make-menu-bar): New function. Add menu bar for ! article mode. ! ! Sun Jan 15 18:08:53 1995 Per Abrahamsen ! ! * gnus.el (gnus-pp-gnus-kill): Don't assume (nth 0 object) is ! `gnus-kill'. ! ! Sun Jan 15 14:11:29 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-refer-article): Don't fetch an article if ! it is fetched already. ! (gnus-gnus-to-newsrc-format): Write killed groups to the .newsrc ! file as unsubscribed without numbers. ! (gnus-summary-exit): Go to next group in the Group buffer when ! quitting. ! ! Sun Jan 15 07:44:09 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-article-refer-article): Would not scroll to the ! beginning of the article. ! (gnus-summary-go-to-next-thread): Would go to wrong article. ! ! Sat Jan 14 12:55:31 1995 Lars Ingebrigtsen ! ! * gnus.el (gnus-summary-exit): Do not advance in the Group buffer ! when quitting from a Summary buffer. ! ! * nnvirtual.el (nnvirtual-retrieve-headers): Articles that appear ! twice because of crossposting are deleted. ! ! * gnus.el (gnus-visual-mark-article-hook): New hook. ! (gnus-group-prepare): Don't display groups with only dormant ! articles when listing doing a `gnus-group-list-groups'. ! ! * gnus-visual.el: New file. ! (gnus-visual-highlight-selected-summary): Function moved out of ! gnus.el. ! (gnus-selected-summary-face): Variable name change. ! ! * gnus.el (gnus-visual): New variable. ! ! * nnmail.el (nnmail-crosspost): New variable to toggle ! crossposting in mail groups. ! ! * nnml.el (nnml-article-group): Fold continuation lines before ! splitting mail. ! ! Sat Jan 14 04:34:59 1995 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-group-browse-foreign-server): Completing-read over ! `gnus-secondary-servers'. ! (gnus-summary-refer-article): Would print Subject in the inserter ! Summary line to "t". ! (gnus-summary-mail-forward, gnus-summary-mail-other-window): ! Messed up the window configuration. ! (gnus-group-insert-group-line): When dormant articles were ! present, an incorrect number of unread articles would be reported. ! (gnus-summary-goto-subject): Would bug when the point was at the ! end of the buffer. ! ! Fri Jan 13 09:40:11 1995 Lars Ingebrigtsen ! ! * nnml.el (nnml-generate-nov-databases): Didn't update the active ! file. ! ! * gnus.el (gnus-summary-next-group): Would behave spuriously when ! the next group had all its articles marked as read via the xref ! mechanism. Would also go to the Newsgroup buffer when C-g was ! pressed. ! (gnus-inews-check-post): Reject outgoing mail that has empty ! Subject lines, no text at all and just quoted text. ! (gnus-summary-catchup-and-exit): Do not mark dormant articles as ! read when catching up. ! (gnus-summary-catchup): New implementation of all catchup ! functions. ! ! Fri Jan 13 07:27:27 1995 Lars Magne Ingebrigtsen ! ! * nntp.el (nntp-request-article): Inserted contents into wrong ! buffer. ! ! Mon Jan 9 02:16:12 1995 ! ! * gnus.el (gnus-make-threads): Threading bug when ! `gnus-thread-ignore-subject' is nil fix. ! (gnus-post-news): When posting in foreign newsgroups, the name of ! the group would be wrong. ! ! * nnmail.el (nnmail-choose-mail): Insert the X-Gnus-Newsgroup line ! at the right place. ! ! * gnus.el (gnus-group-get-new-news-this-group): Would scroll ! forwards when updating the first newsgroup(s) in the Newsgroup ! buffer. ! (gnus-get-unread-articles-in-group): Compute number of unreads ! more correctly. Dormant counts as "read" while ticked counts as ! "unread". ! ! * nnml.el (nnml-choose-mail): Handle continuation lines and tabs ! correctly when generating nov databases. ! ! * gnus.el (gnus-summary-read-group): Applying a kill file to a ! group that contains only dormant articles would lead to an ! infinite loop. ! (gnus-kill-save-kill-buffer): Really kill kill buffers upon exit. ! (gnus-select-newsgroup): Treat newsgroups with only dormant ! articles as having no unread articles. ! (gnus-get-newsgroup-headers-xover, gnus-get-newsgroup-headers): ! Downcase message-id and references for better threading. ! ! Sun Jan 8 01:11:04 1995 ! ! * gnus.el (gnus-summary-subject-string): Wrong regexp made the ! function return nil always. ! (gnus-summary-insert-line): Use mail-extr to extract address and ! name. ! (gnus-pp-gnus-kill): Would never actually prettify anything. ! (gnus-kill): Did not update date of last successful kill. ! (gnus-group-insert-group-line): Do not print a "*" if the group ! contains only dormant articles. ! (gnus-update-read-articles): When removing all marks from a mark ! list (dormant, ticked, bookmarks), Gnus wouldn't properly update ! the list of marked articles when exiting from the group. ! ! Sat Jan 7 03:05:01 1995 ! ! * gnus.el (gnus-mark-xrefs-as-read): Computed strange number of ! unread articles when given illegal xref numbers. ! (gnus-group-apropos, gnus-group-description-apropos): Two new ! commands and keystrokes. ! (gnus-no-server): New command to start Gnus without connecting to ! your local newsserver. ! (gnus): Gnus would read the active file even when started at a low ! level. ! (gnus-summary-exit): Kill kill file buffer upon newsgroup exit. ! (gnus-gnus-to-newsrc-format): Would write .newsrc instead of ! .newsrc-HOST. ! ! Fri Jan 6 16:45:45 1995 ! ! * gnus.el (gnus-summary-search-subject): UNREAD now really goes to ! unread only. ! (gnus-kill-file-permanent-kill-by-xref): Kill all cross-posted ! groups mentioned. ! (gnus-kill-file-kill-by-xref): Improper newsgroup matching. ! ! Thu Jan 5 20:45:56 1995 ! ! * gnus.el (gnus-bug): New command. ! (gnus-get-newsgroup-headers): Fix when article does not contain ! message-id. ! (gnus-summary-show-all-expunged): Not (interactive). ! (gnus-summary-delete-marked-with): Infinite loop. ! (gnus-summary-search-subject): Next always goes to the next ! article. ! ! Thu Jan 5 14:23:56 1995 ! ! * gnus.el (gnus-summary-delete-article): New function and ! keystroke to delete (mail) articles right away. ! (gnus-summary-next-group): When selecting next group that have had ! all its articles marked as read by xref, this would yield ! unexpected results. ! (gnus-summary-search-subject): `n' on first article selects the ! first article. ! (gnus-mouse-face): New variable. ! ! * nnmh.el: New mail backend for mh folders (ie. spool). ! ! Wed Jan 4 02:45:08 1995 ! ! * nnmail.el (nnmail-read-mbox): If an mbox file didn't exist, this ! function would fail. ! (nnmail-split-region): Lines numbers were inserted in wrong ! headers with wrong numbers. ! ! * gnus.el (gnus-summary-show-all-expunged): New function and ! keystroke to display previously expunged lines. ! ! * nnmail.el (nnmail-prepare-incoming-hook): New variable. ! ! * gnus.el (gnus-mail-forward-using-mail): Delete invisible headers ! when forwarding. ! ! Tue Jan 3 15:23:00 1995 ! ! * gnus.el (gnus-post-news): Move point to beginning of quoted text ! on followups. ! (gnus-group-set-current-level): Prompt for a level if called with ! nil. ! (gnus-summary-raise-interest, gnus-summary-lower-interest, ! gnus-summary-set-interest): New commands and keystrokes. ! (gnus-summary-default-interest): New variable. ! (gnus-raise, gnus-lower): New functions to use in kill-files for ! raising or lowering interest. ! ! Mon Jan 2 11:51:32 1995 ! ! * gnus.el (gnus-group-line-format): Modified spec to show number ! of really unread unread articles instead of unread + ticked + ! interesting. ! (gnus-group-line-format): New codes to show number of interesting ! articles; number of ticked and interesting; number of ticked, ! number of read; total number of articles; number of unread, ! unticked, uninteresting articles. ! (gnus-newsgroup-dormant): `gnus-newsgroup-interesting' (and all ! derivatives thereof) renamed from "interesting" to "dormant". ! (NOTE: everybody that have marked articles as "interesting" earlier ! might experience slightly peculiar effects. The joys of alpha ! testing.) ! (gnus-summary-mode-map): `+' to set dormant mark, `-' to set tick. ! (gnus-group-expire-articles): Fixed bug that resulted in no ! articles being expired. ! (gnus-unread-mark, gnus-read-mark, gnus-ticked-mark, ! gnus-dormant-mark): New variables for the mark characters. ! (gnus-summary-insert-line): Loose threads can now also be printed ! with the `empty' method. ! (gnus-make-threads): When threading twice (for instance, when ! toggling threading), information was mangled which ended in in ! infinite loop. ! ! Sun Jan 1 14:35:01 1995 ! ! * gnus.el (gnus-summary-refer-parent-article): Bug when no article ! has been selected. ! (gnus-kill, gnus-apply-kill-file, gnus-execute): Changed to ! support expiring kills and multple patterns in one `gnus-kill' ! call. ! ! * nnml.el (nnml-split-incoming): Did not properly split mail that ! contained multiple "From " lines. ! ! Sat Dec 31 00:55:24 1994 ! ! * gnus.el (gnus-newsgroup-marked): This variable had been re-named ! `gnus-newsgroup-ticked'. It has been re-named back again. ! (gnus-kill-file-kill-by-subject): Made all kill-by-* functions ! operate on the current article in the Summary buffer. ! ! Fri Dec 30 11:45:27 1994 ! ! * gnus.el (gnus-summary-set-bookmark, ! gnus-summary-remove-bookmark): New commands and keystrokes to set ! bookmarks. ! (gnus-summary-mark-as-interesting): New command and keystroke to ! mark articles as interesting. ! (gnus-article-prepare): Automatic moving to bookmarks added. ! (gnus-summary-delete-interesting): Interesting articles that have ! no children are not shown in the Summary buffer by default. ! (gnus-group-expire-articles, gnus-summary-expire-articles): Trying ! to expire articles in groups that do not support expiring would ! make Emacs barf. ! (gnus-active-to-gnus-format): Modified to read information on ! moderation, if wanted. ! (gnus-summary-print-dummy-lines): Obsolete variable. ! (gnus-summary-make-false-root): New variable that says what method ! should be used when printing loose sub-threads. ! (gnus-summary-prepare-threads): Let one article adopt the orphans ! instead of printing dummy roots. ! ! Thu Dec 29 08:20:42 1994 ! ! * gnus.el (gnus-summary-save-article, gnus-summary-pipe-output, ! gnus-summary-save-in-rmail, gnus-summary-save-in-mail, ! gnus-summary-save-in-file, gnus-summary-save-in-pipe): Rewritten ! to save series of articles. ! (gnus-summary-set-process-mark): Bug fix. It was possible to mark ! dummy roots. ! (gnus-group-describe-all-groups): New command and keystroke to ! list newsgroups descriptions for all newsgroups. ! (gnus-group-prepare): Removed tallying of articles in killed ! groups to speed things up to enough to be of any use. ! (gnus-summary-local-variables): `gnus-current-kill-articles' is no ! longer buffer-local to the Summary buffers. ! ! * nntp.el (nntp-request-article): Fix for multiple Summary buffers ! using different nntp servers. ! ! * gnus.el (gnus-dribble-save): Would barf if Gnus were fed a ! non-existant nntp server host name. ! (gnus-summary-search-subject): Marking articles as read did not go ! forward over ticked articles. ! (gnus-post-method): New variable for specifying a method to use ! for posting articles. ! (gnus-request-post-buffer, gnus-request-post): Changed to use ! `gnus-post-method'. ! ! * nntp.el (nntp-open-server-internal): The nntpd process will now ! be killed without warning when Emacs shuts down. ! ! * gnus.el (gnus-get-unread-articles-in-group): Returned wrong ! results in groups with no articles. ! ! * nntp.el (nntp-server-opened): This function gave totally ! spurious results. ! ! * gnus.el (gnus-check-first-time-used, gnus-find-new-newsgroups): ! Changed to really subscribe newsgroups that are mentioned by the ! "options -n" line(s). The variable ! `gnus-subscribe-options-newsgroup-method' holds the subscribe ! method, which is `gnus-subscribe-alphabetically' by default. ! ! Wed Dec 28 17:36:49 1994 ! ! * gnus.el (gnus-get-newsgroup-headers-xover): Fixed ! cross-references when using xover. ! ! * gnus.el (gnus-read-old-newsrc-el-file): Made it easier to switch ! between .el and .eld files. ! (gnus-group-mode-map): Removed bindings for `C-n' and ! `C-p'. Changed `C-m' to `gnus-group-select-group'. ! (gnus-summary-mode-map): Removed bindings for `C-n' and `C-p'. ! ! * nntp.el (nntp-request-group): Fix when selecing non-existant groups. ! * gnus.el (gnus-group-prepare): Faster listing of killed groups. ! ! * nntp.el (nntp-retrieve-headers-with-xover): Try both "xover" and ! "xoverview" on nntp servers. ! ! * gnus.el (gnus-activate-foreign-newsgroups): This variable has ! changed from a toggle to a slide. Foreign newsgroups that have a ! level equal or lower than this variable will be activated on ! startup. ! (gnus-nntp-service): This variable has been obsoleted, except for ! one tiny backwards compatibility issue. ! (gnus-select-method): This variable now lets you specify nntp port ! number as well. ! (gnus-find-new-newsgroups): A message is displayed that says how ! many new newsgroups has arrived. ! (gnus-summary-position-cursor, gnus-group-position-cursor): Two ! new functions that are both fset to `gnus-goto-colon', but can be ! set to anything the user wishes. ! (gnus-init-file, gnus-read-init-file, gnus-group-read-init-file): ! New variable, function, command and keystroke to read the Gnus ! init file (default: "~/.gnus"). ! ! * nnml.el (nnml-retrieve-header-with-nov): nnml now generates nov ! databases. ! (nnml-choose-mail): Fix strange cutting and add Xref header. ! (nnml-article-group): Mail articles can now be crossposted between ! all groups that fit the regular expressions in ! `nnmail-split-methods'. ! (nnml-generate-nov-databases): New command to generate nov ! databases for a tree. ! ! * nnheader.el (gnus-backends-are-talkative): New variable. ! ! * nnml.el (nnml-nov-is-evil): New variable. ! ! Wed Dec 21 01:20:53 1994 Lars Magne Ingebrigtsen ! ! * gnus.el (gnus-check-news-server): Buglet. ! (gnus-mail-reply-using-mail): Use "none" as the subject if none ! was used. ! ! Tue Dec 20 01:28:42 1994 Lars Ingebrigtsen ! ! * nnmail.el (nnmail-request-move-article, ! nnmail-request-accept-article): Functions for moving articles. One ! can move articles between mail groups that use different select ! methods, which also makes these functions double as conversion ! routines. ! ! * gnus.el (gnus-open-server): All the low-level backend functions ! have been rewritten to make things cleaner and clearer. Most of ! the function calls have also been changed throughout the program. ! (gnus-set-global-variables): Set the global equivalents of the ! summary-local variables whenever a new article is chosen. ! ! Mon Dec 19 00:51:03 1994 Lars Ingebrigtsen ! ! * nnml.el (nnml-request-move-article, ! nnml-request-accept-article): Functions for moving articles. ! ! * gnus.el (gnus-summary-rescan-group): New command and keystroke ! for exiting, getting new articles, and re-selecting a group. ! (gnus-group-make-mail-groups): Created mail groups ! without the foreign group prefix, which is a serious bug. ! (gnus-dribble-file-name): Change the name of the dribble file to ! ".newsrc-dribble". ! (gnus-group-startup-message): Changed startup screen. (Trés ! important.) ! (gnus-summary-move-article): New command and keystroke for moving ! articles between (mail) newsgroups. ! ! * nnmail.el (nnmail-split-region): ! * nnml.el (nnml-choose-mail): Add a Lines header line to mails ! that do not have them. ! ! * gnus.el: Moved most functions to make the source code a bit more ! structured. Added a few autoloads to kill the last few compiler ! warnings. ! (gnus-group-clear-dribble): New command and keystroke to clear the ! dribble buffer. ! ! * nntp.el (nntp-open-server-internal): Further multiple nntp ! server fixes. ! ! Sun Dec 18 01:48:28 1994 Lars Ingebrigtsen ! ! * gnus-mh.el: All the mh-e functions have been moved to this new ! file. ! ! * gnus.el (gnus-summary-prepare-threads, ! gnus-summary-insert-line): If the subject changes in the middle of ! the thread, print the subject. ! (gnus-save-newsrc-file): Save the newsrc file(s) even when the ! dribble file has been saved, and don't save them when no changes ! have been made. ! ! * nntp.el (nntp-request-group): When using multiple nntp servers, ! the backend often became a bit dizzy. ! (nntp-open-server): Opening a server now correctly says whether a ! connection was established. ! ! * gnus.el (gnus-version): Rewrite to add version numbers from all ! backends in use. ! (gnus-extend-newsgroup): Small fix. ! (gnus-find-header-by-number): Obsolete function. ! (gnus-clear-system): Kill all generated buffers when exiting. ! (gnus-exit-group-hook): Kill the nntp connection(s) when exiting. ! ! Mon Dec 12 18:15:03 1994 Lars Ingebrigtsen ! ! * gnus.el: Version 0.2 released after some initial bugs were ! fixed. ! Sun Dec 11 06:32:40 1994 Lars Ingebrigtsen ! * gnus.el: The very first (ding) Gnus pre-release. --- 1,81 ---- ! Mon May 15 15:53:00 1995 Scott Byer ! * nnfolder.el (nnfolder-possibly-activate-groups) New function. ! nnmail-get-active returns a bogus list the second time around, so ! we want to make sure we only call it once. ! * nnfolder.el (nnfolder-active-number) Mase things a little more ! paranoid in the case where we enter this procedure from splitting ! mail - it will do a possibly-change-group, which, if ! nnfolder-use-active-file is nil, will figure out the _true_ active ! numbers from the nnfolder mail file. ! Wed May 17 17:43:27 1995 Lars Magne Ingebrigtsen ! * gnus.el (gnus-article-date-ut): Lapsed would fail when toggling headers. + (gnus-summary-catchup): Reversed comparison. + (gnus-summary-mode): Set mode line before group name was defined. + (gnus-short-group-name): New implementation. + (gnus-article-display-x-face): New implementation. + (gnus-article-x-face-too-ugly): New variable. + (gnus-remove-some-windows): Don't bug out on non-defined buffers. ! Wed May 17 14:23:37 1995 Lars Ingebrigtsen ! * gnus-msg.el (gnus-check-before-posting): New semantics. Allow ! finer granulatity than on/off. ! * gnus-score.el (gnus-summary-increase-score): Changed the maps ! and score file entry commands. ! Tue May 16 00:40:38 1995 Lars Ingebrigtsen ! * gnus-score.el (gnus-summary-score-entry): When used ! interactively, didn't do the right TYPE. ! (gnus-summary-score-entry): Added keystroke. ! * gnus.el (gnus-summary-current-score): New command and keystroke. ! * nnmail.el (nnmail-incoming-mail-directory): New variable. ! (nnmail-get-spool-files): Use it. ! * nndigest.el (nndigest-request-group): Would not widen before ! inserting, resulting in a partial digest group. ! * gnus.el (gnus-article-summary-command): Use `call-interactively' ! instead of executing macro. ! (gnus-article-get-xrefs): Would sometimes bug out. ! * gnus-score.el (gnus-score-exact-adapt-limit): New variable. ! * nnfolder.el (nn*-prepare-save-mail-hook): New variables. ! * gnus.el (gnus-summary-next-group): Would step one group to far ! when using `quietly'. ! (gnus-newsgroup-directory-form): Don't make directory form of the ! entire foreign group name. ! * gnus-uu.el (gnus-uu-save-article): Get continuation lines. ! * gnus-msg.el (gnus-inews-news): Don't include courtesy message on ! Bcc mail. ! * nnmail.el (nnmail-split-fancy): New variable and stuff. ! * nnkiboze.el (nnkiboze-request-group): Barfed on non-generated groups. ! * gnus.el (gnus-summary-mode): Modify buffer-display-table to not ! display control characters and the like. ! (gnus-active-to-gnus-format): Faster implementation. ! (gnus-ignored-newsgroups): Semi-obsolescent. ! (gnus-bug): Offer a help page. ! (gnus-article-prepare): Made summary and article buffer writable. ! (gnus-group-make-kiboze-group): Created incorrect score files. ! Mon May 15 21:40:15 1995 Lars Ingebrigtsen ! * nntp.el (nntp-nov-gap): New variable. ! (nntp-retrieve-headers-with-xover): Use it. diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/ChangeLog.1 dgnus/lisp/ChangeLog.1 *** pub/dgnus/lisp/ChangeLog.1 Wed May 17 19:36:40 1995 --- dgnus/lisp/ChangeLog.1 Wed May 17 17:02:39 1995 *************** *** 0 **** --- 1,3115 ---- + Mon May 15 18:29:20 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-insert-line): Make sure Lines is a number. + + (gnus-summary-select-article): Don't scroll to the end of the + article buffer. + + * gnus.el: 0.70 is released + + * ChangeLog continues in a different file. + + Mon May 15 16:38:04 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-sort): Hide threads after sorting, if that + is wanted. + + Sun May 14 01:10:51 1995 Lars Ingebrigtsen + + * gnus.el (gnus-verbose): New variable. + (gnus-group-mark-group): Stop when there are no more groups to go. + (gnus-group-search-forward): Message when attempting to go too far + back. + + * gnus.el: Use it. + (gnus-group-add-to-virtual): New command and keystroke. + + * gnus-vm.el: Did not load vm. + + * gnus.el (gnus-summary-mode-map): New keystroke for saving with + vm. + + * gnus-score.el (gnus-score-load-file): (adapt t) will work + independently of gnus-use-adaptive-scoring. + + * gnus.el (gnus-summary-recenter): New implementation. + + Sat May 13 19:52:35 1995 Lars Ingebrigtsen + + * gnus.el (gnus-nov-parse-line): Would not read Xrefs. + + * gnus-score.el (gnus-score-save): Don't pp adaptive score files. + (gnus-score-adaptive): Put adaptive entries in a separate score + file. + (gnus-score-followup): Put entries into the adaptive score file. + + * gnus.el (gnus-use-scoring): New variable. + + Sat May 13 11:16:31 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-refer-article): Mark fetched articles as + read. + (gnus-summary-catchup): Mark articles as expirable when they are + supposed to be. + (gnus-group-expire-articles): Allow `total-expire'. + (gnus-summary-reselect-current-group): Kill the summary buffer + before reselecting. + + * gnus-vis.el (gnus-summary-highlight-line): Would occationally + bug out. + + * gnus.el (gnus-summary-prepare-threads): Do right number of + sub-threads under adopted (etc) articles. + (gnus-read-descriptions-file): Don't barf on strange formats. + + * gnus-score.el (gnus-score-adaptive): Ignore pseudos. + (gnus-score-remove-lines-adaptive): Ditto. + + * nnml.el (nnml-get-new-mail): Handle a list of spool files. + + * gnus.el (gnus-windows-old-to-new): Translate 3.13-selects to 4.1 + symbols. + (gnus-request-article-this-buffer): Always check whether the + connection is down. + (gnus-summary-save-article): Did not init hashtb. + (gnus-matches-options-n): Reversed comparison. + (gnus-configure-windows): Use the horizontal spec. + (gnus-group-goto-unread): New variable. + (gnus-group-next-unread-group): Use it. + + * gnus-cache.el (gnus-cache-retrieve-headers): Don't barf if the + cache file doesn't exist. + + * gnus.el: 0.68-0.69 is released. + + Thu May 11 12:03:10 1995 Per Abrahamsen + + * gnus.el (gnus-simplify-buffer-fuzzy): New function. + (gnus-simplify-subject-fuzzy): Use it. + + * gnus-score.el: Support fuzzy matches. + + Sat May 13 11:09:30 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-newsrc-to-gnus-format): New implementation. + + Wed May 10 08:42:21 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-format-max-width): Don't choke on numbers. + + * nnmh.el (nnmh-request-list): Don't chase links. + + * gnus.el (gnus-parse-n-options): Would reverse the 'ignore and + strings. + (gnus-summary-remove-lines-marked-as-read): Also count + gnus-ancient-marks as a read mark. + + * nnspool.el (nnspool-inews-switches): Added the no-sig switch. + + * gnus.el (gnus-summary-sort): Don't recurse for all time. + + Wed May 10 07:01:42 1995 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-summary-cancel-article): Remove process marks + after cancelling. + + * gnus.el (gnus-summary-show-all-dormant): Update lines. + (gnus-summary-show-all-expunged): Ditto. + (gnus-group-process-prefix): Did not understand C-u C-u prefixes + and the like. + (gnus-group-catchup-current): Advance to the next unread group. + (gnus-summary-catchup): Mark articles at exit if adaptive scoring + is used. + (gnus-server-edit-server): Did not configure windows properly. + + * gnus.el: 0.67 is released. + + Tue May 9 10:18:16 1995 Per Abrahamsen + + * gnus-vis.el (gnus-article-press-button): New function. + + * gnus.el (gnus-article-mode-map): Bind it. + + * gnus-cite.el (gnus-cite-hide-percentage): Upped to 50% (like + inews). + (gnus-cite-hide-absolute): Upped to 10 lines. + + * gnus-vis.el (gnus-face-dark-name-list): Some colors was not + available everywhere. New colors suggested by + John Salmon . + (gnus-article-highlight-headers): Turn of `buffer-read-only'. + (gnus-button-message-id): Do not switch to the summary buffer + first. + + * gnus.el: (gnus-article-add-button): Added autoload. + (gnus-article-hide-citation): Replace with autoload from + `gnus-cite.el'. + + Wed May 10 06:49:33 1995 Lars Magne Ingebrigtsen + + * gnus-vis.el: Name changes from gnus-visual-summary-* to + gnus-summary-*. + + Tue May 9 10:18:16 1995 Per Abrahamsen + + * gnus-score.el (gnus-summary-immediately-*): Added functions and + keybidnings. + + Wed May 10 06:01:34 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-windows-old-to-new): Applied '+ to wrong list. + + Tue May 9 12:26:34 1995 Lars Ingebrigtsen + + * gnus-uu.el (gnus-uu-digest-headers): New variable. + (gnus-uu-save-article): Use it. + + * gnus-vis.el (gnus-carpal-setup-buffer): Did not work at all. + + * gnus.el (gnus-get-unread-articles): Would un-activate already + activated groups from secondary servers. + (gnus-group-transpose-groups): New implementation. + (gnus-group-yank-group): Allow moving even to the end of the + buffer. + + * nnbabyl.el: General tune-up and serious bug-fix all over. + + * gnus.el (gnus-parse-newsrc-body): Would create two dummy.groups + when no .newsrc.eld files existed. + (gnus-summary-setup-buffer): Be really sure that we want to return + to the old buffer. + + * nnbabyl.el (nnbabyl-read-mbox): Insert "OPTIONS" in empty babyl + files. + + * gnus.el (gnus-group-change-level): Insert new groups at the end + of the group alist. + + Tue May 9 04:49:53 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.66 is released. + + * gnus.el (gnus-rebuild-remove-articles): Would make all articles + read and go to the wrong article. + (gnus-summary-update-lines): Allow highlighting of a region. + + * gnus-kill.el (gnus-kill-file-mode-map): Three commands bound to + the same key. + + * gnus-vis.el: Hilit code transferred here. + + * gnus-hilit.el: Obsolete file. + + * gnus-cite.el (gnus-cite-face-list): New file. + + * gnus.el (gnus-member-of-valid): New function. + + * gnus-score.el (gnus-score-integer): Reversed comparison. + + * gnus.el (gnus-maintainer): New address. + (gnus-get-unread-articles): Secondary groups would be doubly + activated. + + Mon May 8 11:11:22 1995 Lars Ingebrigtsen + + * gnus-msg.el (gnus-post-news): Use process/prefix. + (gnus-mail-reply-using-mail): Use process/prefix. + (gnus-summary-cancel-article): Ditto. + + * gnus-vis.el (gnus-carpal-mode): New mode and stuff. + + * gnus.el (gnus-configure-windows): New implementation. + (gnus-window-configuration): New syntax. + (gnus-windows-old-to-new): Conversion between old and new. + (gnus-split-window): Obsolete variable. + (gnus-remove-some-windows): New function. + (gnus-bug): Put point a different place. + + Sun May 7 01:12:04 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.65 is released. + + * gnus.el (gnus-get-unread-articles): Would not activate some + native groups. + + * nndigest.el (nndigest-first-article-separator): New variable. + (nndigest-narrow-to-article): Use it. + (nndigest-request-group): Would be one off in counting messages. + + * gnus.el (gnus-summary-setup-buffer): Don't create the buffer if + it already exists. + (gnus-summary-read-group): If the summary buffer exists, just + switch to it. + (gnus-summary-subject-string): Would bug out on pseudo-articles. + + * gnus-vm.el: New file. + + * gnus-msg.el (gnus-mail-reply-using-mail): In-reply-to was + possibly not correct. + + * gnus-uu.el: Undefined keymaps. + + * gnus.el (gnus-article-date-ut): `lapsed' was some hours off. + + Sat May 6 01:48:06 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-article-de-quoted-unreadable): Did not set + buffer-read-only to nil. + + * gnus-score.el (gnus-score-save): Would not save score file if + the directory didn't exist. + + * gnus-vis.el (gnus-summary-make-menu-bar): Added sort-by-score. + + * gnus.el (gnus-read-active-file): Don't pretend that we have read + the active file when we haven't. + (gnus-summary-catchup): Make catchup-and-exit faster. + (gnus-summary-sort-by-score): Make the `reverse' element optional + on all score functions. + (gnus-read-descriptions-file): Don't barf if the server if down. + + * gnus-uu.el (gnus-uu-initialize): Chmod work dir. + + * gnus.el (gnus-nov-parse-line): Allow strings as Lines headers. + (gnus-summary-dummy-line-format): Not aligned properly. + (gnus-summary-goto-subject): Skip dummy articles. + (gnus-group-first-unread-group): Went to the first group, not the + first unread group. + + * gnus.el: 0.64 is released. + + Mon May 1 01:51:25 1995 Lars Ingebrigtsen + + * gnus-vis.el (gnus-server-make-menu-bar): New function. + + * gnus.el: Pushed gnus-uu autoloads out to a keymap in gnus-uu. + (gnus-rebuild-thread): New function. + (gnus-rebuild-remove-articles): New function. + (gnus-group-mode-map): Changes. + + * gnus-score.el + (gnus-summary-temporarily-lower-followups-to-author): New command. + (gnus-summary-lower-followups-to-author): Raised instead of + lowering. + + * gnus.el (gnus-article-date-ut): `lapsed' would give incorrect + time. + (gnus-group-mark-group, gnus-group-unmark-group, + gnus-group-mark-region): New commands and keystrokes. + (gnus-group-process-prefix): New function. + (gnus-group-goto-group): New function. + (gnus-group-catchup-current): Use pro/pre. + (gnus-group-expire-articles): Ditto. + (gnus-group-expire-all-groups): Double ditto. + (gnus-group-set-current-level): Ditto. + (gnus-delete-line): New function. + (gnus-summary-mark-article): Don't unconditionally request article + when using the cache. + + Tue May 2 01:52:56 1995 Christian Limpach + + * gnus.el (gnus-article-display-x-face): cleaned up and use + call-process-region now. + + Mon May 1 23:40:32 1995 Christian Limpach + + * gnus.el (gnus-group-fetch-faq): fixed fetching faq of foreign + groups + + Mon May 1 21:04:22 1995 Scott Byer + + * gnus.el (gnus-unread-articles) Put back in dropped change to + prevent activation of unsubscribed foreign newsgroups. + + Sun Apr 30 04:11:31 1995 Lars Ingebrigtsen + + * gnus.el (gnus-sorted-complement): Would reverse the result given + a nil list. + (gnus-summary-refer-article): Would not let you refer expunged + articles. + (gnus-summary-goto-article): Give a return value. + + * gnus.el: Changes here and there to use the cache. + + * gnus-cache.el: New file. + + * gnus.el (gnus-article-de-quoted-unreadable): Have interactive + calls force un-quoting. + (gnus-article-date-ut): Would choke on distant dates. + (gnus-summary-respool-article): Use the current backend as a + default prompt. + (gnus-summary-respool-article): Behave grafully on nil input. + (gnus-get-unread-articles): Would barf on virtual servers. + (gnus-use-cache): New variable. + + * gnus.el: 0.63 is released. + + Sun Apr 30 01:29:34 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-raise-thread): Would incorrectly not stay + on the same line when that was required. + (gnus-article-date-ut): Required arguments. + + * gnus-score.el (gnus-score-load-file): Would reset + gnus-adaptive-score-alist. + + Sat Apr 29 22:27:46 1995 Lars Magne Ingebrigtsen + + * gnus-uu.el (gnus-uu-post-news): Work in mail buffers as + well. General cleanup. + + * nntp.el (nntp-default-sentinel): Ignore servers that do not + exist. + + * gnus-score.el (gnus-score-add-followups): Used exact match + instead of substring. + + Sat Apr 29 17:58:42 1995 Lars Ingebrigtsen + + * gnus.el (gnus-gnus-to-quick-newsrc-format): Inhibit quitting in + a particularly tricky spot. + (gnus-read-newsrc-el-file): The same. + (gnus-server-edit-server): New layout. + (gnus-server-read-server): Wrong interactive spec and returned to + the wrong buffer. + (gnus-group-browse-foreign-server): Also allow browsing of + servers. + + * nnml.el (nnml-request-list): Did not set nnml-group-alist. + + * gnus.el (gnus-summary-respool-article): Would not let you + respool. + + Sat Apr 29 00:35:17 1995 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-add-followups): Did not work. + + * nntp.el (nntp-request-article): Would fetch articles even if + async-fetched. + (nntp-async-fetch-articles): Would re-fetch the first article. + + * gnus.el: 0.62 is released + + Fri Apr 28 00:24:34 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-set-mode-line): Would bug out on nil max-lens. + (gnus-summary-read-group): Did not properly configure windows on + breaks. + (gnus-summary-select-article): Would not configure windows + properly. + (gnus-summary-exit-no-update): Would go to next group, not next + unread group. + (gnus-summary-enter-digest-group): End gracefully if executed on + something that is not a digest. + (gnus-server-read-server): New command. + (gnus-nov-field): Would not grab the last char on the line. + + * gnus.el: 0.61 is released + + Wed Apr 26 19:48:36 1995 Scott Byer + + * gnus.el (gnus-group-get-new-news) Off by one with relation to + the fix in gnus-get-unread-articles. + + Thu Apr 27 23:46:32 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-next-article): Would bug out on nndigest + groups. + + Thu Apr 27 13:45:21 1995 Scott Byer + + * nnfolder.el (nnfolder-request-group) Fixed it so it returns an + active list even when the flag for not checking mail is t. + + * gnus.el (gnus-get-unread-articles) Changed comparison with level + to < to fix fencepost error. Forced active to nil in the case + where a foreign newsgroup shouldn't be activated. + + Wed Apr 26 19:48:36 1995 Scott Byer + + * nnfolder.el (nnfolder-request-group) Small performance tweak. + + * nnfolder.el (nnfolder-save-mail) Moved the code to kill previous + newsgroups headers into the loop, affects mail saved to multiple + folders so that they don't have multiple newsgroup markers + anymore. + + * nnfolder.el (various) Made sure buffer needed saving before each + request. + + Thu Apr 27 22:34:13 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-parse-newsrc-body): Would reverse the list of + groups if no .newsrc.eld file is present. + (gnus-parse-newsrc-body): Would subscribe unsubscribed groups. + (gnus-summary-mode-map): Many keymap changes. + + Thu Apr 27 21:45:05 1995 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-inews-organization): Use the standard work + buffer. + (gnus-post-news): Did not use followup-to. + + Thu Apr 27 12:38:41 1995 Lars Magne Ingebrigtsen + + * gnus-kill.el (gnus-apply-kill-file-internal): Give abetter error + massage on rn kill files. + + * gnus.el (gnus-article-de-quoted-unreadable): No interactive spec. + + Wed Apr 26 15:57:28 1995 Lars Magne Ingebrigtsen + + * gnus-message.el (gnus-inews-check-post): Would warn about too + long lines when the last line didn't have a newline. + + * gnus-score.el (gnus-score-string): Would loop forever on empty + matches. + + * gnus.el: 0.60 is released. + + Wed Apr 26 15:08:00 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-groups-to-gnus-format): Would ding on non-existant + groups. + (gnus-summary-next-group): Did not keep pint in group buffer + updated. + + Wed Apr 26 14:42:17 1995 Lars Magne Ingebrigtsen + + * nntp.el (nntp-request-article): Would sometime deliver the wrong + article in async mode. + + Wed Apr 26 10:08:36 1995 Lars Ingebrigtsen + + * gnus-message.el (gnus-summary-post-forward): New command and + keystroke. + + * gnus-uu.el (gnus-uu-digest-mail-forward): Name change. + (gnus-uu-digest-post-forward): New command and keystroke. + + * nntp.el (nntp-open-server): Refuse to connect to servers that + have previously timed out. + + * gnus.el (gnus-summary-next-group): Allow 0 as a pointer to go to + the next group. + (gnus-group-edit-group): All group editing functions have changed. + + Tue Apr 25 20:35:40 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-exit-no-update): Go to the right (next) + group on all kinds of exits. + (gnus-article-mode-map): Slight improvement in the duplicated + keystrokes. + + Tue Apr 25 16:33:58 1995 Lars Magne Ingebrigtsen + + * nnspool.el (nnspool-sift-nov-with-sed): New function. + (nnspool-sift-nov-with-sed): New variable. + + * gnus-score.el (gnus-score-remove-lines-adaptive): New function. + + * gnus.el (gnus-summary-remove-lines-marked-with): Do the adaptive + thing. + + * gnus-score.el (gnus-score-string): Allow exact matches. + (gnus-score-adaptive): Use exact matches. + + * gnus.el (gnus-article-de-quoted-unreadable): Replaced with Per's + functions. + + * gnus-score.el (gnus-default-adaptive-score-alist): Name change. + + Tue Apr 25 14:20:52 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-insert-pseudos): Didn't treat + pseudos-separately properly. + + Tue Apr 25 15:08:38 1995 Scott Byer + + * nnmail.el (nnmail-request-post-buffer) changed how this function + deals with the list form of follow-to. Before calling mail-setup, + it now gathers and strips out of the list all "To" headers, and + calls mail-setup with that collection. This avoids the nasty + empty To: field problem. Also made sure that additional fields + are inserted after the To: field. + + * gnus-message.el (gnus-mail-reply-using-mail) Added the same fix + for replying. + + Tue Apr 25 12:54:28 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-valid-select-methods): nnvirtual groups should not + have the address in the name. + (gnus-article-prepare): When trying to refer an article that + didn't exist, the current article pointers would become confused. + (gnus-summary-line-format-alist): Make sure `thread' is defined. + + * gnus.el: 0.59 is released. + + Mon Apr 24 10:50:09 1995 Scott Byer + + * gnus.el (gnus-get-unread-articles) Closed each group after + checking the number of unread articles in order to minimize memory + usage when using a file-based backend (e.g., nnfolder). + + * nnfolder.el (nnfolder-possibly-change-group) Added check on + modtime of mbox. This should help those who use procmail. + + * nnfolder.el (nnfolder-close-group) Added use of + nnfolder-always-close. + + * nnfolder.el (nnfolder-always-close) Added this variable to + determine if nnfolder should got for speed or minimize space + requirements. The old tradeoff. If this new variable is t, + nnfolder will try and keep only one mbox open at a time. This + will cost some time! + + * nnfolder.el (nnfolder-ignore-active-file) Renamed + nnfolder-active-file--paranoia to something mor reasonable. Did + not change the sense. + + * nnfolder.el (nnfolder-read-folder) Consolidated the min-max loop + when being paranoid or recovering from bad active file. + + Tue Apr 25 12:27:03 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-server-to-method): Did not find method for native + groups. + (gnus-article-x-face-command): Value fix. + + Tue Apr 25 11:06:36 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-next-page): Would not allow exit from the + last group. + + * gnus-message.el (gnus-post-news): Would not allow posting from + the group buffer. + (gnus-inews-remove-headers): New function to remove headers before + posting. + (gnus-inews-lines): Would compute an incorrect Lines header. + + * gnus.el (gnus-article-de-quoted-unreadable): Make sure that the + article really is quoted-unreadable. + + Mon Apr 24 17:38:36 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.58 is released. + + * nntp.el (nntp-kill-connection): Add a small wait after timing + out. + + * gnus.el (gnus-format-max-width): Didn't work with numbers. + (gnus-group-first-unread-group): Wouldn't select the first group. + + * nntp.el (nntp-default-sentinel): Would fail to find the name of + the server. + + * gnus.el (gnus-group-unsubscribe-current-group): Did not toggle + properly. + (gnus-group-set-current-level): Warn about illegal levels. + + Mon Apr 24 17:22:27 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-recenter): New version from Sudish. + + Mon Apr 24 00:05:59 1995 Christian Limpach + + * gnus.el (gnus-article-display-x-face): avoid + re-search-forwarding the whole article buffer + + Mon Apr 24 16:46:06 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-seconds-since-epoch): New function. + + * nntp.el (nntp-open-server): Set wrong variable for the port + number. + + * gnus.el (gnus-summary-refer-article): Don't bug out on nil + refer-article-methods. + + Mon Apr 24 16:05:56 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-article-x-face-command): New value. + + Sun Apr 23 11:19:32 1995 Lars Ingebrigtsen + + * nnspool.el (nnspool-request-post): Post asynchronously. + + * nntp.el: Many changes related to asynchronous article fetching. + + * gnus.el (gnus-asynchronous): New variable. + (gnus-article-date-ut, gnus-article-date-local, + gnus-article-date-lapsed): New commands and keystrokes. + + Sun Apr 23 05:34:11 1995 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-adaptive-alist): New variable. + (gnus-score-adaptive): New function. + + * gnus.el (gnus-article-de-quoted-unreadable): Translate = on the + end of lines. + (gnus-del-mark): Name change from gnus-dread-mark. + (gnus-use-adaptive-scoring): New variable. + (gnus-summary-exit): Use it. + + * gnus-message.el (gnus-post-news): Don't bug out on posting with + followup-to methods. + + * gnus.el (gnus-group-set-current-level): Bug fix. + (gnus-request-post-buffer): Open server if it isn't open. + + Sat Apr 22 07:27:25 1995 Lars Magne Ingebrigtsen + + * gnus.el: Pushed all score code out to a separate file. + + * gnus-score.el: New file. + + * gnus.el (gnus-newsrc-alist): Name change from gnus-newsrc-assoc. + + * gnus.el: 0.57 is released. + + Sat Apr 22 04:54:11 1995 Lars Magne Ingebrigtsen + + * gnus.el: Many patches from Hallvard B Furuseth on XEmacs and + kill-buffer matters. + + * gnus-uu.el (gnus-uu-digest-and-forward): Make a better name and + kill the temp buffer. + + * gnus.el (gnus-split-methods): Doc fix. + (gnus-summary-copy-article): Activate non-active newsgroups. + (gnus-summary-insert-pseudos): View pseudos non-separately. + (gnus-view-pseudos-separately): New variable. + + Fri Apr 21 11:00:53 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-start-news-server): Arguments in incorrect order + for substring. + (gnus-summary-refer-article): Always open the server before asking + for articles. + (gnus-simplify-subject-fuzzy): Installed Sudish' and Hallvard's + version. + + Fri Apr 21 09:26:06 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-set-current-level): Changed meaning of + prefix. + (gnus-level-default-unsubscribed): Missing value. + (gnus-simplify-subject-fuzzy): substring instead of + buffer-substring. + + * nnml.el (nnml-request-expire-articles): Would sometimes bomb, + for reasons unknown. + + * nnmh.el (nnmh-request-list): Don't list empty groups. + + * gnus.el (gnus-mail-forward-using-mail): Use emacs-lisp mode + map. + + * gnus.el: 0.56 is released. + + Sun Apr 16 00:34:51 1995 Christian Limpach + + * gnus.el (gnus-article-prepare): fixed moving to bookmark when + displaying article + + Fri Apr 21 05:56:51 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-score-check-syntax): Add file names to error + message. + (gnus-browse-foreign-server): Numbers would be one off. + + * nntp.el (nntp-request-group): Just use the GROUP command. + + Fri Apr 21 05:56:34 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.55 is released. + + Fri Apr 21 02:50:11 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-start-news-server): Set nnmh-directory in the + select method. + + * nnfolder.el: Installed Scott Byer's patches. + + * nnheader.el (nnheader-make-complex-temp-name): New variable. + + * gnus-mh.el: Installed Eric Selberg's patches. + + * gnus.el (gnus-summary-check-current): New variable. + (gnus-summary-search-subject): Use variable. + Did the (replace-match "" t t) thing. + (gnus-simplify-subject-fuzzy): Buffer implementation. + + * nnspool.el (nnspool-seconds-since-epoch): Returned incorrect + data. + + * gnus.el (gnus-article-prepare): Go to the next subject if the + article is canceled. + + Fri Apr 21 02:48:19 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.54 is released. + + Thu Apr 20 06:36:33 1995 Lars Ingebrigtsen + + * gnus.el (gnus-setup-news): Read .newsrc.eld before reading the + active file. + (gnus-group-edit-group-parameters): New command and keystroke. + + * nntp.el (nntp-server-list-active-group): Improperly initialised. + + * gnus.el (gnus-retrieve-groups): New function. + (gnus-groups-to-gnus-format): New function. + (gnus-read-active-file): New semantics: `some'. + (gnus-level-subscribed, gnus-level-unsubscribed, + gnus-level-zombie, gnus-level-killed): New variables. + (gnus-inews-check-post): Many of the checks didn't actually check + anything. + (gnus-check-before-posting): New variable. + (gnus-group-edit-group-method): New command and keystroke. + (gnus-group-mode-map): Change in keymap for edit-group. + (gnus-server-extend-method): Didn{t properly recognise native + groups. + + * gnus.el: Changes throughout to use the level variables instead + of the hard-coded level numbers. + + Thu Apr 20 04:23:34 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.53 is released. + + Thu Apr 20 01:56:59 1995 Lars Magne Ingebrigtsen + + * gnus-uu.el (gnus-uu-part-number): New function. + + * gnus.el (gnus-post-news): Don't require a group name to be legal + to allow composing the article. + (gnus-set-mode-line): Would bug out on a non-numerical + non-string-length. + (gnus-mail-reply-using-mail): Would go to the summary buffer + instead of the mail buffer with non-standard window configs. + (gnus-summary-next-page): Go to the summary buffer. + (gnus-mail-reply-using-mail): Yank before hook. + (gnus-group-mode-map): Reinstituted to old keystrokes. + Installed Eric Selberg's mh and split-window patches. + + * nntp.el (nntp-open-server-function): New variable. + (nntp-rlogin-parameters): New variable. + (nntp-rlogin-user-name): New variable. + (nntp-open-rlogin-stream): New function. + (nntp-open-network-stream): New function. + (nntp-retrieve-groups): New function. + (nntp-open-server): Don't break on a defs list containing just + "nntp" or a port number. + + Wed Apr 19 07:19:31 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.52 is released. + + Wed Apr 19 05:51:27 1995 Lars Magne Ingebrigtsen + + * nntp.el (nntp-request-group): Error in regexp when using LIST + ACTIVE. + + * gnus.el (gnus-parse-newsrc-body): Don't reset levels. + (gnus-group-always-list-unread): New variable. + + * gnus-uu.el (gnus-uu-save-files): Ask user whether to overwrite + existing files. + + * nnmbox.el (nnmbox-request-expire-articles): Fix from Ilja Weis. + + Tue Apr 18 02:45:28 1995 Christian Limpach + + * gnus.el (gnus-point-at-bol): new subst + (gnus-point-at-eol): new subst + * gnus.el: changed all save-excursions to find point at the + beginning or end of a line to use either gnus-point-at-bol or + gnus-point-at-eol. + + Wed Apr 19 03:59:04 1995 Lars Magne Ingebrigtsen + + * gnus-visual.el (gnus-visual-highlight-selected-summary): + Highlight correctly with no mouse-face present. + + * gnus.el (gnus-current-score-file-nondirectory): New function. + (gnus-mode-non-string-length): New semantics from Sudish Joseph. + + * gnus-uu.el: Included all of Eric Selbergs PostScript functions. + + * gnus.el (gnus-summary-mode-line-format-alist): Missing ?s in g + spec. + (gnus-summary-read-group): Go to the next group if the group can't + be selected. + (gnus-update-summary-mark-positions): Don't bug out on threads. + (gnus-summary-copy-article): Accept the prefix as the default + group. + + Wed Apr 19 03:28:37 1995 Lars Magne Ingebrigtsen + + * gnus.el: Major changes in server handling; new mode; and lots of + stuff all over in all files. + + * gnus.el: 0.51 is released. + + Mon Apr 17 08:38:57 1995 Lars Ingebrigtsen + + * gnus.el (gnus-clear-system): Kill nntp-server-buffer upon exit. + + * gnus.el: Added "*" to the beginning of the docs strings of all + user variables. + + Sun Apr 16 03:18:15 1995 Lars Ingebrigtsen + + * gnus.el (gnus-post-news): Yank before running + news-reply-header-hook. + (gnus-group-list-groups): Go to the right group after listing. + (gnus-summary-respool-article): Allow respooling from newsgroups. + (gnus-split-methods): New variable. + (gnus-read-save-file-name): New function. + (gnus-summary-save-in-rmail): Have all the saving functions use + this new function. + + * gnus-visual.el (gnus-summary-make-menu-bar): Menu change. + + * gnus.el (gnus-cancel-news): Don't ask experts. + (gnus-summary-mark-region-as-read): New command and keystroke. + + Sun Apr 16 20:45:38 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-save-newsrc-file): Run save-newsrc-hook even if + the file is not saved. + (gnus-summary-insert-pseudos): Would interleave pseudos and real + articles. + (gnus-cancel-news): Generate a better error message. + + * nnmh.el (nnmh-request-list): Do not try to read unreadable + directories. + + * gnus.el (gnus-copy-sequence): Would choke on just a single cons + cell. + (gnus-inews-article): Would insert two \n's too many. + + Sat Apr 15 04:29:22 1995 Lars Ingebrigtsen + + * gnus.el (gnus-use-long-file-name): One quote symbol too many. + (gnus-article-x-face-command): New variable. + (gnus-article-display-x-face): New command and keystroke. + (gnus-newsgroup-active): New internal variable. + (gnus-update-read-articles): Use this variable to ensure that new + articles that have arrived while the summary buffer existed are + not inadvertantly marked as read. + (gnus-score-headers): Remove exluded score files from the list of + score file alists. Probably. + + * nntp.el (nntp-news-default-headers): New variable. + (nntp-request-post-buffer): Use it. + + * gnus.el (gnus-inews-insert-headers): Extended syntax of + gnus-required-headers. + + Sun Apr 16 00:02:02 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-update-line): Don't mark ancient and read + articles as low-scored. + (gnus-inews-article): Would insert headers one line too early. + + * gnus.el: 0.50 is released. + + Sat Apr 15 22:16:26 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-score-headers): Changed to allow score alists + returned from function in... + (gnus-score-find-score-files-function): Wider semantics. + (gnus-parse-options-lines): Don't parse options if there aren't + any. + (gnus-group-default-list-level): New variable. + (gnus-use-long-file-name): Extended semantics. + (gnus-group-list-groups): Use new variable. + (gnus-group-jump-to-group): Bux fix. + + Fri Apr 14 08:05:42 1995 Lars Ingebrigtsen + + * gnus.el: Installed Fabrice Popineau's XEmacs patches. + + * nnfolder.el: Installed Scott Byer's version. + + * nntp.el (nntp-request-group): Use LIST ACTIVE group if the + server supports it. + + Fri Apr 14 17:14:44 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-post-news): Set gnus-newsgroup-name when posting. + + * nnfolder.el (nnfolder-request-expire-articles): Setcar the wrong + thing. + + * gnus.el (gnus-summary-catchup): Would catchup no matter what + answer the user gave. + + * nnfolder.el (nnfolder-request-close): New function to remove + nnfolder buffers. + + Fri Apr 14 17:09:40 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.49 is released. + + Fri Apr 14 00:29:43 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-list-active-group): New function. + (gnus-browse-server-mode-map): New keystrokes: `l' and + `L', which both return to the group buffer. + + * nntp.el (nntp-list-active-group): New function. + + * gnus.el: New spec for current score file. + (gnus-simplify-subject-fuzzy): Made fuzzier on white space. + (gnus-summary-cancel-article): Heade headers after replying, etc. + (gnus-user-mail-address): New variable. + (gnus-score-orphans): Orphan functions added. + + Wed Apr 12 23:13:17 1995 Lars Ingebrigtsen + + * gnus.el (gnus-score-body): New function. + (gnus-summary-raise-by-body): All the raise/lower functions and + keystrokes are added. + + Wed Apr 12 17:23:32 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-mail-reply-using-mail): Allow reply-to function to + return a list of headers to insert. + (gnus-summary-save-article): Don't re-request articles before + saving. + (gnus-summary-read-group): If all articles have been expunged on + accound of low scores, display all articles. + (gnus-score-check-syntax): Don't choke on empty score entries. + + Wed Apr 12 00:23:01 1995 Lars Ingebrigtsen + + * gnus.el: Doc fix. + (gnus-score-integer): New function. + (gnus-score-date): New function. + + * nntp.el (nntp-accept-response): Give a better error message. + + * nnvirtual.el (nnvirtual-update-marked): Removal of article marks + now propagates to the source groups. + + * gnus.el (gnus-select-newsgroup): Adjust marked lists after + really entering group. + + Tue Apr 11 23:08:25 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-catchup-and-goto-next-group): New command + and keystroke. + (gnus-summary-toggle-header): Set point at the start up the buffer + when toggling the header. + (gnus-score-transform-old-to-new): Would rewrite 'files atoms + incorrectly. + + * nnmail.el (nnmail-request-post-buffer): Bind buffer-read-only to + nil before attempting to change the buffer. + + * gnus-uu.el (gnus-uu-save-files): Don't choke on non-existing + files. + + * gnus.el (gnus-score-save): Make sure that the directory that the + score file is written to actually exists. + + * gnus-kill.el (gnus-kill-file-raise-followups-to-author): + Misleading message. + + * gnus.el (gnus-summary-save-article): Remove any X-Gnus header + lines before saving. + + Tue Apr 11 00:03:35 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-number-of-articles-in-thread): New + function. + (gnus-summary-score-entry): A slightly more elaborate prompt. + (gnus-group-first-unread-group): New function and keystroke. + + Mon Apr 10 20:41:55 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-mark-as-read-forward): Overwrite E marks. + (gnus-group-jump-to-group): Allow jumping to groups not in the + active file. + (gnus-summary-line-format-alist): New spec: number of articles in + the current subthread. + + * nnml.el (nnml-possibly-create-directory): Create directories on + the fly instead of creating all possible directories at startup. + + * nnmail.el (nnmail-article-group): Allow nnmail-split-methods to + be a function to be called. + + * gnus.el (gnus-nov-parse-line): Allow articles without + message-ids to pass through. Fudge temporary ids. + + * nnml.el (nnml-make-nov-line): Create dummy message-ids for + articles that do not have them. + + * gnus.el (gnus-group-make-group): Refuse to create groups that + already exist. + (gnus-group-change-level): Don't enter foreign groups into killed + lists. + (gnus-parse-n-options): Handle options -n lines as the were + supposed to - sequentially. + (gnus-newsrc-options-n-yes, gnus-newsrc-options-n-no): Obsolete + variables. + (gnus-newsrc-options-n): New variable. + (gnus-matches-options-n): New function. + (gnus-summary-next-group): Kill summary buffer even when C-g'ing + while choosing the next group after n'ing. + (gnus-summary-mode-line-format-alist): New format spec added. + (gnus-short-group-name): New function. + (gnus-mail-forward-using-mail): Use From line instead of grup name + in the Subject header when forwarding. + (gnus-summary-mode-line-format-alist): Added user-defined spec to + the mode line alists. + (gnus-score-save): Would set `gnus-score-cache' to nil. + + * gnus-uu.el (gnus-uu-mark-sparse): Did not create hashtb before + using it. + + * gnus.el (gnus-mail-other-window-using-mail): Used lisp keymap. + + Mon Apr 10 20:29:26 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-move-article): Didn't remove articles from + list of unreads. + + Mon Apr 10 14:59:49 1995 Lars Magne Ingebrigtsen + + * gnus.el, gnus-uu.el: Changed all instances of + mail-header-separator to use regexp-quote and anchors. + + * gnus.el (gnus-nov-parse-line): Don't choke on malformed NOV + lines. + + Sun Apr 2 13:16:03 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-inews-insert-headers): Didn't check new + -gather-limit correctly. + (gnus-summary-prepare-threads): Print subjects if `fuzzy' was + used, but subjects aren't equal. + + Sun Apr 2 12:11:17 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.47 & 0.48 is released. + + * nnmh.el (nnmh-article-pathname): Wouldn't find groups that were + located in directories that had "." in the directory names. + + * gnus.el (gnus-score-load-file): Changing score alists would have + no effect. + + Sat Apr 1 16:45:14 1995 Lars Ingebrigtsen + + * gnus-visual.el (gnus-visual-highlight-selected-summary): Would + mess up selected face when no mouse highlights were used. + + * nnml.el (nnml-request-create-group): Really create groups that + are created. + + * gnus.el (gnus-setup-news): If the local server can't be + contacted, just ignore it and offer to continue. + (gnus-group-post-news): Set newsgroup name to nil before offering + to post. + (gnus-summary-read-group): Summary buffer wouldn't be killed when + `n'-ing to a group that had all its articles expired. + + * nntp.el (nntp-open-server): Allow quitting when setting up + connection to a server. + + * gnus.el (gnus-articles-to-read): Ticked articles would become + read when newsgroups were entered with C-u SPC. + (gnus-inews-check-post): Check outgoing post for long lines. + (gnus-score-load-score-alist): Ignore empty score files. + (gnus-score-check-syntax): Check score file syntax. + + Sat Apr 1 10:41:11 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-move-article): Did not remove ticked and + dormant articles from relevant lists. + + Fri Mar 31 11:49:44 1995 Lars Magne Ingebrigtsen + + * gnus-kill.el (gnus-apply-kill-file-internal): Did not add kill + buffers to the buffer list for later killing. + + * nnml.el (nnml-request-expire-articles): Would bug out on empty + groups. + + Wed Mar 29 13:34:45 1995 Lars Ingebrigtsen + + * nnspool.el (nnspool-request-newgroups): Use floats instead of + fudging. + + * gnus.el (gnus-adjust-marked-articles): Remove expired reply + marks. + + * nnvirtual.el (nnvirtual-create-mapping): Ignore marks on + articles that are expired. + + * gnus.el (gnus-gather-threads): Allow fuzzy comparisons. + (gnus-simplify-subject-fuzzy): New function. + + * nnml.el (nnml-request-create-group): New function. + + * gnus.el (gnus-group-make-group): Create nnml groups when + requested. + (gnus-request-create-group): New function. + + * nntp.el (nntp-request-article): Avoid obsolete concating of + numbers-as-strings. + + Wed Mar 29 10:21:00 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.46 is released. + + Wed Mar 29 09:55:15 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-score-load-file): Use different method for + figuring out whether score file names are relative. + + Wed Mar 29 08:54:25 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-set-info): Bugged out on lists instead of + ranges. + + * nntp.el (nntp-open-server): Would try to send MODE READER even + when opening was unsuccessful. + + Wed Mar 29 03:56:05 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-faq-directory): Change in value. + + Tue Mar 28 11:06:18 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-archive-directory): New variable. + (gnus-group-make-archive-group): New command and keystroke. + (gnus-get-unread-articles): Did not properly activate nnvirtual + groups. + (gnus-summary-insert-pseudos): Didn't initialize hashtb before + inserting pseudos. + + Mon Mar 27 20:58:05 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-sort): If used in summary-prepare-hook, + would lead to infinite recursion. + + Mon Mar 27 19:09:35 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-mail-other-window-using-mail): Would give wrong + parameters to sendamil function. + + Mon Mar 27 19:06:58 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.45 is released. + + Mon Mar 27 18:31:05 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-catchup-to-here): Would mark everything as + read. + + * nnml.el (nnml-request-expire-articles): Max without apply. + + Mon Mar 27 12:16:37 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-no-groups-message): New variable. + (gnus-group-best-unread-group): Don't just to the current group. + + Mon Mar 27 11:18:40 1995 Lars Magne Ingebrigtsen + + * gnus-kill.el (gnus-kill): Would remove all kill entries from + kill files. + + * gnus.el (gnus-post-news): Did not work from the group buffer. + (gnus-score-load-file): Would unconditionally overwrite expunge + and mark levels. + + Mon Mar 27 11:13:43 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.41-0.44 released in quick succession. Fixed new range + operators. + + Sat Mar 25 05:05:26 1995 Lars Ingebrigtsen + + * gnus.el (gnus-compress-newsrc-assoc, + gnus-uncompress-newsrc-assoc): Compress lists of marked articles + before writing them to the .newsrc.eld file. + (gnus-select-newsgroup): auto-expire match on full name. + (gnus-select-newsgroup): New element in select methods: + auto-expire. + (gnus-save-scores): New variable. + (gnus-summary-exit): Use it. + (gnus-newsrc-to-gnus-format): If .newsrc was newer than + .newsrc.eld, all foreign groups would be hosed. + + * gnus.el: All range functions have changed to allow an extended + syntax. + + Fri Mar 24 07:17:20 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-move-article): Copy marks when moving + articles. + (gnus-set-sorted-intersection): Would compute incorrect + intersection. + + * nndoc.el (nndoc-retrieve-headers): Insert Lines header. + * nnmh.el (nnmh-retrieve-headers): Ditto. + (nndigest-retrieve-headers): Ditto. + + * nndigest.el (nndigest-narrow-to-article): Don't include the + closing digest separator in an article. + + * gnus.el (gnus-group-change-level): When subscribing to + non-existant groups, would claim that there was one unread article + in the group. + (gnus-summary-delete-article): Remove process mark after deleting + articles. + (gnus-score-load-file): 'files was not properly handled, and edits + would end up with the wrong alist as the current one. + (gnus-score-edit-alist): Name change from -file. + (gnus-score-edit-file): New function and keystroke. + + * nntp.el (nntp-request-newgroups): Would bug out due to a `let' + instead of a `let*'. + + * gnus.el (gnus-score-save): Score files would not be saved. + (gnus-summary-update-line): Would mark as read-below even when + attempting to remove the mark. + + Thu Mar 23 08:29:56 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-save-article-file, + gnus-summary-save-article-folder, + gnus-summary-save-article-rmail): New commands and keystrokes. + (gnus-summary-sort): All sort commands now also work when + threading is used. + (gnus-summary-mode-map): Several key changes. + + * nnml.el (nnml-request-expire-articles): Update active file as + well. + * nnbabyl.el (nnbabyl-request-expire-articles): Ditto. + * nnfolder.el (nnfolder-request-expire-articles): Ditto. + * nnmbox.el (nnmbox-request-expire-articles): Ditto. + + * nnmail.el (nnmail-tmp-directory): New variable. + (nnmail-move-inbox): Use it. + + * nnvirtual.el (nnvirtual-update-marked): Would insert non-visible + component groups into the group buffer. + + * nnmh.el (nnmh-get-new-mail): Don't create directories unless + mail reading is wanted. + + * nnfolder.el (nnfolder-read-folder): Insert number of lines in + the article. + + * gnus.el (gnus-group-unsubscribe-group): Would refuse to + subscribe to groups not in active file. + + Thu Mar 23 13:23:45 1995 Lars Magne Ingebrigtsen + + * gnus.el: Remove two calls to `debug'. + + * gnus.el: 0.40 is released. + + Thu Mar 23 06:29:03 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.39 is released. + + Thu Mar 23 04:10:52 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-mail-other-window-using-mail): Allow yanking, and + fix winconf on exit. + (gnus-group-faq-directory): Wrong default value. + (gnus-group-fetch-faq): Did not work. + (gnus-score-save): Would save score files even when there wasn't + one. + + * gnus-uu.el (gnus-uu-decode-uu-and-save): Use an uu default + directory. + + * nnfolder.el (nnfolder-read-folder): Would bug out if there was + no active file. + + * gnus.el (gnus-ask-server-for-new-groups): Did not really work + for any backends. + (gnus-group-unsubscribe-group): Would not let you susbcribe to + killed groups. + (gnus-summary-catchup): Would not catchup expired articles. + + Thu Mar 22 14:23:03 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.38 is released. + + Wed Mar 22 13:55:21 1995 Lars Ingebrigtsen + + * nntp.el (nntp-send-mode-reader): Blocked reading of active list. + + Wed Mar 22 13:55:05 1995 Lars Ingebrigtsen + + * gnus.el: 0.37 is released. + + Wed Mar 22 08:37:15 1995 Lars Magne Ingebrigtsen + + * nntp.el (nntp-send-mode-reader): Actually send the mode reader + command. + + Wed Mar 22 00:00:01 1995 Lars Ingebrigtsen + + * gnus.el (gnus-make-threads-and-expunge): Really, really expunge + low-scored articles. Right. + (gnus-make-threads): Simpler function to speed things up when + expunging is not needed. + + * nnvirtual.el (nnvirtual-create-mapping): Would bug out in the + presence of bogus groups. + + * nnspool.el (nnspool-possibly-change-directory): Don't error out + when errors occur, but return a message instead. + + * nndoc.el (nndoc-possibly-change-buffer): Would bug out if the + file didn't exist. + + * gnus.el (gnus-mark-xrefs-as-read): Handled crossrefs to groups + with no read articles strangely. Also didn't perform crossreffing + when select methods were only almost equal. + (gnus-make-articles-unread): Would bug out when nnmh was the + native server. + + * nnbabyl.el (nnbabyl-read-mbox): Did not properly label articles. + + * gnus.el (gnus-set-mode-line): Do unread-and-unticked by default. + (gnus-summary-pop-article): New command and keystroke. + (gnus-mode-non-string-length): New variable. + (gnus-set-mode-line): Use it. + (gnus-score-mode): New mode to edit score files. + (gnus-inews-date): Did the opposite thing of what it was supposed + to do with time zones. + (gnus-group-make-group): Don't prompt for address if that is + irrelevant. + + Tue Mar 21 10:01:20 1995 Lars Ingebrigtsen + + * nnfolder.el (nnfolder-read-folder): Would only work if incoming + mail was split by Gnus. + + * gnus.el (gnus-score-transform-old-to-new): Function for + rewriting old score files. + (gnus-score-expiry-days): Name change from + `gnus-kill-expiry-days'. + (gnus-score-headers): All score functions rewritten to deal with + the new format. + (gnus-summary-goto-unread): New variable. + (gnus-summary-mark-forward): Use it. + + Tue Mar 21 04:50:05 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-mark-article): Low-scored articles in + auto-expirable grups should be expirable. + + Mon Mar 20 00:07:36 1995 Lars Ingebrigtsen + + * gnus.el (gnus-post-news): Also prompt for Subject, if that is + required. + (gnus-global-score-files): New variable. + (gnus-score-score-files): Use it. + (gnus-score-save): Don't attempt to save read-only score files. + (gnus-summary-mode-map): Score map error. + (gnus-score-load-score-alist): New function. + (gnus-summary-*-raise/lower-by-id): New commands and keystrokes + for raising/lowering by message-id. + + * nntp.el (nntp-request-post-buffer): Don't rely on any Gnus + variables. + + * gnus.el: Lots and lots of doc fixes. + (gnus-execute): Would not allow use from summary buffer. + (gnus-local-timezone): Removed variable. + (gnus-summary-followup): Don't display article. + + Sun Mar 19 04:34:30 1995 Lars Ingebrigtsen + + * gnus.el (gnus-activate-newsgroup): If a server can't be reached, + there's not much point in trying to request groups from it. + (gnus-mark-xrefs-as-read): Also do Xrefs to unsubscribed groups + unconditionally if virtual groups are used. + + * nntp.el (nntp-open-server): Set up timeouts for connections. + (nntp-connection-timeout): New variable. + + * gnus.el (gnus-get-unread-articles): Allow activation of virtual + groups. + (gnus-kill-file-mode): Reinstated most GNUS functions and took out + all gnus-raise/lower code. + (gnus-summary-mode): Doc fix. (Snicker.) + (gnus): Move startup hook backwards. + (gnus-articles-to-read): Use total-number as the default. + (gnus-member-of-range): Minor inaccuracy. + (gnus-sorted-complement): New, faster function. + (gnus-articles-to-read): Use it. + (gnus-sorted-intersection, gnus-set-sorted-intersection): New + functions. + (gnus-select-newsgroup): Use them. + + Sun Mar 19 02:46:15 1995 Lars Magne Ingebrigtsen + + * nnvirtual.el (nnvirtual-retrieve-headers): Would leave extra + spaces before the Xref sometimes, causing problems for subsequent + Xref handling. + + Sun Mar 19 02:46:01 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.36 is released. + + Sun Mar 19 00:03:37 1995 Lars Magne Ingebrigtsen + + * nnvirtual.el (nnvirtual-retrieve-headers): When NOV lines only + had seven tabs, this would deliver incorrect results. + + * gnus.el (gnus-execute-1): Would not search through article + bodies. + (gnus-summary-prepare-threads): 'empty was not properly respected. + + * nntp.el (nntp-open-server): Would bug out if server refused + connection. + + * gnus.el (gnus-make-threads): Expunge non-scored articles, if + wanted. + (gnus-summary-prepare-threads): When not threading, expunge + nmon-scored, if wanted. + + Sat Mar 18 23:39:47 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-insert-line): Would bug out if + gnus-summary-default-score was nil. + (gnus-inews-news): If `gnus-mail-courtesy-message' is nil, don't + append one. + + Sat Mar 18 16:39:59 1995 Lars Ingebrigtsen + + * gnus.el (gnus-group-edit-group): Use pp. + (gnus-score-change-score-file): New command and keystroke. + + * nntp.el (nntp-request-post-buffer): Pass the request on to + nnmail if that is wanted. + + * gnus.el (gnus-post-news): Send mail even when requesting post + when `to-address' is set. + + * nntp.el (nntp-server-opened-hook): Doc fix. + (nntp-send-mode-reader, nntp-send-authinfo): New functions. + + * gnus.el (gnus-score-find-bnews): Would bug out when presented + with the file "SCORE". + + Fri Mar 17 14:05:54 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-exit): Buffer-local vectors would not be + garbage-collected, leading to a major memory drain. + + Thu Mar 16 22:14:14 1995 Lars Ingebrigtsen + + * gnus.el (gnus-update-read-articles): Would mark ticked articles + not displayed as read. + (gnus-member-of-range): Also accept single-range ranges. + (gnus-get-unread-articles-in-group): Adjust ticked and dormant + articles before computing the number of unread articles. + (gnus-summary-next-article): Would need an extra C-n before + moving to the right groups (sort of). + + Thu Mar 16 16:52:19 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.35 is released. + + Thu Mar 16 15:47:33 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-read-descriptions-file): Changed pattern to + delete. + (gnus-group-describe-group): Added "force" prefix. + + Thu Mar 16 00:08:23 1995 Lars Ingebrigtsen + + * nnvirtual.el (nnvirtual-create-mapping): Be more lenient with + component groups that can't be requested. + + * nnml.el (nnml-possibly-change-directory): Don't signal errors. + + * gnus.el (gnus-group-get-new-news-this-group): Display better + error messages when errors occur. + + * nnspool.el (nnspool-request-group): Return an error message if + the group can't be selected. + + * nntp.el (nntp-open-server): Don't bug out if getting a C-g while + waiting for initial contact. + + * nnspool.el (nnspool-request-newgroups): Now also supported by + nnspool. + + * gnus-visual.el (gnus-group-make-menu-bar): -make-doc-group did + not exist. + + * gnus.el (gnus-group-faq-directory): Missing leading slash. + + * nnfolder.el (nnfolder-request-list): The first time this is + called, create the active file. + + * gnus.el (gnus-group-change-level): When subscribing to killed + groups with no articles, would enter wrong number of read + articles. + + * nnspool.el (nnspool-server-opened): Would return t even when not + opened. + + Wed Mar 15 23:47:52 1995 Lars Ingebrigtsen + + * gnus.el (gnus-get-new-news-in-group): Give a sensible return + value. + (gnus-group-get-new-news-this-group): Beep if group can't be + activated. + + * nnfolder.el (nnfolder-request-group): Complain if the group + doesn't exist. + + Wed Mar 15 19:14:47 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-refer-article): Would behave strangely + when refering an article already present in the summary buffer. + + Wed Mar 15 17:53:14 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.34 is released. + + Wed Mar 15 00:53:47 1995 Lars Ingebrigtsen + + * gnus.el (gnus-post-news): Would bug out when posting from the + group buffer. + + * gnus-uu.el (gnus-uu-grab-articles): Don't mark ticked (etc) + articles as read. + + * gnus.el (gnus-find-method-for-group): Before no groups were + entered, a bug here would result in an incorrect error message + when the nntp server couldn't be contacted. + (gnus-summary-mode-map): Several changes. + (gnus-read-descriptions-file): Would delete lines that were valid. + + Tue Mar 14 23:11:30 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-next-article): Enable the use of C-n and + C-p when choosing "next group" in the summary buffer. + (gnus-summary-recenter): Behaves in a slightly modified + fashion. Now also works with absolutely all sizes. + + Mon Mar 13 11:13:41 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-catchup): Would mark all as read, even if + to-here was non-nil. + (gnus-summary-catchup-to-here): Disable prompting. + (gnus-summary-update-lines): Do updateing even with gnus-visual + nil. + (gnus-score-load-file): New atom - mark-and-expunge. + + * nnmail.el (nnmail-split-methods): New semantics. + (nnmail-article-group): Use them. + + * gnus.el (gnus-group-list-matching): Fix and bound to keys and + menus. + (gnus-group-list-all-matching): New command. + (gnus-group-sort-groups): Would make all groups disappear. + + * (-request-move-article, -request-accept-article): Only do saving + after the last article has been moved. + + * nnml.el (nnml-save-nov): Only save modified buffers. + + * gnus.el (gnus-summary-move-article): Only save nov files once + when moving many articles. + (gnus-post-news): Did not allow interactive calls. + + Sun Mar 12 16:52:50 1995 Lars Ingebrigtsen + + * gnus.el (gnus-mail-forward-using-mail): Would not bind + `gnus-mail-send-and-exit' to `C-c C-c'. + + Sun Mar 12 16:30:28 1995 Lars Ingebrigtsen + + * gnus.el: 0.33 is released. + + Sun Mar 12 09:42:11 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-prepare-threads, gnus-make-threads): + Really expunge all low-marked articles if that is wanted. + (gnus-score-score-files): Would bug out if `gnus-use-long-names' + was nil and no score file exists. + + Sat Mar 11 19:14:05 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-toggle-threads): Go to the last article if + none is present on the current line. + (gnus-summary-prepare-threads): Cull dormant and low-scored + articles when displaying non-threaded summary buffers. + (gnus-post-news, gnus-mail-reply-using-mail): Respect + `gnus-use-full-window'. + (gnus-summary-copy-article): New command and keystroke. + + Fri Mar 10 05:24:11 1995 Lars Ingebrigtsen + + * gnus.el: 0.32 is released. + + Fri Mar 10 05:24:11 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-next-article, gnus-summary-prev-article, + gnus-summary-prev-group): New implementations. + (gnus-article-prepare): The summary mode line would say "1 unread" + when there were none. + (gnus-summary-toggle-header): Did not hide headers after using + MIME. + (gnus-check-bogus-newsgroups): Removed checking for duplicate + killed groups. + (gnus-check-duplicate-killed-groups): New function. + (gnus-summary-update-mark): Allow summary-clear-mark to clear even + the low-score-mark. + (gnus-check-first-time-used): Don't re-subscribe default groups + when re-scanning, before creating the .newsrc files. + + * gnus-uu.el (gnus-uu-decode-save): Insisted on saving to an + existing file. + + Thu Mar 9 08:44:18 1995 Lars Ingebrigtsen + + * nnfolder.el (nnfolder-request-move-article): Did not work. + + * nnmbox.el (nnmbox-request-move-article): Did not work at all. + + * nnvirtual.el (nnvirtual-retrieve-headers): Did not properly + translate xrefs from foreign groups. + + Mon Mar 6 06:13:26 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-fetch-faq): New command and keystroke. + (gnus-group-faq-directory): New variable. + (gnus-group-fetch-faq): New command and keystroke. + (gnus-apply-kill-file): No longer calls expunge-below. + + * nntp.el (nntp-request-group-description): New function. + + * gnus.el (gnus-extract-address-components): Understands some + formats better. + (gnus-cut-thread): Make sure all expunged articles are marked as + read. + (gnus-group-sort-groups): New command and keystroke. + (group-group-sort-by-alphabet, gnus-group-sort-by-unread, + gnus-group-sort-by-level): New functions. + (gnus-group-sort-function): New variable. + (gnus-group-describe-group): Use XGTITLE for group descriptions. + (gnus-group-get-description): New function. + (gnus-request-group-description): New function. + + * nnmbox.el (nnmbox-request-move-article): Did not work and would + destroy the active list. + + * gnus.el (gnus-score-load-file): Add a 'touched to the alist if + there isn't one already. + (gnus-score-save): Remove 'touched before writing score file. + (gnus-score-find-bnews): Always return the local score file, even + if it doesn't exist. + (gnus-score-load-file): Really execute special atoms. + (gnus-score-set, gnus-score-get): Return to the old definitions of + these functions. + (gnus-cut-thread): Cut dormant and ancient articles from the + threads. + (gnus-summary-show-all-dormant): New implementation. + (gnus-summary-hide-all-dormant): New command and keystroke. + (gnus-make-threads): Now expunges articles with low scores. + (gnus-summary-show-all-expunged): New implementation. + (gnus-summary-catchup): Did not mark expunged articles as read. + + Sun Mar 5 01:29:49 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-mark-article): Also auto-expire caught up + articles. + (gnus-group-make-kiboze-group): Would produce incorrect score + files. + (gnus-group-insert-group-line): Would scroll the top off the + screen. + + Sat Mar 4 02:32:11 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-read-group): Would do strange stuff to the + window configuration when not using full screen. + (gnus-get-unread-articles-in-group): Check for illegal read + numbers. + + * gnus-uu.el (gnus-uu-save-files): Would bug if the file already + existed. + + Sat Mar 4 00:32:07 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-mark-xrefs-as-read): Would compute the wrong + number of unread articles. + + Fri Mar 3 23:52:28 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-search-forward): Would ignore level 5 + groups. + + Fri Mar 3 00:41:42 1995 Lars Magne Ingebrigtsen + + * nnml.el (nnml-request-group): Would not work if the active file + was changed from without. + + * gnus.el (gnus-summary-move-article): Have the group prefix be + the initial string. + (gnus-group-edit-group-done): pop instead of switch to edit + buffer. + (gnus-group-set-info): Now also accepts group name changes. + (gnus-group-prepare-flat): Sort killed and zombie groups. + (gnus-extract-address-components): New variable. + + * gnus.el: 0.31 is released + + Thu Mar 2 01:57:30 1995 Lars Ingebrigtsen + + * gnus.el (gnus-refer-article-method): New variable. + (gnus-summary-refer-article): Use it. + (gnus-find-method-for-group): Use the results of the usage. + (gnus-request-article-this-buffer): Use it even more. + (gnus-group-mode-map): make-directory-group and make-doc-group + have moved. + (gnus-group-make-doc-group): Check whether the doc group exists + before creating it. + (gnus-group-make-kiboze-group): New command and keystroke. + + * nnfolder.el: New one-file one-group mail backend. + + * nnmail.el (nnmail-move-inbox): Would occationally kill a random + buffer. Just to keep the users on their toes. Just for the heck of + it. + + * nnvirtual.el (nnvirtual-create-mapping): Would barf if component + groups were unactivated. + (nnvirtual-retrieve-headers): Would deliver incorrect Xrefs if + component groups were foreign. + + * gnus.el (gnus-summary-insert-pseudos): Use the `not-confirm' + value of gnus-view-pseudos. + (gnus-group-suspend): Don't kill the dribble buffer. + + Wed Mar 1 20:58:35 1995 Lars Ingebrigtsen + + * gnus.el (gnus-save-newsrc-file): Would bug after suspending. + + Wed Mar 1 17:01:49 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-article-remove-cr): Didn't set read-only to nil. + (gnus-browse-foreign-server): Ignore the groups that should be + ignored. + + * nnspool.el (nnspool-retrieve-headers-with-nov): Misplaced paren. + (nnspool-nov-directory): New variable. + (nnspool-retrieve-headers-with-nov): Use variable. + + * gnus.el (gnus-inews-domain-name): Try to guess the domain name + from (system-name) if all else fails. + (gnus-score-find-bnews): Get even that trailing "/" deleted from + the kill file dir name. + + Wed Mar 1 17:01:25 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.30 is released. + + Wed Mar 1 00:16:38 1995 Lars Ingebrigtsen + + * gnus.el (gnus-inews-unique-id): New message-id look. + + * nnml.el (nnml-request-group): Returned nothing if called without + having been pre-activated by the presence of new mail. + + * gnus.el (gnus-group-prepare-flat): Did not list groups with only + ticked articles. + (gnus-update-read-articles): Miscalculated number of unread + articles. + (gnus-summary-line-format-alist): %N defined as a number. + (gnus-summary-exit): When `gnus-use-full-window' was nil, strange + stuff would happen. + (gnus-subscribe-newsgroup): Bugged out on near-empty group + buffers. + (gnus-check-new-newsgroups): Can now specify a list of select + methods to be asked. + (gnus-group-set-current-level): Advance after setting level. + (gnus-view-pseudos): New value: not-confirm, for totally automatic + viewing. + (gnus-get-new-news-in-group): Would break on killed groups. + (gnus-update-read-articles): Would break on non-active groups. + + Tue Feb 28 22:56:22 1995 Lars Ingebrigtsen + + * gnus.el (gnus-select-newsgroup): Kill the summary buffer if the + group can't be entered. + + * nnml.el (nnml-request-group): Occationally replied nil. + + * gnus.el (gnus-group-make-doc-group): Did not work at all. + (gnus-summary-enter-digest-group): Would mess with + `gnus-newsrc-assoc'. + + Tue Feb 28 19:16:05 1995 Lars Magne Ingebrigtsen + + * nnkiboze.el (nnkiboze-request-group): Would bug on empty groups. + + Tue Feb 28 18:12:30 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.29 is released. + + Tue Feb 28 00:25:04 1995 Lars Ingebrigtsen + + * gnus.el (gnus-group-prepare-function): New variable. + + * nnml.el (nnml-request-group): Faster implementation. + + * gnus.el: All y-or-n-p's and yes-or-no-p's delete their messages + from the echo area. + + * nnselect.el: New backend. + + * gnus.el (gnus-batch-score): Can now also be used interactively. + + Mon Feb 27 17:22:54 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-update-format-specifications): Would read active + file when %D was in the group line spec unconditionally. + (gnus-group-make-doc-group): Look through path for doc group. + (gnus): Don't show describe-briefly. + + Mon Feb 27 14:52:48 1995 Lars Ingebrigtsen + + * gnus.el (gnus-use-dribble-file): New variable. + + Sun Feb 26 19:42:24 1995 Lars Ingebrigtsen + + * nnbabyl.el: New backend for reading rmail files. + + * nnml.el (nnml-request-replace-article): Update nov lines after + accepting an edited article. + + * gnus.el (gnus-update-summary-mark-positions): The user can now + also specify where the marks are to go (with some limits). + + Sat Feb 25 19:14:40 1995 Lars Ingebrigtsen + + * nnvirtual.el (nnvirtual-update-marked): Handles all marks + properly (again). + + * gnus.el (gnus-start-news-server): Would not accept non-nntp + select methods interactively. + + * nnvirtual.el (nnvirtual-retrieve-headers): Pass on NOV lines + instead of HEADers to Gnus. + (nnvirtual-convert-headers): Convert HEADers, if nnvirtual is + handed them, into NOV lines. + + * nntp.el (nntp-retrieve-headers-with-xover): Would reply t the + first time used, even if the server wasn't XOVER capable. + + Sat Feb 25 16:44:26 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-list-zombies): Let the user know if there + are no zombie groups. + + Sat Feb 25 16:01:13 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.28 is released. + + Sat Feb 25 16:01:13 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-exit): Kill expunged buffer on exit. + + Sat Feb 25 13:44:56 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-unsubscribe-group): Don't require a matching + name if the active have haven't been read. + (gnus-article-word-wrap): And all the other article functions + didn't set buffer-read-only to nil first. + (gnus-sorted-header-list): Added To: to the list of default + visible headers. + (gnus-score-set): Always enter scores into the local score file. + (gnus-summary-raise-thread): Update mode line. + + Sat Feb 25 01:38:07 1995 Lars Ingebrigtsen + + * nnvirtual.el: Rewrite. Got rid of that pesky vector. Also enable + reading read articles from the source groups. + + Fri Feb 24 22:30:38 1995 Lars Ingebrigtsen + + * gnus.el (gnus-options-subscribe, gnus-options-not-subscribe): + New variables. + (gnus-parse-options-lines): Use new variables. + + Fri Feb 24 18:32:38 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-describe-all-groups): Did not work. + + Fri Feb 24 17:34:55 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.26 is released. + + * nntp.el (nntp-maximum-request): Set to 400. + + * gnus.el (gnus-summary-search-article): Would bug if executed + at the end of the buffer. + + Fri Feb 24 00:03:04 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-insert-pseudos): Insert pseudo-articles + after the articles from whence they came. + (gnus-group-make-doc-group): New command and keystroke. + (gnus-check-first-time-used): Subscribe to the doc group if this + is the first time used. + + * gnus-uu.el (gnus-uu-grab-articles): Have article numbers + associated with pseudos. + + * gnus.el (gnus-group-list-groups): The group buffer would + sometimes be killed at this point. + + * nndoc.el: New backend for reading a single mbox-like file as one + newsgroup. + + * nndigest.el (nndigest-close-group): Kill the nndigest group + buffer. + + * gnus.el (gnus-configure-windows): Summary and article buffers + would spuriously change to buffer-read-only nil. + (gnus-summary-work-articles): Would sort instead of reverse the + list of processable articles. + + Thu Feb 23 23:30:14 1995 Lars Ingebrigtsen + + * gnus.el (gnus-read-mark): Both `R' and `D' marks. + + * nnmbox.el ('nnmbox-request-post-buffer): Cyclic definition. + + * gnus.el (gnus-summary-mail-forward): Would not restore window + configuration properly after sending mail. + + Thu Feb 23 16:09:54 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.25 is released. + + Thu Feb 23 10:20:46 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-enter-digest-group): New command. + (gnus-summary-mode-map): `E' - expiry, `e' - edit article. + + * nndigest.el: New backend. + + * gnus.el (gnus-mark-xrefs-as-read): Would not mark xrefs as read + when select methods were similar. + (gnus-group-insert-group-line): %t did not work properly in the + specs. + (gnus-score-hierarchical): Removed variable. + (gnus-score-find-single, gnus-score-find-hierarchical): New + functions. + (gnus-score-find-bnews): Renamed function. + (gnus-score-headers): Call these new functions from here. + (gnus-summary-move-article): Remove any process marks. + Removed all old digest functions. + + Thu Feb 23 09:49:46 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-mode-map): `M H' for + gnus-summary-catchup-to-here. + + * gnus-uu.el (gnus-uu-mark-all): Would loop indefinitely. + + * gnus.el (gnus-summary-mode-map): `e' sets the expiry mark. + + Wed Feb 22 17:32:37 1995 Lars Ingebrigtsen + + * gnus.el (gnus-activate-newsgroup): Make Gnus take heed of server + ports. + (gnus-summary-raise-by-subject & friends): Remove "Re: " from + subjects by default. + (gnus-summary-mode-map): Changed `M C-d' and `M C-s' to `M D' and + `M S'. + + Wed Feb 22 10:12:14 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-mode-map): Changed `M-d' and `C-M-d' back + to `x' and `X'. + (gnus-summary-quit): Would kill the group buffer. + (gnus-summary-exit): `gnus-exit-group-hook' was not allowed to + fiddle with important variables. + (gnus-summary-search-group): Would select groups that had no + unread articles. + + * gnus.el: 0.24 is released + + Sun Feb 19 08:02:38 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-read-group): Did not configure windows + properly. + (gnus-summary-hide-thread): Would not properly hide all threads. + (gnus-summary-next-group): `n' on the last article, and then 0 + articles would return to an empty group buffer. + + * gnus.el: 0.23 released. + + Sat Feb 18 15:11:39 1995 Lars Ingebrigtsen + + * gnus.el (gnus-mark-xrefs-as-read): Use gnus-use-cross-references + as it was meant to be used. + (gnus-score-load): Don't check for special members in + gnus-score-alist. + + Sat Feb 18 11:22:05 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-post-news): Don't insert any Bcc if it already + exists. + + * gnus.el: 0.21 released + + Sat Feb 18 04:47:50 1995 Lars Ingebrigtsen + + * gnus.el (gnus-inews-article-header-hook): New hook. + + Fri Feb 17 08:40:18 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-followup-and-reply, + gnus-summary-followup-and-reply-with-original): New functions and + keystrokes for sending both followup and reply. + + * nntp.el (nntp-request-post-buffer): 'ask setting on + gnus-auto-mail-to-author. + + * gnus.el (gnus-inews-article): Use the foreign server to post the + article if a prefix is given to `gnus-inews-news'. + + * gnus-uu.el: New automatic view commands and keystrokes. + (gnus-uu-mark-series): New function and keystroke. + (gnus-uu-mark-all): New function and keystroke. + + * gnus.el (gnus-group-search-forward): Did not go to next group + with unread articles, just went to the next group. + (gnus-article-prepare): Mark cancelled articles as such. + (gnus-request-replace-article): Functions for replacing an article + in all mail backends. + (gnus-summary-edit-article): Function and keystroke for editing a + (mail) article. + (gnus-group-best-unread-group): New command and keystroke. + (gnus-keep-same-level): Now supports `best' as a value to go to + the "best" next newsgroup. + (gnus-mark-xrefs-in-unsubscribed): New variable. + (gnus-mark-xrefs-as-read): Use the new variable. + (gnus-group-add-group): Adding a group in an empty group buffer + bugged. + (gnus-summary-hide-all-threads): Would loop indefinitely. + (gnus-view-pseudos): New variable for automatic pseudo-article + viewing. + + * nnmail.el (nnmail-request-post-buffer): Have followups go to + From, To and Cc. + + * gnus.el: When switching between many summary buffers, the + gnus-summary-buffer variable would sometimes point to the wrong + buffer, in some functions. + + * gnus.el (gnus-group-insert-group-line): Would by when using + %num,numD type of format specs on numbers. + + Fri Feb 17 05:06:28 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-mail-reply-using-mail): Don't remove all text + properties from headers, just invisible. + + Thu Feb 16 04:21:19 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-browse-foreign-server): Did not intern the + select method. + (gnus-summary-search-subject): Don't ignore hidden articles. + (gnus-make-directory): Would not properly create new directories. + (gnus-mail-reply-using-mail): Include Cc's when replying. + (gnus-adjust-marked-articles): Infinite loop. + + * nnvirtual.el (nnvirtual-retrieve-headers): Would not allow + people to enter groups. + + * gnus-mh.el (gnus-mail-other-window-using-mhe): Tried to fetch + subject where none was to be fetched. + + * gnus.el (gnus-browse-read-group): Movement commands did not + work. + (gnus-score-interactive-default-score): New variable, default + 1000. + + Thu Feb 16 01:37:30 1995 Lars Ingebrigtsen + + * nnmail.el (nnmail-move-inbox): Now (probably) supports + popmail. (Function taken from rmail.el). + + * gnus.el (gnus-mark-xrefs-as-read): If a mail article is marked + as expirable, the cross-reffed articles will also be marked as + expirable. + (gnus-summary-mode-map): Changed all keybindings back to the GNUS + 4.1 bindings. All new keybindings are now at S-letter. + + Wed Feb 15 06:44:14 1995 Lars Ingebrigtsen + + * gnus.el (gnus-score-find-score-files-function): New variable. + (gnus-summary-display-article): Don't configure to article buffer + if it isn't wanted. + + * nntp.el (nntp-default-sentinel): Don't signal an error if a + connection closes. + + * gnus.el (gnus-score-file-suffix): Renamed gnus-score-file-name. + + Mon Feb 6 15:44:42 1995 Lars Ingebrigtsen + + * gnus.el (gnus-configure-windows): Bury the group buffer + somewhat. + (gnus-mail-reply-using-mail): Don't bind `C-c C-y' to anything in + the mail buffer. + + * nndir.el (nndir-retrieve-headers): Retrieve with NOV, if that is + posssible. + + Sun Feb 5 21:15:45 1995 Lars Ingebrigtsen + + * gnus.el: Introduction of pseudo-articles. Changes throughout + Gnus. + + * gnus-uu.el: Rewrite. New keymap and new interface. + + * gnus.el (gnus-get-newsgroup-headers): Would barf on In-Reply-To + headers. + + Sat Feb 4 18:16:21 1995 Lars Ingebrigtsen + + * gnus-uu.el (gnus-uu-get-list-of-articles): Would not get list of + articles. + + Sat Feb 4 13:47:14 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-quit): Did not the kill summary buffer. + + * gnus-visual.el (gnus-visual-highlight-selected-summary): Limit + the highligting to the same area highligted by mouse-face. + + Sat Feb 4 09:49:31 1995 Per Abrahamsen + + * gnus.el (gnus-build-get-header): Faster searching. + + Fri Feb 3 18:25:42 1995 Per Abrahamsen + + * gnus.el (gnus-newsgroup-ancient): New variable. + (gnus-summary-local-variables): Initialize it. + (gnus-build-get-header): Build it. + (gnus-trim-thread): New function. + (gnus-make-threads): Call it. + (gnus-ancient-mark): New variable. + (gnus-summary-prepare-threads): Use it. + (gnus-fetch-old-headers): Updated documentation. + + Mon Jan 30 05:11:47 1995 Per Abrahamsen + + * gnus.el (gnus-articles-to-read): Don't inform the user if the + only scored articles are tiched or dormant. + + Sat Feb 4 09:39:21 1995 Lars Ingebrigtsen + + * gnus.el (gnus-read-init-file): Also load .gnus.el and .gnus.elc. + + * gnus.el: Removed the last vestiges of the invisible text in the + group and summary buffers. + + Fri Feb 3 19:27:29 1995 Lars Ingebrigtsen + + * gnus.el (gnus-group-make-directory-group): New command and + keystroke. + (gnus-subscribe-hierarchical-interactive): Would not let you + subscribe to anything. + (gnus-get-newsgroup-headers): Would barf when presented with + message-id-less articles. + + * nndir.el: New backend for reading directories. + + Thu Feb 2 17:42:51 1995 Lars Ingebrigtsen + + * gnus.el (gnus-group-prepare): Zombie and killed groups could not + be chosen. + (gnus-group-search-forward): Didn't return nil when no group was + found. + (gnus-summary-prepare): Sorting was done after gathering loose + threads, so the losse threads were not sorted properly. + + Thu Feb 2 15:31:11 1995 Per Abrahamsen + + * gnus.el: Implemented support for SCORE files. + + Thu Feb 2 17:23:17 1995 Lars Ingebrigtsen + + * gnus.el (gnus-group-list-groups): Don't go to the first group + after listing. + (gnus-group-list-groups): Go to the first unread group at startup, + not the second. + + Tue Jan 31 15:13:10 1995 Lars Ingebrigtsen + + * gnus.el (gnus-inews-full-address): Use the full machine name in + the message-ids. + (gnus-get-unread-articles-in-group): Groups that have no articles + are marked as such. + + * nnmail.el (nnmail-article-group): Catch regexp overflow errors. + + * gnus.el (gnus-update-read-articles): Would not update virtual + groups. + (gnus-mail-send-and-exit): Don't return to the Gnus window + configuration from the mail buffer if Gnus isn't active. + (gnus-summary-next-group): Go to the group buffer if the user + answers "0" after selecting a new group from a different group. + (gnus-select-newsgroup): Catch up properly if the only articles in + a group have expired. + + Tue Jan 31 08:01:19 1995 Per Abrahamsen + + * gnus.el (gnus-kill): Arguments to `gnus-days-between' was + swapped. + + Tue Jan 31 07:09:36 1995 Per Abrahamsen + + * gnus.el (gnus-pp-gnus-kill): Don't quote quoted objects. + + Tue Jan 31 05:51:52 1995 Lars Ingebrigtsen + + * gnus.el (gnus): Check whether Gnus has been started already. If + so, don't re-start, just switch to the buffer and get new news. + (gnus-batch-score): Didn't work. + + * nnspool.el (nnspool-nov-is-evil): New variable. + (nnspool-lib-dir): New variable. + (nnspool-retrieve-headers-with-nov): nnspool can now return NOV + lines instead of plain article headers. + + * nntp.el (nntp-nov-is-evil): Changed name of `nntp-xover-is-evil' + to `nntp-nov-is-evil'. + + Mon Jan 30 12:27:30 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-search-subject): Would go to the first + article when searching backward. + (gnus-gather-threads): When gathering loose threads, they would be + gathered in reverse order. + (gnus-summary-prev-article): Did retrieve old articles when + executed on the first article in the buffer. + (gnus-read-header): Would not read old headers when requested one + by one. + + * gnus.el: Converted all mark variables from strings to characters. + + Sun Jan 29 05:56:51 1995 Per Abrahamsen + + * gnus.el (gnus-select-group-hook): Remove description of how to + sort, since it doesn't work. + (gnus-make-sub-thread): Removed silly lambda expression. + (gnus-thread-sort-functions): New variable. + (gnus-make-threads): Do not sort here. + (gnus-thread-sort-by-number): New function. + (gnus-thread-sort-by-author): New function. + (gnus-thread-sort-by-subject): New function. + (gnus-thread-sort-by-date): New function. + (gnus-thread-sort-by-score): New function. + (gnus-thread-sort-by-total-score): New function. + (gnus-thread-total-score): New function. + (gnus-thread-header): New function. + (gnus-sort-threads): New function. + (gnus-summary-prepare): Sort here. + + Sat Jan 28 18:44:09 1995 Per Abrahamsen + + * gnus.el (gnus-articles-to-read): Provide default values instead + of initial input. + + Mon Jan 30 01:41:43 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-mark-article-hook): Don't mark expirable articles + as read when selecting them. + (gnus-summary-mode): Removed " Thread" from the summary mode line. + (gnus-inews-message-id): Use domain name instead of host name in + message-ids. + + Sun Jan 29 09:37:31 1995 Lars Ingebrigtsen + + * gnus.el (gnus-apply-kill-file): Update dates when expiring + kills. + (gnus-article-mode): Changed all the mode lines to really use a + buffer-local spec. + (gnus-group-search-forward): gnus-keep-same-level now works. + + * gnus.el: Got rid of all the invisible text and changed all the + functions to use text properties. + + Sat Jan 28 03:13:13 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-inews-insert-headers): Remove any old + NNTP-Posting-Host headers. + (gnus-group-catchup): Mark dormant as read. + + Fri Jan 27 20:50:07 1995 Per Abrahamsen + + * gnus.el (gnus-inews-news): Make followups default to all groups. + + Fri Jan 27 20:07:31 1995 Per Abrahamsen + + * gnus.el (gnus-summary-prepare-threads): Move assignment to + `gnus-tmp-prev-subject' to after the check for equality with + `subject'. + + Thu Jan 26 15:47:35 1995 Per Abrahamsen + + * gnus.el (gnus-set-mouse-face): New function. + (gnus-parse-format): New function. + (gnus-parse-simple-format): Renamed from `gnus-parse-format'. + (gnus-group-insert-group-line): Do not set mouse face here. + (gnus-summary-insert-line): Do not set mouse face here. + (gnus-group-line-format): Add mouse face delimiters. + (gnus-summary-line-format): Add mouse face delimiters. + (gnus-update-format-specifications): Don't depend on + `gnus-group-line-format-spec' being a simple list. + + Tue Jan 24 20:18:42 1995 Per Abrahamsen + + * gnus.el (gnus-clear-system): Kill global KILL file. + + Tue Jan 24 14:43:33 1995 Per Abrahamsen + + * gnus.el (gnus-inews-insert-headers): Only check if first + `gnus-summary-gather-subject-limit' characters are the same. + + Mon Jan 23 22:18:56 1995 Per Abrahamsen + + * gnus.el (gnus-summary-update-line): Protect call to + `gnus-summary-mark-article' with `save-excursion'. + + Sat Jan 28 00:55:19 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-extract-address-components): Would fail if the + address contained special characters. + + Fri Jan 27 04:45:09 1995 Lars Ingebrigtsen + + * gnus.el (gnus-active-to-gnus-format): Condition-cased the active + file reading to be a bit more lenient with active files. + (gnus-group-get-new-news): Would always request info on each + individual group, even when the active file has been read. + + Thu Jan 26 00:16:45 1995 Lars Ingebrigtsen + + * gnus.el (gnus-inews-unique-id): Check for illegal characters in + the user name. + (gnus-summary-set-score): Removed the invisible score from the + summary lines. (assq article-number gnus-newsgroup-scored) can be + used instead. + (gnus-add-to-range): Would not give the right result if the ranges + did not start at 1. + + Wed Jan 25 02:49:39 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-move-article): Would not properly respool + articles. + (gnus-pp-gnus-kill): Removed (quote) from where it wasn't needed. + + * nnml.el (nnml-request-accept-article): Wouldn't do anything + much. + (nnml-request-move-article): Would not properly move an article. + + * gnus.el (gnus-apply-kill-file): Don't score already scored + articles. + (gnus-newsgroup-scored): New list of articles. + (gnus-select-newsgroup, gnus-articles-to-read): Changed to take + into account previously scored articles, if any. + + Tue Jan 24 00:19:11 1995 Lars Ingebrigtsen + + * gnus.el (gnus-inews-organization): If organization is wanted, + and no organization is found, the user will be prompted for one. + (gnus-inews-check-post): Bug in checking for multuple headers. + (gnus-inews-check-post): Check for version and sendsys. + (gnus-inews-insert-signature): Don't insert stuff that looks like + file names in signatures. + + * nntp.el (nntp-request-article): unwind-protect the article + fetching. Might have caused bugs elsewhere. + + * gnus.el (gnus-inews-organization): New implementation. The + `gnus-local-organization' variable can now also be a function. + (gnus-inews-check-post): Check for multiple headers. + (gnus-check-bogus-newsgroups): Would not remove bogus dead groups. + + Mon Jan 23 23:49:15 1995 Lars Ingebrigtsen + + * gnus.el (gnus-inews-user-name): Use `user-mail-address' only as + a last resort. + + Mon Jan 23 19:40:02 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-build-get-header): Did not work with multiple + articles with the same message-id. + (gnus-inews-organization): Remove trailing newlines. + + * nnspool.el (nnspool-find-article-by-message-id): Grep for + message-ids instead of loading the entire history file. + + Mon Jan 23 18:59:27 1995 Per Abrahamsen + + * gnus-visual.el (gnus-visual-summary-highlight): Use and document + free variables. + (gnus-visual-summary-highlight-line): Remove unnecessary test for + `gnus-visual' and add workaround face changes in start of line. + + Mon Jan 23 18:48:31 1995 Lars Magne Ingebrigtsen + + * nnmbox.el (nnmbox-read-mbox): Fix for no newsgroups. + + * gnus.el (gnus-ask-server-for-new-groups): Did not work. :-) + (gnus-summary-make-false-root): This variable has now swallowed + the functionality of `gnus-gather-loose-threads'. + + Mon Jan 23 18:03:21 1994 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-unsubscribe-current-group): Would go two + steps forward. + + Mon Jan 23 17:09:10 1995 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-insert-lines): Compute a new Lines header and + remove any old ones. + + * nnvirtual.el (nnvirtual-retrieve-headers): Removed checking for + multiple articles with the same ID. + + * gnus.el (gnus-get-newsgroup-headers): Ignore multiple articles + with the same Message-ID. + (gnus-get-newsgroup-headers-xover): The same. + + Mon Jan 23 00:42:33 1995 Lars Ingebrigtsen + + * gnus.el (gnus-inews-insert-headers): Ask when empty headers + are detected. + (gnus-cancel-news): Avoid sending an empty cancel message. + (gnus-signature-function): New variable to return a signature file + name. + (gnus-inews-insert-signature): Now warns the user if the signature + is more than 4 lines long. Also uses `gnus-signature-function'. + Also, if the string isn't a file name, the string itself is + inserted as a signature. + (gnus-inews-insert-signature): If mail-signature has already + inserted a .sig, delete this and insert Gnus' own. + (gnus-inews-check-post): Warn the user if the article to be posted + is more than 60k long. + (gnus-inews-insert-headers): Insert Sender header if the From + header doesn't seem to be the name of the user that posts. + (gnus-inews-check-post): Check for control characters. + (gnus-inews-insert-headers): Added "_-_" to message-id if the + thread has changed name. + + Sun Jan 22 02:37:06 1995 Lars Ingebrigtsen + + * gnus.el (gnus-article-prepare): Mark cancelled articles as + cancelled. + (gnus-summary-expire-articles): Mark expired articles as + cancelled. + (gnus-inews-insert-signature): Changed .sig predix from "--" to + "-- ". + (gnus-article-display-hook): Added "treat overstrike" to the + default display hook. + (gnus-inews-date): Changed to generate a valid date. + + * nnmbox.el (nnmbox-request-article): Don't include the "From " + line when returning an article. + + * nnmh.el (nnmh-save-mail): Rename "From " lines. + + * nnml.el (nnml-save-mail): Rename "From " lines. + + * gnus.el (gnus-gnus-to-newsrc-format): Don't write foreign groups + to .newsrc. + (gnus-summary-remove-lines-marked-as-read, + gnus-summary-remove-lines-marked-with): Renamed functions + from *-delete-marked-*. + (gnus-check-new-newsgroups): New possible value: `ask-server'. + (gnus-ask-server-for-new-groups): Ask the server for new groups + instead of comparing the killed list and the active hashtb. + (gnus-parse-newsrc-body): Parse ! and : in the way they are + supposed to be parsed. + (gnus-get-unread-articles): Now works with any combination of + startup level, gnus-read-active-file status and + gnus-activate-foreign-newsgroup level. + + Sat Jan 21 21:27:23 1995 Lars Ingebrigtsen + + * nnvirtual.el: Big rewrite. + (nnvirtual-update-marked): Now updates marks in source groups. + (nnvirtual-create-mapping): Use marks from source groups. + (nnvirtual-possibly-change-newsgroups): Several nnvirtual groups + may be active at the same time. nnvirtual groups can also include + other nnvirtual groups. + + * gnus.el (gnus-add-marked-articles): New function, + + Sat Jan 21 15:22:51 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-mark-xrefs-as-read): Would mark xreffed articles + that were ticked (or dormant) as read. + (gnus-summary-refer-parent-article): Now understands the numeric + prefix. + (gnus-build-get-header): Would make it impossible to select old + fetched articles. + + * gnus-visual.el (gnus-article-make-menu-bar): Added all treatment + functions to a menu. + + * gnus.el (gnus-close-group): New backend call to perform + cleanups. + (gnus-article-de-quoted-unreadable): New article treatment + function. + + Sat Jan 21 01:15:26 1995 Lars Ingebrigtsen + + * nnmail.el (nnmail-article-group): Don't enter a mail into the + same mail group twice, + + * gnus.el (gnus-build-old-threads): Don't build old threads + backwards from dormant articles. + + Fri Jan 20 23:31:16 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-mark-article): Changed the expiry mark. It + is now a "read" mark, and occupies the same position as the other + read marks ("DX+- "). + + Fri Jan 20 19:19:01 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-get-unread-articles): Did not properly activate + foreign newsgroups. + + Fri Jan 20 18:49:58 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-list-matching): New function and keystroke. + + Tue Jan 17 19:19:30 1995 Per Abrahamsen + + * gnus.el (gnus-summary-keysort-summary, + gnus-summary-sort-summary, gnus-keysort-headers, gnus-keysort, + gnus-sort-headers, gnus-string-lessp, gnus-date-lessp): Deleted. + (gnus-sortable-date): New function. + (gnus-summary-sort-by-date, gnus-summary-sort-by-subject, + gnus-summary-sort-by-author, gnus-summary-sort-by-number): Use it. + (gnus-summary-sort-by-score): New function. + (gnus-summary-mode-map): Bind it. + (gnus-select-group-hook): Updated documentation. + + * gnus.el (gnus-summary-best-unread-article): New function. + (gnus-summary-mode-map): Add binding. + (gnus-summary-mode): Document it. + + Mon Jan 16 15:49:37 1995 Per Abrahamsen + + * gnus.el (gnus-summary-gather-subject-limit): New variable. + (gnus-gather-threads): Use it. + + * nntp.el (nntp-request-post-buffer): Support + `gnus-auto-mail-to-author'. + + * gnus.el (gnus-mail-self-blind): New variable. + (gnus-post-news): Use it. + (gnus-inews-news): Recognize "BCC" field. + + Thu Jan 19 21:37:33 1995 Lars Ingebrigtsen + + * gnus.el (gnus-build-old-threads): Fetch old headers and build + complete threads. + + Wed Jan 18 08:36:26 1995 Lars Ingebrigtsen + + * nnmh.el: Rewrite. + + * gnus.el (gnus-get-newsgroup-headers): New implementation. Twice + as fast. + + * nnmbox.el: Rewrite. Now supports crossposting. + + * nnml.el: Rewrite. + + * nnmail.el: Gathered all mail support functions in this file. + + * nnmbox.el: Renamed nnmail to nnmbox. + + * gnus.el (gnus-summary-exit): Kill expunged buffer on exit. + + * nntp.el (nntp-server-opened-hook): Send "MODE READER" to the + server at startup. + + Mon Jan 16 11:56:39 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-read-group): Update the specs after the + select-group-hook has bene run. + + Sun Jan 15 11:01:20 1995 Per Abrahamsen + + * gnus.el: Add autoload for `gnus-article-make-menu-bar'. + (gnus-article-mode-map): Call `gnus-article-make-menu-bar'. + + * gnus-visual.el (gnus-group-make-menu-bar): Added entry for + `gnus-group-edit-global-kill', + (gnus-summary-make-menu-bar): Added entry for + `gnus-summary-raise-followups-to-author', and + `gnus-summary-lower-followups-to-author'. Removed entries for + `gnus-summary-raise-by-thread', and + `gnus-summary-lower-by-thread'. + Renamed `xref' to `crossposting' since more people know that term. + Merged `Sort' menu with `Misc' since the menu-bar had not space + enough for all entries. + (gnus-article-make-menu-bar): New function. Add menu bar for + article mode. + + Sun Jan 15 18:08:53 1995 Per Abrahamsen + + * gnus.el (gnus-pp-gnus-kill): Don't assume (nth 0 object) is + `gnus-kill'. + + Sun Jan 15 14:11:29 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-refer-article): Don't fetch an article if + it is fetched already. + (gnus-gnus-to-newsrc-format): Write killed groups to the .newsrc + file as unsubscribed without numbers. + (gnus-summary-exit): Go to next group in the Group buffer when + quitting. + + Sun Jan 15 07:44:09 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-article-refer-article): Would not scroll to the + beginning of the article. + (gnus-summary-go-to-next-thread): Would go to wrong article. + + Sat Jan 14 12:55:31 1995 Lars Ingebrigtsen + + * gnus.el (gnus-summary-exit): Do not advance in the Group buffer + when quitting from a Summary buffer. + + * nnvirtual.el (nnvirtual-retrieve-headers): Articles that appear + twice because of crossposting are deleted. + + * gnus.el (gnus-visual-mark-article-hook): New hook. + (gnus-group-prepare): Don't display groups with only dormant + articles when listing doing a `gnus-group-list-groups'. + + * gnus-visual.el: New file. + (gnus-visual-highlight-selected-summary): Function moved out of + gnus.el. + (gnus-selected-summary-face): Variable name change. + + * gnus.el (gnus-visual): New variable. + + * nnmail.el (nnmail-crosspost): New variable to toggle + crossposting in mail groups. + + * nnml.el (nnml-article-group): Fold continuation lines before + splitting mail. + + Sat Jan 14 04:34:59 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-browse-foreign-server): Completing-read over + `gnus-secondary-servers'. + (gnus-summary-refer-article): Would print Subject in the inserter + Summary line to "t". + (gnus-summary-mail-forward, gnus-summary-mail-other-window): + Messed up the window configuration. + (gnus-group-insert-group-line): When dormant articles were + present, an incorrect number of unread articles would be reported. + (gnus-summary-goto-subject): Would bug when the point was at the + end of the buffer. + + Fri Jan 13 09:40:11 1995 Lars Ingebrigtsen + + * nnml.el (nnml-generate-nov-databases): Didn't update the active + file. + + * gnus.el (gnus-summary-next-group): Would behave spuriously when + the next group had all its articles marked as read via the xref + mechanism. Would also go to the Newsgroup buffer when C-g was + pressed. + (gnus-inews-check-post): Reject outgoing mail that has empty + Subject lines, no text at all and just quoted text. + (gnus-summary-catchup-and-exit): Do not mark dormant articles as + read when catching up. + (gnus-summary-catchup): New implementation of all catchup + functions. + + Fri Jan 13 07:27:27 1995 Lars Magne Ingebrigtsen + + * nntp.el (nntp-request-article): Inserted contents into wrong + buffer. + + Mon Jan 9 02:16:12 1995 + + * gnus.el (gnus-make-threads): Threading bug when + `gnus-thread-ignore-subject' is nil fix. + (gnus-post-news): When posting in foreign newsgroups, the name of + the group would be wrong. + + * nnmail.el (nnmail-choose-mail): Insert the X-Gnus-Newsgroup line + at the right place. + + * gnus.el (gnus-group-get-new-news-this-group): Would scroll + forwards when updating the first newsgroup(s) in the Newsgroup + buffer. + (gnus-get-unread-articles-in-group): Compute number of unreads + more correctly. Dormant counts as "read" while ticked counts as + "unread". + + * nnml.el (nnml-choose-mail): Handle continuation lines and tabs + correctly when generating nov databases. + + * gnus.el (gnus-summary-read-group): Applying a kill file to a + group that contains only dormant articles would lead to an + infinite loop. + (gnus-kill-save-kill-buffer): Really kill kill buffers upon exit. + (gnus-select-newsgroup): Treat newsgroups with only dormant + articles as having no unread articles. + (gnus-get-newsgroup-headers-xover, gnus-get-newsgroup-headers): + Downcase message-id and references for better threading. + + Sun Jan 8 01:11:04 1995 + + * gnus.el (gnus-summary-subject-string): Wrong regexp made the + function return nil always. + (gnus-summary-insert-line): Use mail-extr to extract address and + name. + (gnus-pp-gnus-kill): Would never actually prettify anything. + (gnus-kill): Did not update date of last successful kill. + (gnus-group-insert-group-line): Do not print a "*" if the group + contains only dormant articles. + (gnus-update-read-articles): When removing all marks from a mark + list (dormant, ticked, bookmarks), Gnus wouldn't properly update + the list of marked articles when exiting from the group. + + Sat Jan 7 03:05:01 1995 + + * gnus.el (gnus-mark-xrefs-as-read): Computed strange number of + unread articles when given illegal xref numbers. + (gnus-group-apropos, gnus-group-description-apropos): Two new + commands and keystrokes. + (gnus-no-server): New command to start Gnus without connecting to + your local newsserver. + (gnus): Gnus would read the active file even when started at a low + level. + (gnus-summary-exit): Kill kill file buffer upon newsgroup exit. + (gnus-gnus-to-newsrc-format): Would write .newsrc instead of + .newsrc-HOST. + + Fri Jan 6 16:45:45 1995 + + * gnus.el (gnus-summary-search-subject): UNREAD now really goes to + unread only. + (gnus-kill-file-permanent-kill-by-xref): Kill all cross-posted + groups mentioned. + (gnus-kill-file-kill-by-xref): Improper newsgroup matching. + + Thu Jan 5 20:45:56 1995 + + * gnus.el (gnus-bug): New command. + (gnus-get-newsgroup-headers): Fix when article does not contain + message-id. + (gnus-summary-show-all-expunged): Not (interactive). + (gnus-summary-delete-marked-with): Infinite loop. + (gnus-summary-search-subject): Next always goes to the next + article. + + Thu Jan 5 14:23:56 1995 + + * gnus.el (gnus-summary-delete-article): New function and + keystroke to delete (mail) articles right away. + (gnus-summary-next-group): When selecting next group that have had + all its articles marked as read by xref, this would yield + unexpected results. + (gnus-summary-search-subject): `n' on first article selects the + first article. + (gnus-mouse-face): New variable. + + * nnmh.el: New mail backend for mh folders (ie. spool). + + Wed Jan 4 02:45:08 1995 + + * nnmail.el (nnmail-read-mbox): If an mbox file didn't exist, this + function would fail. + (nnmail-split-region): Lines numbers were inserted in wrong + headers with wrong numbers. + + * gnus.el (gnus-summary-show-all-expunged): New function and + keystroke to display previously expunged lines. + + * nnmail.el (nnmail-prepare-incoming-hook): New variable. + + * gnus.el (gnus-mail-forward-using-mail): Delete invisible headers + when forwarding. + + Tue Jan 3 15:23:00 1995 + + * gnus.el (gnus-post-news): Move point to beginning of quoted text + on followups. + (gnus-group-set-current-level): Prompt for a level if called with + nil. + (gnus-summary-raise-interest, gnus-summary-lower-interest, + gnus-summary-set-interest): New commands and keystrokes. + (gnus-summary-default-interest): New variable. + (gnus-raise, gnus-lower): New functions to use in kill-files for + raising or lowering interest. + + Mon Jan 2 11:51:32 1995 + + * gnus.el (gnus-group-line-format): Modified spec to show number + of really unread unread articles instead of unread + ticked + + interesting. + (gnus-group-line-format): New codes to show number of interesting + articles; number of ticked and interesting; number of ticked, + number of read; total number of articles; number of unread, + unticked, uninteresting articles. + (gnus-newsgroup-dormant): `gnus-newsgroup-interesting' (and all + derivatives thereof) renamed from "interesting" to "dormant". + (NOTE: everybody that have marked articles as "interesting" earlier + might experience slightly peculiar effects. The joys of alpha + testing.) + (gnus-summary-mode-map): `+' to set dormant mark, `-' to set tick. + (gnus-group-expire-articles): Fixed bug that resulted in no + articles being expired. + (gnus-unread-mark, gnus-read-mark, gnus-ticked-mark, + gnus-dormant-mark): New variables for the mark characters. + (gnus-summary-insert-line): Loose threads can now also be printed + with the `empty' method. + (gnus-make-threads): When threading twice (for instance, when + toggling threading), information was mangled which ended in in + infinite loop. + + Sun Jan 1 14:35:01 1995 + + * gnus.el (gnus-summary-refer-parent-article): Bug when no article + has been selected. + (gnus-kill, gnus-apply-kill-file, gnus-execute): Changed to + support expiring kills and multple patterns in one `gnus-kill' + call. + + * nnml.el (nnml-split-incoming): Did not properly split mail that + contained multiple "From " lines. + + Sat Dec 31 00:55:24 1994 + + * gnus.el (gnus-newsgroup-marked): This variable had been re-named + `gnus-newsgroup-ticked'. It has been re-named back again. + (gnus-kill-file-kill-by-subject): Made all kill-by-* functions + operate on the current article in the Summary buffer. + + Fri Dec 30 11:45:27 1994 + + * gnus.el (gnus-summary-set-bookmark, + gnus-summary-remove-bookmark): New commands and keystrokes to set + bookmarks. + (gnus-summary-mark-as-interesting): New command and keystroke to + mark articles as interesting. + (gnus-article-prepare): Automatic moving to bookmarks added. + (gnus-summary-delete-interesting): Interesting articles that have + no children are not shown in the Summary buffer by default. + (gnus-group-expire-articles, gnus-summary-expire-articles): Trying + to expire articles in groups that do not support expiring would + make Emacs barf. + (gnus-active-to-gnus-format): Modified to read information on + moderation, if wanted. + (gnus-summary-print-dummy-lines): Obsolete variable. + (gnus-summary-make-false-root): New variable that says what method + should be used when printing loose sub-threads. + (gnus-summary-prepare-threads): Let one article adopt the orphans + instead of printing dummy roots. + + Thu Dec 29 08:20:42 1994 + + * gnus.el (gnus-summary-save-article, gnus-summary-pipe-output, + gnus-summary-save-in-rmail, gnus-summary-save-in-mail, + gnus-summary-save-in-file, gnus-summary-save-in-pipe): Rewritten + to save series of articles. + (gnus-summary-set-process-mark): Bug fix. It was possible to mark + dummy roots. + (gnus-group-describe-all-groups): New command and keystroke to + list newsgroups descriptions for all newsgroups. + (gnus-group-prepare): Removed tallying of articles in killed + groups to speed things up to enough to be of any use. + (gnus-summary-local-variables): `gnus-current-kill-articles' is no + longer buffer-local to the Summary buffers. + + * nntp.el (nntp-request-article): Fix for multiple Summary buffers + using different nntp servers. + + * gnus.el (gnus-dribble-save): Would barf if Gnus were fed a + non-existant nntp server host name. + (gnus-summary-search-subject): Marking articles as read did not go + forward over ticked articles. + (gnus-post-method): New variable for specifying a method to use + for posting articles. + (gnus-request-post-buffer, gnus-request-post): Changed to use + `gnus-post-method'. + + * nntp.el (nntp-open-server-internal): The nntpd process will now + be killed without warning when Emacs shuts down. + + * gnus.el (gnus-get-unread-articles-in-group): Returned wrong + results in groups with no articles. + + * nntp.el (nntp-server-opened): This function gave totally + spurious results. + + * gnus.el (gnus-check-first-time-used, gnus-find-new-newsgroups): + Changed to really subscribe newsgroups that are mentioned by the + "options -n" line(s). The variable + `gnus-subscribe-options-newsgroup-method' holds the subscribe + method, which is `gnus-subscribe-alphabetically' by default. + + Wed Dec 28 17:36:49 1994 + + * gnus.el (gnus-get-newsgroup-headers-xover): Fixed + cross-references when using xover. + + * gnus.el (gnus-read-old-newsrc-el-file): Made it easier to switch + between .el and .eld files. + (gnus-group-mode-map): Removed bindings for `C-n' and + `C-p'. Changed `C-m' to `gnus-group-select-group'. + (gnus-summary-mode-map): Removed bindings for `C-n' and `C-p'. + + * nntp.el (nntp-request-group): Fix when selecing non-existant + groups. + + * gnus.el (gnus-group-prepare): Faster listing of killed groups. + + * nntp.el (nntp-retrieve-headers-with-xover): Try both "xover" and + "xoverview" on nntp servers. + + * gnus.el (gnus-activate-foreign-newsgroups): This variable has + changed from a toggle to a slide. Foreign newsgroups that have a + level equal or lower than this variable will be activated on + startup. + (gnus-nntp-service): This variable has been obsoleted, except for + one tiny backwards compatibility issue. + (gnus-select-method): This variable now lets you specify nntp port + number as well. + (gnus-find-new-newsgroups): A message is displayed that says how + many new newsgroups has arrived. + (gnus-summary-position-cursor, gnus-group-position-cursor): Two + new functions that are both fset to `gnus-goto-colon', but can be + set to anything the user wishes. + (gnus-init-file, gnus-read-init-file, gnus-group-read-init-file): + New variable, function, command and keystroke to read the Gnus + init file (default: "~/.gnus"). + + * nnml.el (nnml-retrieve-header-with-nov): nnml now generates nov + databases. + (nnml-choose-mail): Fix strange cutting and add Xref header. + (nnml-article-group): Mail articles can now be crossposted between + all groups that fit the regular expressions in + `nnmail-split-methods'. + (nnml-generate-nov-databases): New command to generate nov + databases for a tree. + + * nnheader.el (gnus-backends-are-talkative): New variable. + + * nnml.el (nnml-nov-is-evil): New variable. + + Wed Dec 21 01:20:53 1994 Lars Magne Ingebrigtsen + + * gnus.el (gnus-check-news-server): Buglet. + (gnus-mail-reply-using-mail): Use "none" as the subject if none + was used. + + Tue Dec 20 01:28:42 1994 Lars Ingebrigtsen + + * nnmail.el (nnmail-request-move-article, + nnmail-request-accept-article): Functions for moving articles. One + can move articles between mail groups that use different select + methods, which also makes these functions double as conversion + routines. + + * gnus.el (gnus-open-server): All the low-level backend functions + have been rewritten to make things cleaner and clearer. Most of + the function calls have also been changed throughout the program. + (gnus-set-global-variables): Set the global equivalents of the + summary-local variables whenever a new article is chosen. + + Mon Dec 19 00:51:03 1994 Lars Ingebrigtsen + + * nnml.el (nnml-request-move-article, + nnml-request-accept-article): Functions for moving articles. + + * gnus.el (gnus-summary-rescan-group): New command and keystroke + for exiting, getting new articles, and re-selecting a group. + (gnus-group-make-mail-groups): Created mail groups + without the foreign group prefix, which is a serious bug. + (gnus-dribble-file-name): Change the name of the dribble file to + ".newsrc-dribble". + (gnus-group-startup-message): Changed startup screen. (Trés + important.) + (gnus-summary-move-article): New command and keystroke for moving + articles between (mail) newsgroups. + + * nnmail.el (nnmail-split-region): + * nnml.el (nnml-choose-mail): Add a Lines header line to mails + that do not have them. + + * gnus.el: Moved most functions to make the source code a bit more + structured. Added a few autoloads to kill the last few compiler + warnings. + (gnus-group-clear-dribble): New command and keystroke to clear the + dribble buffer. + + * nntp.el (nntp-open-server-internal): Further multiple nntp + server fixes. + + Sun Dec 18 01:48:28 1994 Lars Ingebrigtsen + + * gnus-mh.el: All the mh-e functions have been moved to this new + file. + + * gnus.el (gnus-summary-prepare-threads, + gnus-summary-insert-line): If the subject changes in the middle of + the thread, print the subject. + (gnus-save-newsrc-file): Save the newsrc file(s) even when the + dribble file has been saved, and don't save them when no changes + have been made. + + * nntp.el (nntp-request-group): When using multiple nntp servers, + the backend often became a bit dizzy. + (nntp-open-server): Opening a server now correctly says whether a + connection was established. + + * gnus.el (gnus-version): Rewrite to add version numbers from all + backends in use. + (gnus-extend-newsgroup): Small fix. + (gnus-find-header-by-number): Obsolete function. + (gnus-clear-system): Kill all generated buffers when exiting. + (gnus-exit-group-hook): Kill the nntp connection(s) when exiting. + + Mon Dec 12 18:15:03 1994 Lars Ingebrigtsen + + * gnus.el: Version 0.2 released after some initial bugs were + fixed. + + Sun Dec 11 06:32:40 1994 Lars Ingebrigtsen + + * gnus.el: The very first (ding) Gnus pre-release. + diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/dgnushack.el dgnus/lisp/dgnushack.el *** pub/dgnus/lisp/dgnushack.el Mon May 15 20:17:07 1995 --- dgnus/lisp/dgnushack.el Wed May 17 17:02:39 1995 *************** *** 1,4 **** ! ;;; dgnushack --- a hack to set the load path for byte-compiling ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen --- 1,4 ---- ! ;;; dgnushack.el --- a hack to set the load path for byte-compiling ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-cache.el dgnus/lisp/gnus-cache.el *** pub/dgnus/lisp/gnus-cache.el Mon May 15 20:17:07 1995 --- dgnus/lisp/gnus-cache.el Wed May 17 17:02:39 1995 *************** *** 1,4 **** ! ;;; gnus-cache --- cache interface for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen --- 1,4 ---- ! ;;; gnus-cache.el --- cache interface for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-cite.el dgnus/lisp/gnus-cite.el *** pub/dgnus/lisp/gnus-cite.el Mon May 15 20:17:07 1995 --- dgnus/lisp/gnus-cite.el Wed May 17 17:05:56 1995 *************** *** 25,30 **** --- 25,31 ---- ;;; Code: (require 'gnus) + (require 'gnus-msg) (eval-and-compile (autoload 'gnus-article-add-button "gnus-vis") diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-ems.el dgnus/lisp/gnus-ems.el *** pub/dgnus/lisp/gnus-ems.el Mon May 15 20:17:07 1995 --- dgnus/lisp/gnus-ems.el Wed May 17 17:02:40 1995 *************** *** 1,4 **** ! ;;; gnus-ems --- functions for making Gnus work under different Emacsii ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen --- 1,4 ---- ! ;;; gnus-ems.el --- functions for making Gnus work under different Emacsen ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen *************** *** 48,59 **** (put-text-property start end (car props) (cadr props) buffer) (remove-text-properties start end ())))) - (setq ad-activate-on-definition t) - (ad-start-advice) - (ad-activate-defined-function) - (defadvice gnus-set-mouse-face (around gnus-xemacs-set-mouse-face preact) - string) - (if (not gnus-visual) () (setq gnus-group-mode-hook --- 48,53 ---- *************** *** 87,92 **** --- 81,94 ---- (defun gnus-install-mouse-tracker () (require 'mode-motion) (setq mode-motion-hook 'mode-motion-highlight-line))) + )) + + (defun gnus-ems-redefine () + (cond + ((string-match "XEmacs\\|Lucid" emacs-version) + ;; XEmacs definitions. + (fset 'gnus-set-mouse-face (lambda (string) string))) + )) (provide 'gnus-ems) diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-kill.el dgnus/lisp/gnus-kill.el *** pub/dgnus/lisp/gnus-kill.el Mon May 15 20:17:07 1995 --- dgnus/lisp/gnus-kill.el Wed May 17 17:02:40 1995 *************** *** 1,4 **** ! ;;; gnus-kill --- kill commands for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA --- 1,4 ---- ! ;;; gnus-kill.el --- kill commands for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-mh.el dgnus/lisp/gnus-mh.el *** pub/dgnus/lisp/gnus-mh.el Mon May 15 20:17:07 1995 --- dgnus/lisp/gnus-mh.el Wed May 17 17:02:40 1995 *************** *** 1,4 **** ! ;;; gnus-mh: mh-e interface for Gnus ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA --- 1,4 ---- ! ;;; gnus-mh.el --- mh-e interface for Gnus ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA *************** *** 35,40 **** --- 35,41 ---- (require 'mh-e) (require 'mh-comp) (require 'gnus) + (require 'gnus-msg) (defun gnus-summary-save-in-folder (&optional folder) "Save this article to MH folder (using `rcvstore' in MH library). diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-msg.el dgnus/lisp/gnus-msg.el *** pub/dgnus/lisp/gnus-msg.el Mon May 15 20:17:07 1995 --- dgnus/lisp/gnus-msg.el Wed May 17 19:11:10 1995 *************** *** 1,4 **** ! ;;; gnus-msg --- mail and post interface for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA --- 1,4 ---- ! ;;; gnus-msg.el --- mail and post interface for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA *************** *** 28,73 **** (require 'gnus) (require 'sendmail) - - ;;; - ;;; Gnus Posting Functions - ;;; - (defvar gnus-organization-file "/usr/lib/news/organization" "*Local news organization file.") ! (defvar gnus-post-news-buffer "*post-news*") (defvar gnus-summary-send-map nil) ! (define-prefix-command 'gnus-summary-send-map) ! (define-key gnus-summary-mode-map "S" 'gnus-summary-send-map) ! (define-key gnus-summary-send-map "p" 'gnus-summary-post-news) ! (define-key gnus-summary-send-map "f" 'gnus-summary-followup) ! (define-key gnus-summary-send-map "F" 'gnus-summary-followup-with-original) ! (define-key gnus-summary-send-map "b" 'gnus-summary-followup-and-reply) ! (define-key gnus-summary-send-map "B" 'gnus-summary-followup-and-reply-with-original) ! (define-key gnus-summary-send-map "c" 'gnus-summary-cancel-article) ! (define-key gnus-summary-send-map "s" 'gnus-summary-supersede-article) ! (define-key gnus-summary-send-map "r" 'gnus-summary-reply) ! (define-key gnus-summary-send-map "R" 'gnus-summary-reply-with-original) ! (define-key gnus-summary-send-map "m" 'gnus-summary-mail-other-window) ! (define-key gnus-summary-send-map "u" 'gnus-uu-post-news) ! (define-key gnus-summary-send-map "om" 'gnus-summary-mail-forward) ! (define-key gnus-summary-send-map "op" 'gnus-summary-post-forward) ! (define-key gnus-summary-send-map "Om" 'gnus-uu-digest-mail-forward) ! (define-key gnus-summary-send-map "Op" 'gnus-uu-digest-post-forward) ! ;;; Internal functions. ! ;; Return NUM konverted to a key of exactly LEN chars. Requires NUM>=0. ! ;; If LEN=-1, return 0 or more chars as necessary. ! (defun gnus-number-base31 (num len) ! (if (if (< len 0) (<= num 0) (= len 0)) ! "" ! (concat (gnus-number-base31 (/ num 31) (1- len)) ! (char-to-string (aref "zyxwvutsrqponmlkjihgfedcba9876543210" ! (% num 31)))))) (defun gnus-number-base36 (num len) (if (if (< len 0) (<= num 0) (= len 0)) --- 28,235 ---- (require 'gnus) (require 'sendmail) (defvar gnus-organization-file "/usr/lib/news/organization" "*Local news organization file.") ! (defvar gnus-post-prepare-function nil ! "*Function that is run after a post buffer has been prepared. ! It is called with the name of the newsgroup that is posted to. It ! might be used, for instance, for inserting signatures based on the ! newsgroup name. (In that case, `gnus-signature-file' and ! `mail-signature' should both be set to nil).") ! ! (defvar gnus-use-followup-to 'use ! "*Specifies what to do with Followup-To header. ! If nil, ignore the header. If it is t, use its value, but ignore ! `poster'. If it is neither nil nor t, which is the default, always use ! the value.") ! ! (defvar gnus-followup-to-function nil ! "*A variable that contains a function that returns a followup address. ! The function will be called in the buffer of the article that is being ! followed up. The buffer will be narrowed to the headers of the ! article. To pick header headers, one might use `mail-fetch-field'. The ! function will be called with the name of the current newsgroup as the ! argument. ! ! Here's an example `gnus-followup-to-function': ! ! (setq gnus-followup-to-function ! (lambda (group) ! (cond ((string= group \"mail.list\") ! (or (mail-fetch-field \"sender\") ! (mail-fetch-field \"from\"))) ! (t ! (or (mail-fetch-field \"reply-to\") ! (mail-fetch-field \"from\"))))))") ! ! (defvar gnus-reply-to-function nil ! "*A variable that contains a function that returns a reply address. ! See the `gnus-followup-to-function' variable for an explanation of how ! this variable is used. ! ! This function should return a string that will be used to fill in the ! header. This function may also return a list. In that case, every ! list element should be a cons where the first car should be a string ! with the header name, and the cdr should be a string with the header ! value.") ! ! (defvar gnus-author-copy (getenv "AUTHORCOPY") ! "*Save outgoing articles in this file. ! Initialized from the AUTHORCOPY environment variable. ! ! If this variable begins with the character \"|\", outgoing articles ! will be piped to the named program. It is possible to save an article ! in an MH folder as follows: ! ! \(setq gnus-author-copy \"|/usr/local/lib/mh/rcvstore +Article\") ! ! If the first character is not a pipe, articles are saved using the ! function specified by the `gnus-author-copy-saver' variable.") ! ! (defvar gnus-mail-self-blind nil ! "*Non-nil means insert a BCC header in all outgoing articles. ! This will result in having a copy of the article mailed to yourself. ! The BCC header is inserted when the post buffer is initialized, so you ! can remove or alter the BCC header to override the default.") ! ! (defvar gnus-author-copy-saver (function rmail-output) ! "*A function called to save outgoing articles. ! This function will be called with the same of the file to store the ! article in. The default function is `rmail-output' which saves in Unix ! mailbox format.") ! ! (defvar gnus-user-login-name nil ! "*The login name of the user. ! Got from the function `user-login-name' if undefined.") ! ! (defvar gnus-user-full-name nil ! "*The full name of the user. ! Got from the NAME environment variable if undefined.") ! ! (defvar gnus-user-from-line nil ! "*Your full, complete e-mail address. ! Overrides the other Gnus variables if it is non-nil. ! ! Here are two example values of this variable: ! ! \"Lars Magne Ingebrigtsen \" ! ! and ! ! \"larsi@ifi.uio.no (Lars Magne Ingebrigtsen)\" ! ! The first version is recommended, but the name has to be quoted if it ! contains non-alphanumerical characters.") ! ! (defvar gnus-signature-file "~/.signature" ! "*Your signature file. ! If the variable is a string that doesn't correspond to a file, the ! string itself is inserted.") ! ! (defvar gnus-signature-function nil ! "*A function that should return a signature file name. ! The function will be called with the name of the newsgroup being ! posted to. ! If the function returns a string that doesn't correspond to a file, the ! string itself is inserted. ! If the function returns nil, the `gnus-signature-file' variable will ! be used instead.") ! ! (defvar gnus-signature-separator "^-- *$" ! "Regexp matching signature separator.") ! ! (defvar gnus-required-headers ! '(From Date Newsgroups Subject Message-ID Organization Lines X-Newsreader) ! "*Headers to be generated or prompted for when posting an article. ! RFC977 and RFC1036 require From, Date, Newsgroups, Subject, ! Message-ID. Organization, Lines and X-Newsreader are optional. If ! you want Gnus not to insert some header, remove it from this list.") ! ! (defvar gnus-check-before-posting ! '(subject-cmsg multiple-headers sendsys message-id from ! long-lines control-chars size new-text ! signature) ! "In non-nil, Gnus will attempt to run some checks on outgoing posts. ! If this variable is t, Gnus will check everything it can. If it is a ! list, then those elements in that list will be checked.") ! ! (defvar gnus-auto-mail-to-author nil ! "*If non-nil, mail the authors of articles a copy of your follow-ups. ! If this variable is `ask', the user will be prompted for whether to ! mail a copy. The string given by `gnus-mail-courtesy-message' will be ! inserted at the beginning of the mail copy. ! ! Mail is sent using the function specified by the ! `gnus-mail-send-method' variable.") ! ! ;; Added by Ethan Bradford . ! (defvar gnus-mail-courtesy-message ! "The following message is a courtesy copy of an article\nthat has been posted as well.\n\n" ! "*This is inserted at the start of a mailed copy of a posted message. ! If this variable is nil, no such courtesy message will be added.") ! ! (defvar gnus-mail-reply-method (function gnus-mail-reply-using-mail) ! "*Function to compose a reply. ! Three pre-made functions are `gnus-mail-reply-using-mail' (sendmail); ! `gnus-mail-reply-using-mhe' (MH-E); and `gnus-mail-reply-using-vm'.") ! ! (defvar gnus-mail-forward-method (function gnus-mail-forward-using-mail) ! "*Function to forward the current message to another user. ! Three pre-made functions are `gnus-mail-forward-using-mail' (sendmail); ! `gnus-mail-forward-using-mhe' (MH-E); and `gnus-mail-forward-using-vm'.") ! ! (defvar gnus-mail-other-window-method 'gnus-mail-other-window-using-mail ! "*Function to compose mail in the other window. ! Three pre-made functions are `gnus-mail-other-window-using-mail' ! (sendmail); `gnus-mail-other-window-using-mhe' (MH-E); and ! `gnus-mail-other-window-using-vm'.") ! ! (defvar gnus-mail-send-method send-mail-function ! "*Function to mail a message which is also being posted as an article. ! The message must have To or Cc header. The default is copied from ! the variable `send-mail-function'.") ! ! (defvar gnus-inews-article-hook (list 'gnus-inews-do-fcc) ! "*A hook called before finally posting an article. ! The default hook (`gnus-inews-do-fcc') does FCC processing (ie. saves ! the article to a file).") ! ! (defvar gnus-inews-article-header-hook nil ! "*A hook called after inserting the headers in an article to be posted. ! The hook is called from the *post-news* buffer, narrowed to the ! headers.") ! ! ;;; Internal variables. + (defvar gnus-post-news-buffer "*post-news*") (defvar gnus-summary-send-map nil) + (defvar gnus-article-copy nil) ! ! ;;; ! ;;; Gnus Posting Functions ! ;;; ! (define-prefix-command 'gnus-summary-send-map) ! (define-key gnus-summary-mode-map "S" 'gnus-summary-send-map) ! (define-key gnus-summary-send-map "p" 'gnus-summary-post-news) ! (define-key gnus-summary-send-map "f" 'gnus-summary-followup) ! (define-key gnus-summary-send-map "F" 'gnus-summary-followup-with-original) ! (define-key gnus-summary-send-map "b" 'gnus-summary-followup-and-reply) ! (define-key gnus-summary-send-map "B" 'gnus-summary-followup-and-reply-with-original) ! (define-key gnus-summary-send-map "c" 'gnus-summary-cancel-article) ! (define-key gnus-summary-send-map "s" 'gnus-summary-supersede-article) ! (define-key gnus-summary-send-map "r" 'gnus-summary-reply) ! (define-key gnus-summary-send-map "R" 'gnus-summary-reply-with-original) ! (define-key gnus-summary-send-map "m" 'gnus-summary-mail-other-window) ! (define-key gnus-summary-send-map "u" 'gnus-uu-post-news) ! (define-key gnus-summary-send-map "om" 'gnus-summary-mail-forward) ! (define-key gnus-summary-send-map "op" 'gnus-summary-post-forward) ! (define-key gnus-summary-send-map "Om" 'gnus-uu-digest-mail-forward) ! (define-key gnus-summary-send-map "Op" 'gnus-uu-digest-post-forward) ! ;;; Internal functions. (defun gnus-number-base36 (num len) (if (if (< len 0) (<= num 0) (= len 0)) *************** *** 184,193 **** --- 346,369 ---- ;;;###autoload (fset 'postnews 'gnus-post-news) + (defun gnus-copy-article-buffer (&optional article-buffer) + ;; make a copy of the article buffer with all text properties removed + ;; this copy is in the buffer gnus-article-copy. + ;; if ARTICLE-BUFFER is nil, gnus-article-buffer is used + ;; this buffer should be passed to all mail/news reply/post routines. + (setq gnus-article-copy (get-buffer-create " *gnus article copy*")) + (or (memq gnus-article-copy gnus-buffer-list) + (setq gnus-buffer-list (cons gnus-article-copy gnus-buffer-list))) + (save-excursion + (set-buffer (or article-buffer gnus-article-buffer)) + (copy-to-buffer gnus-article-copy (point-min) (point-max)) + (set-text-properties (point-min) (point-max) nil gnus-article-copy))) + (defun gnus-post-news (post &optional group header article-buffer yank subject) "Begin editing a new USENET news article to be posted. Type \\[describe-mode] in the buffer to get a list of commands." (interactive (list t)) + (gnus-copy-article-buffer article-buffer) (if (or (not gnus-novice-user) gnus-expert-user (not (eq 'post *************** *** 214,226 **** (completing-read "Group: " gnus-active-hashtb)) (or subject (setq subject (read-string "Subject: "))))) ! (setq mail-reply-buffer article-buffer) (let ((gnus-newsgroup-name (or group gnus-newsgroup-name ""))) (setq real-group (and group (gnus-group-real-name group))) (setq gnus-post-news-buffer (gnus-request-post-buffer ! post real-group subject header article-buffer (nth 2 (and group (gnus-gethash group gnus-newsrc-hashtb))) (or (cdr (assq 'to-group (nth 5 (nth 2 (gnus-gethash --- 390,402 ---- (completing-read "Group: " gnus-active-hashtb)) (or subject (setq subject (read-string "Subject: "))))) ! (setq mail-reply-buffer gnus-article-copy) (let ((gnus-newsgroup-name (or group gnus-newsgroup-name ""))) (setq real-group (and group (gnus-group-real-name group))) (setq gnus-post-news-buffer (gnus-request-post-buffer ! post real-group subject header gnus-article-copy (nth 2 (and group (gnus-gethash group gnus-newsrc-hashtb))) (or (cdr (assq 'to-group (nth 5 (nth 2 (gnus-gethash *************** *** 228,237 **** gnus-newsrc-hashtb))))) (if (and (boundp 'gnus-followup-to-function) gnus-followup-to-function ! article-buffer) (setq follow-to (save-excursion ! (set-buffer article-buffer) (funcall gnus-followup-to-function group))))) gnus-use-followup-to)) (if post --- 404,413 ---- gnus-newsrc-hashtb))))) (if (and (boundp 'gnus-followup-to-function) gnus-followup-to-function ! gnus-article-copy) (setq follow-to (save-excursion ! (set-buffer gnus-article-copy) (funcall gnus-followup-to-function group))))) gnus-use-followup-to)) (if post *************** *** 293,299 **** (save-window-excursion (gnus-summary-select-article nil nil nil (car yank)) (gnus-summary-remove-process-mark (car yank))) ! (let ((mail-reply-buffer gnus-article-buffer)) (news-reply-yank-original nil)) (setq yank (cdr yank)))))) (if gnus-post-prepare-function --- 469,475 ---- (save-window-excursion (gnus-summary-select-article nil nil nil (car yank)) (gnus-summary-remove-process-mark (car yank))) ! (let ((mail-reply-buffer gnus-article-copy)) (news-reply-yank-original nil)) (setq yank (cdr yank)))))) (if gnus-post-prepare-function *************** *** 383,425 **** (replace-regexp "[ \t\n]*,[ \t\n]*\\|[ \t]+" ","))) ;; Mail the message too if To:, Bcc:. or Cc: exists. ! (if (or (mail-fetch-field "to" nil t) ! (mail-fetch-field "bcc" nil t) ! (mail-fetch-field "cc" nil t)) ! (if gnus-mail-send-method ! (save-excursion ! (save-restriction ! (widen) ! (gnus-message 5 "Sending via mail...") ! (if gnus-mail-courtesy-message ! (progn ! ;; Insert "courtesy" mail message. ! (goto-char (point-min)) ! (re-search-forward ! (concat "^" (regexp-quote ! mail-header-separator) "$")) ! (forward-line 1) ! (insert gnus-mail-courtesy-message) ! (funcall gnus-mail-send-method) ! (goto-char (point-min)) ! (search-forward gnus-mail-courtesy-message) ! (replace-match "" t t)) ! (funcall gnus-mail-send-method)) ! (gnus-message 5 "Sending via mail... done") ! (goto-char (point-min)) ! (narrow-to-region ! 1 (re-search-forward ! (concat "^" (regexp-quote ! mail-header-separator) "$"))) ! (goto-char (point-min)) ! (delete-matching-lines "BCC:.*"))) ! (ding) ! (gnus-message ! 1 "No mailer defined. To: and/or Cc: fields ignored.") ! (sit-for 1)))) ;; Send to NNTP server. (gnus-message 5 "Posting to USENET...") --- 559,615 ---- (replace-regexp "[ \t\n]*,[ \t\n]*\\|[ \t]+" ","))) ;; Mail the message too if To:, Bcc:. or Cc: exists. ! (let* ((types '("to" "bcc" "cc")) ! (ty types)) ! (while ty ! (or (mail-fetch-field (car ty) nil t) ! (setq types (delete (car ty) types))) ! (setq ty (cdr ty))) ! ! (if (not types) ! ;; We do not want to send mail. ! () ! (if (not gnus-mail-send-method) ! (progn ! (ding) ! (gnus-message ! 1 "No mailer defined. To: and/or Cc: fields ignored.") ! (sit-for 1)) ! (save-excursion ! (save-restriction ! (widen) ! (gnus-message 5 "Sending via mail...") ! (if (and gnus-mail-courtesy-message ! (or (member "to" types) ! (member "cc" types))) ! ;; We only want to insert the courtesy mail ! ;; message if we use to or cc; bcc should not ! ;; have one. Well, if both bcc and to are ! ;; present, it will get one anyway. ! (progn ! ;; Insert "courtesy" mail message. ! (goto-char (point-min)) ! (re-search-forward ! (concat "^" (regexp-quote ! mail-header-separator) "$")) ! (forward-line 1) ! (insert gnus-mail-courtesy-message) ! (funcall gnus-mail-send-method) ! (goto-char (point-min)) ! (search-forward gnus-mail-courtesy-message) ! (replace-match "" t t)) ! (funcall gnus-mail-send-method)) ! (gnus-message 5 "Sending via mail... done") ! (goto-char (point-min)) ! (narrow-to-region ! (point) ! (re-search-forward ! (concat "^" (regexp-quote mail-header-separator) "$"))) ! (goto-char (point-min)) ! (delete-matching-lines "^BCC:"))))))) ;; Send to NNTP server. (gnus-message 5 "Posting to USENET...") *************** *** 459,546 **** (goto-char (point-min)) (and ;; Check for commands in Subject. ! (save-excursion ! (if (string-match "^cmsg " (mail-fetch-field "subject")) ! (gnus-y-or-n-p ! "The control code \"cmsg \" is in the subject. Really post? ") ! t)) ;; Check for multiple identical headers. ! (save-excursion ! (let (found) ! (while (and (not found) (re-search-forward "^[^ \t:]+: " nil t)) ! (save-excursion ! (or (re-search-forward ! (concat "^" (setq found ! (buffer-substring ! (match-beginning 0) ! (- (match-end 0) 2)))) ! nil t) ! (setq found nil)))) ! (if found ! (gnus-y-or-n-p ! (format "Multiple %s headers. Really post? " found)) ! t))) ;; Check for version and sendsys. ! (save-excursion ! (if (re-search-forward "^Sendsys:\\|^Version:" nil t) ! (gnus-yes-or-no-p ! (format "The article contains a %s command. Really post? " ! (buffer-substring (match-beginning 0) ! (1- (match-end 0))))) ! t)) ;; Check the Message-Id header. ! (save-excursion ! (let* ((case-fold-search t) ! (message-id (mail-fetch-field "message-id"))) ! (or (not message-id) ! (and (string-match "@" message-id) ! (string-match "@[^\\.]*\\." message-id)) ! (gnus-yes-or-no-p ! (format "The Message-ID looks strange: \"%s\". Really post? " ! message-id))))) ;; Check the From header. ! (save-excursion ! (let* ((case-fold-search t) ! (from (mail-fetch-field "from"))) ! (or (not from) ! (and (string-match "@" from) ! (string-match "@[^\\.]*\\." from)) ! (gnus-yes-or-no-p ! (format "The From looks strange: \"%s\". Really post? " ! from)))))))) ;; Check for long lines. ! (save-excursion ! (goto-char (point-min)) ! (re-search-forward ! (concat "^" (regexp-quote mail-header-separator) "$")) ! (while (and ! (progn ! (end-of-line) ! (< (current-column) 80)) ! (zerop (forward-line 1)))) ! (or (bolp) ! (eobp) ! (gnus-yes-or-no-p ! (format ! "You have lines longer than 79 characters. Really post? ")))) ;; Check for control characters. ! (save-excursion ! (if (re-search-forward "[\000-\007\013\015-\037\200-\237]" nil t) ! (gnus-y-or-n-p ! "The article contains control characters. Really post? ") ! t)) ;; Check excessive size. ! (if (> (buffer-size) 60000) ! (gnus-y-or-n-p (format "The article is %d octets long. Really post? " ! (buffer-size))) ! t) ;; Use the (size . checksum) variable to see whether the ;; article is empty or has only quoted text. ! (if (and (= (buffer-size) (car gnus-article-check-size)) ! (= (gnus-article-checksum) (cdr gnus-article-check-size))) ! (gnus-yes-or-no-p ! "It looks like there's no new text in your article. Really post? ") ! t)))) (defun gnus-article-checksum () (let ((sum 0)) --- 649,758 ---- (goto-char (point-min)) (and ;; Check for commands in Subject. ! (or (gnus-check-before-posting 'subject-cmsg) ! (save-excursion ! (if (string-match "^cmsg " (mail-fetch-field "subject")) ! (gnus-y-or-n-p ! "The control code \"cmsg \" is in the subject. Really post? ") ! t))) ;; Check for multiple identical headers. ! (or (gnus-check-before-posting 'multiple-headers) ! (save-excursion ! (let (found) ! (while (and (not found) (re-search-forward "^[^ \t:]+: " nil t)) ! (save-excursion ! (or (re-search-forward ! (concat "^" (setq found ! (buffer-substring ! (match-beginning 0) ! (- (match-end 0) 2)))) ! nil t) ! (setq found nil)))) ! (if found ! (gnus-y-or-n-p ! (format "Multiple %s headers. Really post? " found)) ! t)))) ;; Check for version and sendsys. ! (or (gnus-check-before-posting 'sendsys) ! (save-excursion ! (if (re-search-forward "^Sendsys:\\|^Version:" nil t) ! (gnus-yes-or-no-p ! (format "The article contains a %s command. Really post? " ! (buffer-substring (match-beginning 0) ! (1- (match-end 0))))) ! t))) ;; Check the Message-Id header. ! (or (gnus-check-before-posting 'message-id) ! (save-excursion ! (let* ((case-fold-search t) ! (message-id (mail-fetch-field "message-id"))) ! (or (not message-id) ! (and (string-match "@" message-id) ! (string-match "@[^\\.]*\\." message-id)) ! (gnus-yes-or-no-p ! (format ! "The Message-ID looks strange: \"%s\". Really post? " ! message-id)))))) ;; Check the From header. ! (or (gnus-check-before-posting 'from) ! (save-excursion ! (let* ((case-fold-search t) ! (from (mail-fetch-field "from"))) ! (or (not from) ! (and (string-match "@" from) ! (string-match "@[^\\.]*\\." from)) ! (gnus-yes-or-no-p ! (format "The From looks strange: \"%s\". Really post? " ! from))))))))) ;; Check for long lines. ! (or (gnus-check-before-posting 'long-lines) ! (save-excursion ! (goto-char (point-min)) ! (re-search-forward ! (concat "^" (regexp-quote mail-header-separator) "$")) ! (while (and ! (progn ! (end-of-line) ! (< (current-column) 80)) ! (zerop (forward-line 1)))) ! (or (bolp) ! (eobp) ! (gnus-yes-or-no-p ! (format ! "You have lines longer than 79 characters. Really post? "))))) ;; Check for control characters. ! (or (gnus-check-before-posting 'control-chars) ! (save-excursion ! (if (re-search-forward "[\000-\007\013\015-\037\200-\237]" nil t) ! (gnus-y-or-n-p ! "The article contains control characters. Really post? ") ! t))) ;; Check excessive size. ! (or (gnus-check-before-posting 'size) ! (if (> (buffer-size) 60000) ! (gnus-y-or-n-p ! (format "The article is %d octets long. Really post? " ! (buffer-size))) ! t)) ;; Use the (size . checksum) variable to see whether the ;; article is empty or has only quoted text. ! (or (gnus-check-before-posting 'new-text) ! (if (and (= (buffer-size) (car gnus-article-check-size)) ! (= (gnus-article-checksum) (cdr gnus-article-check-size))) ! (gnus-yes-or-no-p ! "It looks like there's no new text in your article. Really post? ") ! t)) ! ;; Check the length of the signature. ! (or (gnus-check-before-posting 'signature) ! (progn ! (goto-char (point-max)) ! (if (not (re-search-backward gnus-signature-separator nil t)) ! t ! (if (> (count-lines (point) (point-max)) 4) ! (gnus-y-or-n-p ! (format ! "Your .sig is %d lines; it should be max 4. Really post? ")) ! t))))))) (defun gnus-article-checksum () (let ((sum 0)) *************** *** 550,555 **** --- 762,774 ---- (forward-char 1))) sum)) + ;; Returns non-nil if this type is not to be checked. + (defun gnus-check-before-posting (type) + (or (not gnus-check-before-posting) + (if (listp gnus-check-before-posting) + (memq type gnus-check-before-posting) + t))) + (defun gnus-cancel-news () "Cancel an article you posted." (interactive) *************** *** 794,817 **** (if (and mail-signature (search-backward "\n-- \n" nil t)) (delete-region (1+ (point)) (point-max))) (insert "\n-- \n") ! (and (< 4 (setq b (count-lines ! (point) ! (progn ! (if (file-exists-p signature) ! (insert-file-contents signature) ! (insert signature)) ! (goto-char (point-max)) ! (or (bolp) (insert "\n")) ! (point))))) ! (not gnus-expert-user) ! (not ! (gnus-y-or-n-p ! (format ! "Your .sig is %d lines; it should be max 4. Really post? " ! b))) ! (if (file-exists-p signature) ! (error (format "Edit %s." signature)) ! (error "Trim your signature.")))))))) (defun gnus-inews-do-fcc () "Process FCC: fields in current article buffer. --- 1013,1023 ---- (if (and mail-signature (search-backward "\n-- \n" nil t)) (delete-region (1+ (point)) (point-max))) (insert "\n-- \n") ! (if (file-exists-p signature) ! (insert-file-contents signature) ! (insert signature)) ! (goto-char (point-max)) ! (or (bolp) (insert "\n"))))))) (defun gnus-inews-do-fcc () "Process FCC: fields in current article buffer. *************** *** 944,957 **** ;; a number. I don't know the reason why it is so. (concat "<" (gnus-inews-unique-id) "@" (gnus-inews-full-address) ">")) - (defun gnus-inews-unique-id-old () - "Generate unique ID from user name and current time." - (concat (downcase (gnus-inews-login-name)) - (mapconcat - (lambda (num) (gnus-number-base31 num 4)) - (current-time) ""))) - - (defvar gnus-unique-id-char nil) ;; If you ever change this function, make sure the new version --- 1150,1155 ---- *************** *** 1064,1073 **** Customize the variable gnus-mail-forward-method to use another mailer." (interactive "P") (gnus-summary-select-article t) (let ((gnus-newsgroup-name gnus-newsgroup-name)) (if post ! (gnus-forward-using-post gnus-article-buffer) ! (funcall gnus-mail-forward-method gnus-article-buffer))) (gnus-article-hide-headers-if-wanted)) (defun gnus-summary-post-forward () --- 1262,1272 ---- Customize the variable gnus-mail-forward-method to use another mailer." (interactive "P") (gnus-summary-select-article t) + (gnus-copy-article-buffer) (let ((gnus-newsgroup-name gnus-newsgroup-name)) (if post ! (gnus-forward-using-post gnus-article-copy) ! (funcall gnus-mail-forward-method gnus-article-copy))) (gnus-article-hide-headers-if-wanted)) (defun gnus-summary-post-forward () *************** *** 1107,1118 **** () (erase-buffer) (save-excursion ! (set-buffer gnus-article-buffer) ! (let ((buffer-read-only nil)) ! (goto-char (point-min)) ! (narrow-to-region (point-min) ! (progn (search-forward "\n\n") (point))) ! (add-text-properties (point-min) (point-max) '(invisible nil))) (if (and (boundp 'gnus-reply-to-function) gnus-reply-to-function) (save-excursion --- 1306,1313 ---- () (erase-buffer) (save-excursion ! (gnus-copy-article-buffer) ! (set-buffer gnus-article-copy) (if (and (boundp 'gnus-reply-to-function) gnus-reply-to-function) (save-excursion *************** *** 1136,1143 **** (setq cc (mail-fetch-field "cc")) (setq reply-to (mail-fetch-field "reply-to")) (setq references (mail-fetch-field "references")) ! (setq message-id (mail-fetch-field "message-id")) ! (widen)) (setq news-reply-yank-from from) (setq news-reply-yank-message-id message-id) --- 1331,1337 ---- (setq cc (mail-fetch-field "cc")) (setq reply-to (mail-fetch-field "reply-to")) (setq references (mail-fetch-field "references")) ! (setq message-id (mail-fetch-field "message-id"))) (setq news-reply-yank-from from) (setq news-reply-yank-message-id message-id) *************** *** 1151,1157 **** (mail-setup (or to-address (if (and follow-to (not (stringp follow-to))) sendto (or follow-to reply-to from sender ""))) ! subject message-of nil gnus-article-buffer nil) (if (and follow-to (listp follow-to)) (progn --- 1345,1351 ---- (mail-setup (or to-address (if (and follow-to (not (stringp follow-to))) sendto (or follow-to reply-to from sender ""))) ! subject message-of nil gnus-article-copy nil) (if (and follow-to (listp follow-to)) (progn *************** *** 1191,1196 **** --- 1385,1391 ---- (gnus-summary-select-article nil nil nil (car yank)) (gnus-summary-remove-process-mark (car yank))) (save-excursion + (gnus-copy-article-buffer) (mail-yank-original nil) (setq end (point))) (run-hooks 'news-reply-header-hook) *************** *** 1234,1240 **** (defun gnus-forward-insert-buffer (buffer) (let ((beg (goto-char (point-max)))) (insert "------- Start of forwarded message -------\n") ! (insert-buffer buffer) (goto-char (point-max)) (insert "------- End of forwarded message -------\n") ;; Suggested by Sudish Joseph . --- 1429,1436 ---- (defun gnus-forward-insert-buffer (buffer) (let ((beg (goto-char (point-max)))) (insert "------- Start of forwarded message -------\n") ! (gnus-copy-article-buffer buffer) ! (insert-buffer gnus-article-copy) (goto-char (point-max)) (insert "------- End of forwarded message -------\n") ;; Suggested by Sudish Joseph . *************** *** 1281,1286 **** --- 1477,1500 ---- (local-set-key "\C-c\C-c" 'gnus-mail-send-and-exit) (make-local-variable 'gnus-prev-winconf) (setq gnus-prev-winconf winconf))) + + (defun gnus-article-mail (yank) + "Send a reply to the address near point. + If YANK is non-nil, include the original article." + (interactive "P") + (let ((address + (buffer-substring + (save-excursion (re-search-backward "[ \t\n]" nil t) (1+ (point))) + (save-excursion (re-search-forward "[ \t\n]" nil t) (1- (point)))))) + (and address + (progn + (switch-to-buffer gnus-summary-buffer) + (funcall gnus-mail-reply-method yank address))))) + + (defun gnus-article-mail-with-original () + "Send a reply to the address near point and include the original article." + (interactive) + (gnus-article-mail 'yank)) (provide 'gnus-msg) diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-score.el dgnus/lisp/gnus-score.el *** pub/dgnus/lisp/gnus-score.el Mon May 15 20:17:08 1995 --- dgnus/lisp/gnus-score.el Wed May 17 17:05:56 1995 *************** *** 1,4 **** ! ;;; gnus-score --- scoring code for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Per Abrahamsen --- 1,4 ---- ! ;;; gnus-score.el --- scoring code for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Per Abrahamsen *************** *** 66,71 **** --- 66,81 ---- (gnus-catchup-mark (from -1) (subject -1))) "*Alist of marks and scores.") + (defvar gnus-score-exact-adapt-limit nil + "*Number that says how long a match has to be before using substring matching. + When doing adaptive scoring, one normally uses substring matching. + However, if the header one matches is short, the possibility for false + positives is great, so if the length of the match is less than this + variable, exact matching will be used. + + If this variable is nil, which it is by default, exact matching will + always be used.") + ;; Internal variables. *************** *** 102,294 **** ;;; Summary mode score maps. (defvar gnus-summary-score-map nil) ! (defvar gnus-summary-increase-map nil) ! (defvar gnus-summary-inc-subject-map nil) ! (defvar gnus-summary-inc-fuzzy-map nil) ! (defvar gnus-summary-inc-author-map nil) ! (defvar gnus-summary-inc-body-map nil) ! (defvar gnus-summary-inc-id-map nil) ! (defvar gnus-summary-inc-xref-map nil) ! (defvar gnus-summary-inc-thread-map nil) ! (defvar gnus-summary-inc-fol-map nil) ! (defvar gnus-summary-lower-map nil) ! (defvar gnus-summary-low-subject-map nil) ! (defvar gnus-summary-low-fuzzy-map nil) ! (defvar gnus-summary-low-author-map nil) ! (defvar gnus-summary-low-body-map nil) ! (defvar gnus-summary-low-id-map nil) ! (defvar gnus-summary-low-xref-map nil) ! (defvar gnus-summary-low-thread-map nil) ! (defvar gnus-summary-low-fol-map nil) ! ! (define-prefix-command 'gnus-summary-score-map) ! (define-key gnus-summary-various-map "S" 'gnus-summary-score-map) ! (define-key gnus-summary-score-map "s" 'gnus-summary-set-score) ! (define-key gnus-summary-score-map "c" 'gnus-score-change-score-file) ! (define-key gnus-summary-score-map "m" 'gnus-score-set-mark-below) ! (define-key gnus-summary-score-map "x" 'gnus-score-set-expunge-below) ! (define-key gnus-summary-score-map "e" 'gnus-score-edit-alist) ! (define-key gnus-summary-score-map "f" 'gnus-score-edit-file) ! ! ! (define-prefix-command 'gnus-summary-increase-map) ! (define-key gnus-summary-mode-map "I" gnus-summary-increase-map) ! ! (define-key gnus-summary-increase-map "i" 'gnus-summary-raise-same-subject-and-select) ! (define-key gnus-summary-increase-map "I" 'gnus-summary-raise-same-subject) ! (define-key gnus-summary-increase-map "\C-i" 'gnus-summary-raise-score) ! ! (define-prefix-command 'gnus-summary-inc-subject-map) ! (define-key gnus-summary-increase-map "s" gnus-summary-inc-subject-map) ! (define-key gnus-summary-increase-map "S" 'gnus-summary-temporarily-raise-by-subject) ! (define-key gnus-summary-inc-subject-map "s" 'gnus-summary-temporarily-raise-by-subject) ! (define-key gnus-summary-inc-subject-map "S" 'gnus-summary-raise-by-subject) ! (define-key gnus-summary-inc-subject-map "i" 'gnus-summary-immediately-raise-by-subject) ! (define-key gnus-summary-inc-subject-map "t" 'gnus-summary-temporarily-raise-by-subject) ! (define-key gnus-summary-inc-subject-map "p" 'gnus-summary-raise-by-subject) ! ! (define-prefix-command 'gnus-summary-inc-fuzzy-map) ! (define-key gnus-summary-increase-map "z" gnus-summary-inc-fuzzy-map) ! (define-key gnus-summary-increase-map "Z" 'gnus-summary-temporarily-raise-by-fuzzy) ! (define-key gnus-summary-inc-fuzzy-map "z" 'gnus-summary-temporarily-raise-by-fuzzy) ! (define-key gnus-summary-inc-fuzzy-map "Z" 'gnus-summary-raise-by-fuzzy) ! (define-key gnus-summary-inc-fuzzy-map "i" 'gnus-summary-immediately-raise-by-fuzzy) ! (define-key gnus-summary-inc-fuzzy-map "t" 'gnus-summary-temporarily-raise-by-fuzzy) ! (define-key gnus-summary-inc-fuzzy-map "p" 'gnus-summary-raise-by-fuzzy) ! ! (define-prefix-command 'gnus-summary-inc-author-map) ! (define-key gnus-summary-increase-map "a" 'gnus-summary-inc-author-map) ! (define-key gnus-summary-increase-map "A" 'gnus-summary-temporarily-raise-by-author) ! (define-key gnus-summary-inc-author-map "a" 'gnus-summary-temporarily-raise-by-author) ! (define-key gnus-summary-inc-author-map "A" 'gnus-summary-raise-by-author) ! (define-key gnus-summary-inc-author-map "i" 'gnus-summary-immediately-raise-by-author) ! (define-key gnus-summary-inc-author-map "t" 'gnus-summary-temporarily-raise-by-author) ! (define-key gnus-summary-inc-author-map "p" 'gnus-summary-raise-by-author) ! ! (define-prefix-command 'gnus-summary-inc-body-map) ! (define-key gnus-summary-increase-map "b" 'gnus-summary-inc-body-map) ! (define-key gnus-summary-increase-map "B" 'gnus-summary-temporarily-raise-by-body) ! (define-key gnus-summary-inc-body-map "b" 'gnus-summary-temporarily-raise-by-body) ! (define-key gnus-summary-inc-body-map "B" 'gnus-summary-raise-by-body) ! (define-key gnus-summary-inc-body-map "i" 'gnus-summary-immediately-raise-by-body) ! (define-key gnus-summary-inc-body-map "t" 'gnus-summary-temporarily-raise-by-body) ! (define-key gnus-summary-inc-body-map "p" 'gnus-summary-raise-by-body) ! ! (define-prefix-command 'gnus-summary-inc-id-map) ! (define-key gnus-summary-increase-map "i" 'gnus-summary-inc-id-map) ! (define-key gnus-summary-increase-map "I" 'gnus-summary-temporarily-raise-by-id) ! (define-key gnus-summary-inc-id-map "i" 'gnus-summary-temporarily-raise-by-id) ! (define-key gnus-summary-inc-id-map "I" 'gnus-summary-raise-by-id) ! (define-key gnus-summary-inc-id-map "i" 'gnus-summary-immediately-raise-by-id) ! (define-key gnus-summary-inc-id-map "t" 'gnus-summary-temporarily-raise-by-id) ! (define-key gnus-summary-inc-id-map "p" 'gnus-summary-raise-by-id) ! ! (define-prefix-command 'gnus-summary-inc-thread-map) ! (define-key gnus-summary-increase-map "t" 'gnus-summary-inc-thread-map) ! (define-key gnus-summary-increase-map "T" 'gnus-summary-temporarily-raise-by-thread) ! (define-key gnus-summary-inc-thread-map "t" 'gnus-summary-temporarily-raise-by-thread) ! (define-key gnus-summary-inc-thread-map "T" 'gnus-summary-raise-by-thread) ! (define-key gnus-summary-inc-thread-map "i" 'gnus-summary-immediately-raise-by-thread) ! (define-key gnus-summary-inc-thread-map "t" 'gnus-summary-temporarily-raise-by-thread) ! (define-key gnus-summary-inc-thread-map "p" 'gnus-summary-raise-by-thread) ! ! (define-prefix-command 'gnus-summary-inc-xref-map) ! (define-key gnus-summary-increase-map "x" 'gnus-summary-inc-xref-map) ! (define-key gnus-summary-increase-map "X" 'gnus-summary-temporarily-raise-by-xref) ! (define-key gnus-summary-inc-xref-map "x" 'gnus-summary-temporarily-raise-by-xref) ! (define-key gnus-summary-inc-xref-map "X" 'gnus-summary-raise-by-xref) ! (define-key gnus-summary-inc-xref-map "i" 'gnus-summary-immediately-raise-by-xref) ! (define-key gnus-summary-inc-xref-map "t" 'gnus-summary-temporarily-raise-by-xref) ! (define-key gnus-summary-inc-xref-map "p" 'gnus-summary-raise-by-xref) ! ! (define-prefix-command 'gnus-summary-inc-fol-map) ! (define-key gnus-summary-increase-map "f" 'gnus-summary-inc-fol-map) ! (define-key gnus-summary-increase-map "F" 'gnus-summary-temporarily-raise-followups-to-author) ! (define-key gnus-summary-inc-fol-map "f" 'gnus-summary-temporarily-raise-followups-to-author) ! (define-key gnus-summary-inc-fol-map "F" 'gnus-summary-raise-followups-to-author) ! (define-key gnus-summary-inc-fol-map "i" 'gnus-summary-immediately-raise-followups-to-author) ! (define-key gnus-summary-inc-fol-map "t" 'gnus-summary-temporarily-raise-followups-to-author) ! (define-key gnus-summary-inc-fol-map "p" 'gnus-summary-raise-followups-to-author) ! ! ! (define-prefix-command 'gnus-summary-lower-map) ! (define-key gnus-summary-mode-map "L" 'gnus-summary-lower-map) ! ! (define-key gnus-summary-lower-map "l" 'gnus-summary-lower-same-subject-and-select) ! (define-key gnus-summary-lower-map "L" 'gnus-summary-lower-same-subject) ! (define-key gnus-summary-lower-map "\C-l" 'gnus-summary-lower-score) ! ! (define-prefix-command 'gnus-summary-low-subject-map) ! (define-key gnus-summary-lower-map "s" 'gnus-summary-low-subject-map) ! (define-key gnus-summary-lower-map "S" 'gnus-summary-temporarily-lower-by-subject) ! (define-key gnus-summary-low-subject-map "s" 'gnus-summary-temporarily-lower-by-subject) ! (define-key gnus-summary-low-subject-map "S" 'gnus-summary-lower-by-subject) ! (define-key gnus-summary-low-subject-map "i" 'gnus-summary-immediately-lower-by-subject) ! (define-key gnus-summary-low-subject-map "t" 'gnus-summary-temporarily-lower-by-subject) ! (define-key gnus-summary-low-subject-map "p" 'gnus-summary-lower-by-subject) ! ! (define-prefix-command 'gnus-summary-low-fuzzy-map) ! (define-key gnus-summary-lower-map "z" 'gnus-summary-low-fuzzy-map) ! (define-key gnus-summary-lower-map "Z" 'gnus-summary-temporarily-lower-by-fuzzy) ! (define-key gnus-summary-low-fuzzy-map "z" 'gnus-summary-temporarily-lower-by-fuzzy) ! (define-key gnus-summary-low-fuzzy-map "Z" 'gnus-summary-lower-by-fuzzy) ! (define-key gnus-summary-low-fuzzy-map "i" 'gnus-summary-immediately-lower-by-fuzzy) ! (define-key gnus-summary-low-fuzzy-map "t" 'gnus-summary-temporarily-lower-by-fuzzy) ! (define-key gnus-summary-low-fuzzy-map "p" 'gnus-summary-lower-by-fuzzy) ! ! (define-prefix-command 'gnus-summary-low-body-map) ! (define-key gnus-summary-lower-map "b" 'gnus-summary-low-body-map) ! (define-key gnus-summary-lower-map "B" 'gnus-summary-temporarily-lower-by-body) ! (define-key gnus-summary-low-body-map "b" 'gnus-summary-temporarily-lower-by-body) ! (define-key gnus-summary-low-body-map "B" 'gnus-summary-lower-by-body) ! (define-key gnus-summary-low-body-map "i" 'gnus-summary-immediately-lower-by-body) ! (define-key gnus-summary-low-body-map "t" 'gnus-summary-temporarily-lower-by-body) ! (define-key gnus-summary-low-body-map "p" 'gnus-summary-lower-by-body) ! ! (define-prefix-command 'gnus-summary-low-author-map) ! (define-key gnus-summary-lower-map "a" 'gnus-summary-low-author-map) ! (define-key gnus-summary-lower-map "A" 'gnus-summary-temporarily-lower-by-author) ! (define-key gnus-summary-low-author-map "a" 'gnus-summary-temporarily-lower-by-author) ! (define-key gnus-summary-low-author-map "A" 'gnus-summary-lower-by-author) ! (define-key gnus-summary-low-author-map "i" 'gnus-summary-immediately-lower-by-author) ! (define-key gnus-summary-low-author-map "t" 'gnus-summary-temporarily-lower-by-author) ! (define-key gnus-summary-low-author-map "p" 'gnus-summary-lower-by-author) ! ! (define-prefix-command 'gnus-summary-low-id-map) ! (define-key gnus-summary-lower-map "i" 'gnus-summary-low-id-map) ! (define-key gnus-summary-lower-map "I" 'gnus-summary-temporarily-lower-by-id) ! (define-key gnus-summary-low-id-map "i" 'gnus-summary-temporarily-lower-by-id) ! (define-key gnus-summary-low-id-map "I" 'gnus-summary-lower-by-id) ! (define-key gnus-summary-low-id-map "i" 'gnus-summary-immediately-lower-by-id) ! (define-key gnus-summary-low-id-map "t" 'gnus-summary-temporarily-lower-by-id) ! (define-key gnus-summary-low-id-map "p" 'gnus-summary-lower-by-id) ! ! (define-prefix-command 'gnus-summary-low-thread-map) ! (define-key gnus-summary-lower-map "t" 'gnus-summary-low-thread-map) ! (define-key gnus-summary-lower-map "T" 'gnus-summary-temporarily-lower-by-thread) ! (define-key gnus-summary-low-thread-map "t" 'gnus-summary-temporarily-lower-by-thread) ! (define-key gnus-summary-low-thread-map "T" 'gnus-summary-lower-by-thread) ! (define-key gnus-summary-low-thread-map "i" 'gnus-summary-immediately-lower-by-thread) ! (define-key gnus-summary-low-thread-map "t" 'gnus-summary-temporarily-lower-by-thread) ! (define-key gnus-summary-low-thread-map "p" 'gnus-summary-lower-by-thread) ! ! (define-prefix-command 'gnus-summary-low-xref-map) ! (define-key gnus-summary-lower-map "x" 'gnus-summary-low-xref-map) ! (define-key gnus-summary-lower-map "X" 'gnus-summary-temporarily-lower-by-xref) ! (define-key gnus-summary-low-xref-map "x" 'gnus-summary-temporarily-lower-by-xref) ! (define-key gnus-summary-low-xref-map "X" 'gnus-summary-lower-by-xref) ! (define-key gnus-summary-low-xref-map "i" 'gnus-summary-immediately-lower-by-xref) ! (define-key gnus-summary-low-xref-map "t" 'gnus-summary-temporarily-lower-by-xref) ! (define-key gnus-summary-low-xref-map "p" 'gnus-summary-lower-by-xref) ! ! (define-prefix-command 'gnus-summary-low-fol-map) ! (define-key gnus-summary-lower-map "f" 'gnus-summary-low-fol-map) ! (define-key gnus-summary-lower-map "F" 'gnus-summary-temporarily-lower-followups-to-author) ! (define-key gnus-summary-low-fol-map "f" 'gnus-summary-temporarily-lower-followups-to-author) ! (define-key gnus-summary-low-fol-map "F" 'gnus-summary-lower-followups-to-author) ! (define-key gnus-summary-low-fol-map "i" 'gnus-summary-immediately-lower-followups-to-author) ! (define-key gnus-summary-low-fol-map "t" 'gnus-summary-temporarily-lower-followups-to-author) ! (define-key gnus-summary-low-fol-map "p" 'gnus-summary-lower-followups-to-author) ;; Summary score file commands --- 112,129 ---- ;;; Summary mode score maps. (defvar gnus-summary-score-map nil) ! ! (define-prefix-command 'gnus-summary-score-map) ! (define-key gnus-summary-various-map "S" 'gnus-summary-score-map) ! (define-key gnus-summary-score-map "s" 'gnus-summary-set-score) ! (define-key gnus-summary-score-map "a" 'gnus-summary-score-entry) ! (define-key gnus-summary-score-map "S" 'gnus-summary-current-score) ! (define-key gnus-summary-score-map "c" 'gnus-score-change-score-file) ! (define-key gnus-summary-score-map "m" 'gnus-score-set-mark-below) ! (define-key gnus-summary-score-map "x" 'gnus-score-set-expunge-below) ! (define-key gnus-summary-score-map "e" 'gnus-score-edit-alist) ! (define-key gnus-summary-score-map "f" 'gnus-score-edit-file) ! ;; Summary score file commands *************** *** 296,301 **** --- 131,216 ---- ;; Much modification of the kill (ahem, score) code and lots of the ;; functions are written by Per Abrahamsen . + (defun gnus-summary-lower-score (score) + (interactive "P") + (gnus-summary-increase-score (- (gnus-score-default score)))) + + (defun gnus-summary-increase-score (score) + (interactive "P") + (let* ((score (gnus-score-default score)) + (prefix (if (< score 0) ?L ?I)) + (char-to-header + '((?a "from") + (?s "subject") + (?b "body" "") + (?h "head" "") + (?i "message-id" nil t) + (?t "references" "message-id" t) + (?x "xref") + (?l "lines") + (?d "date") + (?f "followup"))) + (char-to-type + '((?e 'e) + (?f 'f) + (?s 's) + (?r 'r) + (?b 'before) + (?a 'at) + (?n 'now) + (?< '<) + (?> '>) + (?= '=))) + hchar entry temporary tchar pchar end type) + ;; First we read the header to score. + (message "%c-" prefix) + (setq hchar (read-char)) + (or (setq entry (assq (downcase hchar) char-to-header)) + (progn + (ding) + (setq end t) + (message "%c %c" prefix hchar))) + (if (or end (/= (downcase hchar) hchar)) + (progn + ;; This was a majuscle, so we end reading and set the defaults. + (message "%c %c" prefix hchar) + (setq type 's + temporary t)) + ;; We continue reading - the type. + (message "%c %c-" prefix hchar) + (setq tchar (read-char)) + (or (setq type (nth 1 (assq (downcase tchar) char-to-type))) + (progn + (ding) + (message "%c %c" prefix hchar) + (setq end t))) + (if (or end (/= (downcase tchar) tchar)) + (progn + ;; It was a majuscle, so we end reading and the the default. + (message "%c %c %c" prefix hchar tchar) + (setq temporary t)) + ;; We continue reading. + (message "%c %c %c-" prefix hchar tchar) + (setq pchar (read-char)) + (message "%c %c %c" prefix hchar tchar pchar) + (cond ((= pchar ?t) + (setq temporary t)) + ((/= pchar ?p) + (ding) + (setq end t) + (message "%c %c %c %c" prefix hchar tchar pchar))))) + ;; We have all the data, so we enter this score. + (if end + () + (gnus-summary-score-entry + (nth 1 entry) ; Header + (gnus-summary-header (or (nth 2 entry) (nth 1 entry))) ; Match + type ; Type + (gnus-score-default score) ; Score + (and temporary (current-time-string)) ; Temp + (not (nth 3 entry))) ; Prompt + ))) + (defun gnus-summary-header (header) ;; Return HEADER for current articles, or error. (let ((article (gnus-summary-article-number))) *************** *** 320,327 **** (lambda (x) (fboundp (nth 2 x))) t) (read-string "Match: ") ! (y-or-n-p "Use regexp match? ") ! (prefix-numeric-value current-prefix-arg) (cond ((not (y-or-n-p "Add to SCORE file? ")) 'now) ((y-or-n-p "Expire kill? ") --- 235,243 ---- (lambda (x) (fboundp (nth 2 x))) t) (read-string "Match: ") ! (if (y-or-n-p "Use regexp match? ") 'r 's) ! (and current-prefix-arg ! (prefix-numeric-value current-prefix-arg)) (cond ((not (y-or-n-p "Add to SCORE file? ")) 'now) ((y-or-n-p "Expire kill? ") *************** *** 425,766 **** (gnus-summary-score-entry "xref" (concat " " group ":") nil score date t))))) - (defun gnus-summary-immediately-lower-by-subject (level) - "Immediately lower score by LEVEL for current subject. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-simplify-subject-re (gnus-summary-header "subject")) - nil (- (gnus-score-default level)) 'now t)) - - (defun gnus-summary-immediately-lower-by-fuzzy (level) - "Immediately lower score by LEVEL for current fuzzy subject. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-summary-header "subject") - 'f (- (gnus-score-default level)) 'now)) - - (defun gnus-summary-immediately-lower-by-author (level) - "Immediately lower score by LEVEL for current author. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "from" (gnus-summary-header "from") nil (- (gnus-score-default level)) - 'now t)) - - (defun gnus-summary-immediately-lower-by-body (level) - "Immediately lower score by LEVEL for a match on the body of the article. - See `gnus-score-expiry-days'." - (interactive "P") - (error "Not yet implemented") - (gnus-summary-score-entry - "body" "" nil (- (gnus-score-default level)) 'now t)) - - (defun gnus-summary-immediately-lower-by-id (level) - "Immediately lower score by LEVEL for current message-id. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "message-id" (gnus-summary-header "message-id") - nil (- (gnus-score-default level)) 'now)) - - (defun gnus-summary-immediately-lower-by-xref (level) - "Immediately lower score by LEVEL for current xref. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-crossposting (- (gnus-score-default level)) 'now)) - - (defun gnus-summary-immediately-lower-by-thread (level) - "Immediately lower score by LEVEL for current thread. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "references" (gnus-summary-header "message-id") - nil (- (gnus-score-default level)) 'now)) - - (defun gnus-summary-immediately-lower-followups-to-author (level) - "Lower score by LEVEL for all followups to the current author." - (interactive "P") - (error "Not yet implemented") - (gnus-summary-score-entry - "followup" (gnus-summary-header "from") - nil (- (gnus-score-default level)) 'now t t)) - - (defun gnus-summary-temporarily-lower-by-subject (level) - "Temporarily lower score by LEVEL for current subject. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-simplify-subject-re (gnus-summary-header "subject")) - nil (- (gnus-score-default level)) - (current-time-string) t)) - - (defun gnus-summary-temporarily-lower-by-fuzzy (level) - "Temporarily lower score by LEVEL for current fuzzy subject. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-summary-header "subject") - 'f (- (gnus-score-default level)) - (current-time-string))) - - (defun gnus-summary-temporarily-lower-by-author (level) - "Temporarily lower score by LEVEL for current author. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "from" (gnus-summary-header "from") nil (- (gnus-score-default level)) - (current-time-string) t)) - - (defun gnus-summary-temporarily-lower-by-body (level) - "Temporarily lower score by LEVEL for a match on the body of the article. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "body" "" nil (- (gnus-score-default level)) (current-time-string) t)) - - (defun gnus-summary-temporarily-lower-by-id (level) - "Temporarily lower score by LEVEL for current message-id. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "message-id" (gnus-summary-header "message-id") - nil (- (gnus-score-default level)) - (current-time-string))) - - (defun gnus-summary-temporarily-lower-by-xref (level) - "Temporarily lower score by LEVEL for current xref. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-crossposting - (- (gnus-score-default level)) (current-time-string))) - - (defun gnus-summary-temporarily-lower-by-thread (level) - "Temporarily lower score by LEVEL for current thread. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "references" (gnus-summary-header "message-id") - nil (- (gnus-score-default level)) (current-time-string))) - - (defun gnus-summary-temporarily-lower-followups-to-author (level) - "Lower score by LEVEL for all followups to the current author." - (interactive "P") - (gnus-summary-score-entry - "followup" (gnus-summary-header "from") - nil (- (gnus-score-default level)) (current-time-string) t t)) - - (defun gnus-summary-lower-by-subject (level) - "Lower score by LEVEL for current subject." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-simplify-subject-re (gnus-summary-header "subject")) - nil (- (gnus-score-default level)) - nil t)) - - (defun gnus-summary-lower-by-fuzzy (level) - "Lower score by LEVEL for current fuzzy subject." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-summary-header "subject") - 'f (- (gnus-score-default level)) - nil)) - - (defun gnus-summary-lower-by-author (level) - "Lower score by LEVEL for current author." - (interactive "P") - (gnus-summary-score-entry - "from" (gnus-summary-header "from") nil - (- (gnus-score-default level)) nil t)) - - (defun gnus-summary-lower-by-body (level) - "Lower score by LEVEL for a match on the body of the article." - (interactive "P") - (gnus-summary-score-entry - "body" "" nil (- (gnus-score-default level)) nil t)) - - (defun gnus-summary-lower-by-id (level) - "Lower score by LEVEL for current message-id." - (interactive "P") - (gnus-summary-score-entry - "message-id" (gnus-summary-header "message-id") nil - (- (gnus-score-default level)) nil)) - - (defun gnus-summary-lower-by-xref (level) - "Lower score by LEVEL for current xref." - (interactive "P") - (gnus-summary-score-crossposting (- (gnus-score-default level)) nil)) - - (defun gnus-summary-lower-followups-to-author (level) - "Lower score by LEVEL for all followups to the current author." - (interactive "P") - (gnus-summary-score-entry - "followup" (gnus-summary-header "from") - nil (- (gnus-score-default level)) nil t t)) - - (defun gnus-summary-immediately-raise-by-subject (level) - "Immediately raise score by LEVEL for current subject. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-simplify-subject-re (gnus-summary-header "subject")) - nil level 'now t)) - - (defun gnus-summary-immediately-raise-by-fuzzy (level) - "Immediately raise score by LEVEL for current fuzzy subject. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-summary-header "subject") - 'f level 'now)) - - (defun gnus-summary-immediately-raise-by-author (level) - "Immediately raise score by LEVEL for current author. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "from" (gnus-summary-header "from") nil level 'now t)) - - (defun gnus-summary-immediately-raise-by-body (level) - "Immediately raise score by LEVEL for a match on the body of the article. - See `gnus-score-expiry-days'." - (interactive "P") - (error "Not yet implemented") - (gnus-summary-score-entry "body" "" nil level 'now t)) - - (defun gnus-summary-immediately-raise-by-id (level) - "Immediately raise score by LEVEL for current message-id. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "message-id" (gnus-summary-header "message-id") - nil level 'now)) - - (defun gnus-summary-immediately-raise-by-xref (level) - "Immediately raise score by LEVEL for current xref. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-crossposting level 'now)) - - (defun gnus-summary-immediately-raise-by-thread (level) - "Immediately raise score by LEVEL for current thread. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "references" (gnus-summary-header "message-id") - nil level 'now)) - - (defun gnus-summary-immediately-raise-followups-to-author (level) - "Raise score by LEVEL for all followups to the current author." - (interactive "P") - (error "Not yet implemented") - (gnus-summary-score-entry - "followup" (gnus-summary-header "from") - nil (gnus-score-default level) 'now t t)) - - (defun gnus-summary-temporarily-raise-by-subject (level) - "Temporarily raise score by LEVEL for current subject. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-simplify-subject-re (gnus-summary-header "subject")) - nil level (current-time-string) t)) - - (defun gnus-summary-temporarily-raise-by-fuzzy (level) - "Temporarily raise score by LEVEL for current fuzzy subject. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-summary-header "subject") - 'f level (current-time-string))) - - (defun gnus-summary-temporarily-raise-by-author (level) - "Temporarily raise score by LEVEL for current author. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "from" (gnus-summary-header "from") nil level (current-time-string) t)) - - (defun gnus-summary-temporarily-raise-by-body (level) - "Temporarily raise score by LEVEL for a match on the body of the article. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry "body" "" nil level (current-time-string) t)) - - (defun gnus-summary-temporarily-raise-by-id (level) - "Temporarily raise score by LEVEL for current message-id. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "message-id" (gnus-summary-header "message-id") - nil level (current-time-string))) - - (defun gnus-summary-temporarily-raise-by-xref (level) - "Temporarily raise score by LEVEL for current xref. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-crossposting level (current-time-string))) - - (defun gnus-summary-temporarily-raise-by-thread (level) - "Temporarily raise score by LEVEL for current thread. - See `gnus-score-expiry-days'." - (interactive "P") - (gnus-summary-score-entry - "references" (gnus-summary-header "message-id") - nil level (current-time-string))) - - (defun gnus-summary-temporarily-raise-followups-to-author (level) - "Raise score by LEVEL for all followups to the current author." - (interactive "P") - (gnus-summary-score-entry - "followup" (gnus-summary-header "from") - nil (gnus-score-default level) (current-time-string) t t)) - - (defun gnus-summary-raise-by-subject (level) - "Raise score by LEVEL for current subject." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-simplify-subject-re (gnus-summary-header "subject")) - nil level nil t)) - - (defun gnus-summary-raise-by-fuzzy (level) - "Raise score by LEVEL for current fuzzy subject." - (interactive "P") - (gnus-summary-score-entry - "subject" (gnus-summary-header "subject") - nil level nil)) - - (defun gnus-summary-raise-by-author (level) - "Raise score by LEVEL for current author." - (interactive "P") - (gnus-summary-score-entry - "from" (gnus-summary-header "from") nil level nil t)) - - (defun gnus-summary-raise-by-body (level) - "Raise score by LEVEL for a match on the body of the article." - (interactive "P") - (gnus-summary-score-entry "body" "" nil level nil t)) - - (defun gnus-summary-raise-by-id (level) - "Raise score by LEVEL for current message-id." - (interactive "P") - (gnus-summary-score-entry - "message-id" (gnus-summary-header "message-id") nil level nil)) - - (defun gnus-summary-raise-by-xref (level) - "Raise score by LEVEL for current xref." - (interactive "P") - (gnus-summary-score-crossposting level nil)) - - (defun gnus-summary-raise-followups-to-author (level) - "Raise score by LEVEL for all followups to the current author." - (interactive "P") - (gnus-summary-score-entry - "followup" (gnus-summary-header "from") - nil (gnus-score-default level) nil t t)) - - ;;; ;;; Gnus Score Files --- 341,346 ---- *************** *** 1042,1048 **** (setq score (setcdr entry (delq (assq 'touched score) score))) (erase-buffer) (let (emacs-lisp-mode-hook) ! (if (string-match (concat gnus-adaptive-file-suffix) file) ;; This is an adaptive score file, so we do not run ;; it through `pp'. These files can get huge, and ;; are not meant to be edited by human hands. --- 622,628 ---- (setq score (setcdr entry (delq (assq 'touched score) score))) (erase-buffer) (let (emacs-lisp-mode-hook) ! (if (string-match (concat gnus-adaptive-file-suffix "$") file) ;; This is an adaptive score file, so we do not run ;; it through `pp'. These files can get huge, and ;; are not meant to be edited by human hands. *************** *** 1682,1688 **** (let* ((malist (gnus-copy-sequence gnus-adaptive-score-alist)) (alist malist) (date (current-time-string)) ! elem headers) ;; First we transform the adaptive rule alist into something ;; that's faster to process. (while malist --- 1262,1268 ---- (let* ((malist (gnus-copy-sequence gnus-adaptive-score-alist)) (alist malist) (date (current-time-string)) ! elem headers match) ;; First we transform the adaptive rule alist into something ;; that's faster to process. (while malist *************** *** 1712,1720 **** (setq headers (gnus-get-header-by-number (gnus-summary-article-number))) (while elem (gnus-summary-score-entry ! (nth 1 (car elem)) (funcall (car (car elem)) headers) ! 's (nth 2 (car elem)) date nil t) (setq elem (cdr elem)))) (forward-line 1))))) --- 1292,1306 ---- (setq headers (gnus-get-header-by-number (gnus-summary-article-number))) (while elem + (setq match (funcall (car (car elem)) headers)) (gnus-summary-score-entry ! (nth 1 (car elem)) match ! ;; Whether we use regexp or exact matches are controlled ! ;; here. ! (if (or (not gnus-score-exact-adapt-limit) ! (< (length match) gnus-score-exact-adapt-limit)) ! 'e 's) ! (nth 2 (car elem)) date nil t) (setq elem (cdr elem)))) (forward-line 1))))) *************** *** 1723,1729 **** (let* ((malist (gnus-copy-sequence gnus-adaptive-score-alist)) (alist malist) (date (current-time-string)) ! elem headers) ;; First we transform the adaptive rule alist into something ;; that's faster to process. (while malist --- 1309,1315 ---- (let* ((malist (gnus-copy-sequence gnus-adaptive-score-alist)) (alist malist) (date (current-time-string)) ! elem headers match) ;; First we transform the adaptive rule alist into something ;; that's faster to process. (while malist *************** *** 1754,1762 **** (setq headers (gnus-get-header-by-number (gnus-summary-article-number))) (while elem (gnus-summary-score-entry ! (nth 1 (car elem)) (funcall (car (car elem)) headers) ! 'e (nth 2 (car elem)) date nil t) (setq elem (cdr elem)))) (delete-region (point) (progn (forward-line 1) (point))))))) --- 1340,1352 ---- (setq headers (gnus-get-header-by-number (gnus-summary-article-number))) (while elem + (setq match (funcall (car (car elem)) headers)) (gnus-summary-score-entry ! (nth 1 (car elem)) match ! (if (or (not gnus-score-exact-adapt-limit) ! (< (length match) gnus-score-exact-adapt-limit)) ! 'e 's) ! (nth 2 (car elem)) date nil t) (setq elem (cdr elem)))) (delete-region (point) (progn (forward-line 1) (point))))))) diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-uu.el dgnus/lisp/gnus-uu.el *** pub/dgnus/lisp/gnus-uu.el Mon May 15 20:17:09 1995 --- dgnus/lisp/gnus-uu.el Wed May 17 17:02:43 1995 *************** *** 55,61 **** For example: To make gnus-uu use 'xli' to display JPEG and GIF files, put the ! following in your .emacs file (setq gnus-uu-user-view-rules '((\"jpg$\\\\|gif$\" \"xli\"))) --- 55,61 ---- For example: To make gnus-uu use 'xli' to display JPEG and GIF files, put the ! following in your .emacs file: (setq gnus-uu-user-view-rules '((\"jpg$\\\\|gif$\" \"xli\"))) *************** *** 270,315 **** (defvar gnus-uu-extract-view-map nil) (defvar gnus-uu-mark-map nil) ! (define-prefix-command 'gnus-uu-mark-map) ! (define-key gnus-summary-mark-map "p" 'gnus-uu-mark-map) ! (define-key gnus-uu-mark-map "p" 'gnus-summary-mark-as-processable) ! (define-key gnus-uu-mark-map "u" 'gnus-summary-unmark-as-processable) ! (define-key gnus-uu-mark-map "U" 'gnus-summary-unmark-all-processable) ! (define-key gnus-uu-mark-map "s" 'gnus-uu-mark-series) ! (define-key gnus-uu-mark-map "r" 'gnus-uu-mark-region) ! (define-key gnus-uu-mark-map "R" 'gnus-uu-mark-by-regexp) ! (define-key gnus-uu-mark-map "t" 'gnus-uu-mark-thread) ! (define-key gnus-uu-mark-map "a" 'gnus-uu-mark-all) ! (define-key gnus-uu-mark-map "S" 'gnus-uu-mark-sparse) ! ! (define-prefix-command 'gnus-uu-extract-map) ! (define-key gnus-summary-mode-map "X" 'gnus-uu-extract-map) ! ; (define-key gnus-uu-extract-map "x" 'gnus-uu-extract-any) ! ; (define-key gnus-uu-extract-map "m" 'gnus-uu-extract-mime) ! (define-key gnus-uu-extract-map "u" 'gnus-uu-decode-uu) ! (define-key gnus-uu-extract-map "U" 'gnus-uu-decode-uu-and-save) ! (define-key gnus-uu-extract-map "s" 'gnus-uu-decode-unshar) ! (define-key gnus-uu-extract-map "S" 'gnus-uu-decode-unshar-and-save) ! (define-key gnus-uu-extract-map "o" 'gnus-uu-decode-save) ! (define-key gnus-uu-extract-map "O" 'gnus-uu-decode-save) ! (define-key gnus-uu-extract-map "b" 'gnus-uu-decode-binhex) ! (define-key gnus-uu-extract-map "B" 'gnus-uu-decode-binhex) ! (define-key gnus-uu-extract-map "p" 'gnus-uu-decode-postscript) ! (define-key gnus-uu-extract-map "P" 'gnus-uu-decode-postscript-and-save) ! ! (define-prefix-command 'gnus-uu-extract-view-map) ! (define-key gnus-uu-extract-map "v" 'gnus-uu-extract-view-map) ! (define-key gnus-uu-extract-view-map "u" 'gnus-uu-decode-uu-view) ! (define-key gnus-uu-extract-view-map "U" 'gnus-uu-decode-uu-and-save-view) ! (define-key gnus-uu-extract-view-map "s" 'gnus-uu-decode-unshar-view) ! (define-key gnus-uu-extract-view-map "S" 'gnus-uu-decode-unshar-and-save-view) ! (define-key gnus-uu-extract-view-map "o" 'gnus-uu-decode-save-view) ! (define-key gnus-uu-extract-view-map "O" 'gnus-uu-decode-save-view) ! (define-key gnus-uu-extract-view-map "b" 'gnus-uu-decode-binhex-view) ! (define-key gnus-uu-extract-view-map "B" 'gnus-uu-decode-binhex-view) ! (define-key gnus-uu-extract-view-map "p" 'gnus-uu-decode-postscript-view) ! (define-key gnus-uu-extract-view-map "P" 'gnus-uu-decode-postscript-and-save-view) ! ;; Commands. --- 270,315 ---- (defvar gnus-uu-extract-view-map nil) (defvar gnus-uu-mark-map nil) ! (define-prefix-command 'gnus-uu-mark-map) ! (define-key gnus-summary-mark-map "p" 'gnus-uu-mark-map) ! (define-key gnus-uu-mark-map "p" 'gnus-summary-mark-as-processable) ! (define-key gnus-uu-mark-map "u" 'gnus-summary-unmark-as-processable) ! (define-key gnus-uu-mark-map "U" 'gnus-summary-unmark-all-processable) ! (define-key gnus-uu-mark-map "s" 'gnus-uu-mark-series) ! (define-key gnus-uu-mark-map "r" 'gnus-uu-mark-region) ! (define-key gnus-uu-mark-map "R" 'gnus-uu-mark-by-regexp) ! (define-key gnus-uu-mark-map "t" 'gnus-uu-mark-thread) ! (define-key gnus-uu-mark-map "a" 'gnus-uu-mark-all) ! (define-key gnus-uu-mark-map "S" 'gnus-uu-mark-sparse) ! ! (define-prefix-command 'gnus-uu-extract-map) ! (define-key gnus-summary-mode-map "X" 'gnus-uu-extract-map) ! ;;(define-key gnus-uu-extract-map "x" 'gnus-uu-extract-any) ! ;;(define-key gnus-uu-extract-map "m" 'gnus-uu-extract-mime) ! (define-key gnus-uu-extract-map "u" 'gnus-uu-decode-uu) ! (define-key gnus-uu-extract-map "U" 'gnus-uu-decode-uu-and-save) ! (define-key gnus-uu-extract-map "s" 'gnus-uu-decode-unshar) ! (define-key gnus-uu-extract-map "S" 'gnus-uu-decode-unshar-and-save) ! (define-key gnus-uu-extract-map "o" 'gnus-uu-decode-save) ! (define-key gnus-uu-extract-map "O" 'gnus-uu-decode-save) ! (define-key gnus-uu-extract-map "b" 'gnus-uu-decode-binhex) ! (define-key gnus-uu-extract-map "B" 'gnus-uu-decode-binhex) ! (define-key gnus-uu-extract-map "p" 'gnus-uu-decode-postscript) ! (define-key gnus-uu-extract-map "P" 'gnus-uu-decode-postscript-and-save) ! ! (define-prefix-command 'gnus-uu-extract-view-map) ! (define-key gnus-uu-extract-map "v" 'gnus-uu-extract-view-map) ! (define-key gnus-uu-extract-view-map "u" 'gnus-uu-decode-uu-view) ! (define-key gnus-uu-extract-view-map "U" 'gnus-uu-decode-uu-and-save-view) ! (define-key gnus-uu-extract-view-map "s" 'gnus-uu-decode-unshar-view) ! (define-key gnus-uu-extract-view-map "S" 'gnus-uu-decode-unshar-and-save-view) ! (define-key gnus-uu-extract-view-map "o" 'gnus-uu-decode-save-view) ! (define-key gnus-uu-extract-view-map "O" 'gnus-uu-decode-save-view) ! (define-key gnus-uu-extract-view-map "b" 'gnus-uu-decode-binhex-view) ! (define-key gnus-uu-extract-view-map "B" 'gnus-uu-decode-binhex-view) ! (define-key gnus-uu-extract-view-map "p" 'gnus-uu-decode-postscript-view) ! (define-key gnus-uu-extract-view-map "P" 'gnus-uu-decode-postscript-and-save-view) ! ;; Commands. *************** *** 625,634 **** ((eq in-state 'last) (list 'end)) (t (list 'middle))))) (t ! (let (beg subj name headers headline sorthead body end-string state) ! (string-match "/\\([^/]*\\)$" gnus-uu-saved-article-name) ! (setq name (substring gnus-uu-saved-article-name (match-beginning 1) ! (match-end 1))) (if (or (eq in-state 'first) (eq in-state 'first-and-last)) (progn --- 625,632 ---- ((eq in-state 'last) (list 'end)) (t (list 'middle))))) (t ! (let ((name (file-name-nondirectory gnus-uu-saved-article-name)) ! beg subj headers headline sorthead body end-string state) (if (or (eq in-state 'first) (eq in-state 'first-and-last)) (progn *************** *** 658,668 **** (setq headline (car headers)) (setq headers (cdr headers)) (goto-char (point-min)) ! (if (re-search-forward (concat headline ".*$") nil t) (setq sorthead ! (concat sorthead (buffer-substring ! (match-beginning 0) ! (match-end 0)) "\n")))) (widen))) (insert sorthead)(goto-char (point-max)) (insert body)(goto-char (point-max)) --- 656,668 ---- (setq headline (car headers)) (setq headers (cdr headers)) (goto-char (point-min)) ! (if (re-search-forward headline nil t) (setq sorthead ! (concat sorthead ! (buffer-substring ! (match-beginning 0) ! (or (re-search-forward "^[^ \t]" nil t) ! (progn (forward-line 1) (point)))))))) (widen))) (insert sorthead)(goto-char (point-max)) (insert body)(goto-char (point-max)) diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-vis.el dgnus/lisp/gnus-vis.el *** pub/dgnus/lisp/gnus-vis.el Mon May 15 20:17:09 1995 --- dgnus/lisp/gnus-vis.el Wed May 17 17:02:43 1995 *************** *** 1,4 **** ! ;;; gnus-vis --- display-oriented parts of Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen --- 1,4 ---- ! ;;; gnus-vis.el --- display-oriented parts of Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen *************** *** 271,278 **** --- 271,280 ---- ["Set bookmark" gnus-summary-set-bookmark t] ["Remove bookmark" gnus-summary-remove-bookmark t]) ("Score" + ["Enter score" gnus-summary-score-entry t] ["Raise score" gnus-summary-raise-score t] ["Lower score" gnus-summary-lower-score t] + ["Current score" gnus-summary-current-score t] ["Set score" gnus-summary-set-score t]) ("Display" ["Remove lines marked as read" gnus-summary-remove-lines-marked-as-read t] diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus-vm.el dgnus/lisp/gnus-vm.el *** pub/dgnus/lisp/gnus-vm.el Mon May 15 20:17:09 1995 --- dgnus/lisp/gnus-vm.el Wed May 17 17:02:43 1995 *************** *** 1,4 **** ! ;;; gnus-vm: vm interface for Gnus ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Per Persson --- 1,4 ---- ! ;;; gnus-vm.el --- vm interface for Gnus ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Per Persson *************** *** 27,32 **** --- 27,38 ---- ;; Some code stolen from: ;; Rick Sladkey + ;;; Code: + + (require 'sendmail) + (require 'gnus) + (require 'gnus-msg) + (eval-when-compile (autoload 'vm-mode "vm") (autoload 'vm-save-message "vm") *************** *** 46,53 **** (if (not (featurep 'vm)) (load "vm")) - - (require 'gnus) (defun gnus-vm-make-folder (&optional buffer) (let ((article (or buffer (current-buffer))) --- 52,57 ---- diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/gnus.el dgnus/lisp/gnus.el *** pub/dgnus/lisp/gnus.el Mon May 15 20:17:11 1995 --- dgnus/lisp/gnus.el Wed May 17 19:26:33 1995 *************** *** 1,4 **** ! ;;; (ding) Gnus --- a newsreader for GNU Emacs ;; Copyright (C) 1987,88,89,90,93,94,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA --- 1,4 ---- ! ;;; gnus.el --- a newsreader for GNU Emacs ;; Copyright (C) 1987,88,89,90,93,94,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA *************** *** 158,177 **** "*Your `.newsrc' file. `.newsrc-SERVER' will be used instead if that exists.") - (defvar gnus-signature-file "~/.signature" - "*Your signature file. - If the variable is a string that doesn't correspond to a file, the - string itself is inserted.") - - (defvar gnus-signature-function nil - "*A function that should return a signature file name. - The function will be called with the name of the newsgroup being - posted to. - If the function returns a string that doesn't correspond to a file, the - string itself is inserted. - If the function returns nil, the `gnus-signature-file' variable will - be used instead.") - (defvar gnus-init-file "~/.gnus" "*Your Gnus elisp startup file. If a file with the .el or .elc suffixes exist, it will be read --- 158,163 ---- *************** *** 193,205 **** If it is `t', Gnus will not do anything special the first time it is started; it'll just use the normal newsgroups subscription methods.") - (defvar gnus-post-prepare-function nil - "*Function that is run after a post buffer has been prepared. - It is called with the name of the newsgroup that is posted to. It - might be used, for instance, for inserting signatures based on the - newsgroup name. (In that case, `gnus-signature-file' and - `mail-signature' should both be set to nil).") - (defvar gnus-use-cross-reference t "*Non-nil means that cross referenced articles will be marked as read. If nil, ignore cross references. If t, mark articles as read in --- 179,184 ---- *************** *** 211,252 **** If Emacs should crash without saving the .newsrc files, complete information can be restored from the dribble file.") - (defvar gnus-use-followup-to 'use - "*Specifies what to do with Followup-To header. - If nil, ignore the header. If it is t, use its value, but ignore - `poster'. If it is neither nil nor t, which is the default, always use - the value.") - - (defvar gnus-followup-to-function nil - "*A variable that contains a function that returns a followup address. - The function will be called in the buffer of the article that is being - followed up. The buffer will be narrowed to the headers of the - article. To pick header headers, one might use `mail-fetch-field'. The - function will be called with the name of the current newsgroup as the - argument. - - Here's an example `gnus-followup-to-function': - - (setq gnus-followup-to-function - (lambda (group) - (cond ((string= group \"mail.list\") - (or (mail-fetch-field \"sender\") - (mail-fetch-field \"from\"))) - (t - (or (mail-fetch-field \"reply-to\") - (mail-fetch-field \"from\"))))))") - - (defvar gnus-reply-to-function nil - "*A variable that contains a function that returns a reply address. - See the `gnus-followup-to-function' variable for an explanation of how - this variable is used. - - This function should return a string that will be used to fill in the - header. This function may also return a list. In that case, every - list element should be a cons where the first car should be a string - with the header name, and the cdr should be a string with the header - value.") - (defvar gnus-asynchronous nil "*If non-nil, Gnus will supply backends with data needed for async article fetching.") --- 190,195 ---- *************** *** 268,298 **** (defvar gnus-no-groups-message "No news is horrible news" "*Message displayed by Gnus when no groups are available.") - (defvar gnus-author-copy (getenv "AUTHORCOPY") - "*Save outgoing articles in this file. - Initialized from the AUTHORCOPY environment variable. - - If this variable begins with the character \"|\", outgoing articles - will be piped to the named program. It is possible to save an article - in an MH folder as follows: - - \(setq gnus-author-copy \"|/usr/local/lib/mh/rcvstore +Article\") - - If the first character is not a pipe, articles are saved using the - function specified by the `gnus-author-copy-saver' variable.") - - (defvar gnus-mail-self-blind nil - "*Non-nil means insert a BCC header in all outgoing articles. - This will result in having a copy of the article mailed to yourself. - The BCC header is inserted when the post buffer is initialized, so you - can remove or alter the BCC header to override the default.") - - (defvar gnus-author-copy-saver (function rmail-output) - "*A function called to save outgoing articles. - This function will be called with the same of the file to store the - article in. The default function is `rmail-output' which saves in Unix - mailbox format.") - (defvar gnus-use-long-file-name (not (memq system-type '(usg-unix-v xenix))) "*Non-nil means that the default name of a file to save articles in is the group name. If it's nil, the directory form of the group name is used instead. --- 211,216 ---- *************** *** 577,605 **** "*Always list groups less than this variable with unread articles. If nil, use parameter to specify.") - (defvar gnus-user-login-name nil - "*The login name of the user. - Got from the function `user-login-name' if undefined.") - - (defvar gnus-user-full-name nil - "*The full name of the user. - Got from the NAME environment variable if undefined.") - - (defvar gnus-user-from-line nil - "*Your full, complete e-mail address. - Overrides the other Gnus variables if it is non-nil. - - Here are two example values of this variable: - - \"Lars Magne Ingebrigtsen \" - - and - - \"larsi@ifi.uio.no (Lars Magne Ingebrigtsen)\" - - The first version is recommended, but the name has to be quoted if it - contains non-alphanumerical characters.") - (defvar gnus-show-mime nil "*If non-ni, do mime processing of articles. The articles will simply be fed to the function given by --- 495,500 ---- *************** *** 629,641 **** (defvar gnus-thread-indent-level 4 "*Number that says how much each sub-thread should be indented.") ! (defvar gnus-ignored-newsgroups ! (purecopy (mapconcat 'identity ! '("^to\\." ; not "real" groups ! "^[0-9]+ " ; all digits in name ! "[][\"#'();\\]" ; bogus characters ! ) ! "\\|")) "*A regexp to match uninteresting newsgroups in the active file. Any lines in the active file matching this regular expression are removed from the newsgroup list before anything else is done to it, --- 524,530 ---- (defvar gnus-thread-indent-level 4 "*Number that says how much each sub-thread should be indented.") ! (defvar gnus-ignored-newsgroups "" "*A regexp to match uninteresting newsgroups in the active file. Any lines in the active file matching this regular expression are removed from the newsgroup list before anything else is done to it, *************** *** 658,682 **** be placed first in the article buffer in the sequence specified by this list.") - (defvar gnus-required-headers - '(From Date Newsgroups Subject Message-ID Organization Lines X-Newsreader) - "*Headers to be generated or prompted for when posting an article. - RFC977 and RFC1036 require From, Date, Newsgroups, Subject, - Message-ID. Organization, Lines and X-Newsreader are optional. If - you want Gnus not to insert some header, remove it from this list.") - (defvar gnus-show-all-headers nil "*If non-nil, don't hide any headers.") (defvar gnus-save-all-headers t "*If non-nil, don't remove any headers before saving.") - (defvar gnus-signature-separator "^-- *$" - "Regexp matching signature separator.") - - (defvar gnus-check-before-posting t - "In non-nil, Gnus will attempt to run some checks on outgoing posts.") - (defvar gnus-inhibit-startup-message nil "*If non-nil, the startup message will not be displayed.") --- 547,558 ---- *************** *** 708,728 **** (defvar gnus-auto-center-summary t "*If non-nil, always center the current summary buffer.") - (defvar gnus-auto-mail-to-author nil - "*If non-nil, mail the authors of articles a copy of your follow-ups. - If this variable is `ask', the user will be prompted for whether to - mail a copy. The string given by `gnus-mail-courtesy-message' will be - inserted at the beginning of the mail copy. - - Mail is sent using the function specified by the - `gnus-mail-send-method' variable.") - - ;; Added by Ethan Bradford . - (defvar gnus-mail-courtesy-message - "The following message is a courtesy copy of an article\nthat has been posted as well.\n\n" - "*This is inserted at the start of a mailed copy of a posted message. - If this variable is nil, no such courtesy message will be added.") - (defvar gnus-break-pages t "*If non-nil, do page breaking on articles. The page delimiter is specified by the `gnus-page-delimiter' --- 584,589 ---- *************** *** 805,831 **** (defvar gnus-carpal nil "*If non-nil, display clickable icons.") - (defvar gnus-mail-reply-method (function gnus-mail-reply-using-mail) - "*Function to compose a reply. - Three pre-made functions are `gnus-mail-reply-using-mail' (sendmail); - `gnus-mail-reply-using-mhe' (MH-E); and `gnus-mail-reply-using-vm'.") - - (defvar gnus-mail-forward-method (function gnus-mail-forward-using-mail) - "*Function to forward the current message to another user. - Three pre-made functions are `gnus-mail-forward-using-mail' (sendmail); - `gnus-mail-forward-using-mhe' (MH-E); and `gnus-mail-forward-using-vm'.") - - (defvar gnus-mail-other-window-method 'gnus-mail-other-window-using-mail - "*Function to compose mail in the other window. - Three pre-made functions are `gnus-mail-other-window-using-mail' - (sendmail); `gnus-mail-other-window-using-mhe' (MH-E); and - `gnus-mail-other-window-using-vm'.") - - (defvar gnus-mail-send-method send-mail-function - "*Function to mail a message which is also being posted as an article. - The message must have To or Cc header. The default is copied from - the variable `send-mail-function'.") - (defvar gnus-subscribe-newsgroup-method 'gnus-subscribe-zombies "*Function called with a group name when new group is detected. A few pre-made functions are supplied: `gnus-subscribe-randomly' --- 666,671 ---- *************** *** 1114,1119 **** --- 954,961 ---- If non-nil, this should be a regexp that should match all groups in which to perform auto-expiry. This only makes sense for mail groups.") + (defvar gnus-hidden-properties '(invisible t intangible t) + "Property list to use for hiding text.") ;; Hooks. *************** *** 1163,1168 **** --- 1005,1011 ---- The hook is designed to change the contents of the article buffer. Typical functions that this hook may contain are `gnus-article-hide-headers' (hide selected headers), + `gnus-article-maybe-highlight' (perform fancy article highlighting), `gnus-article-hide-signature' (hide signature) and `gnus-article-treat-overstrike' (turn \"^H_\" into bold characters).") (add-hook 'gnus-article-display-hook 'gnus-article-hide-headers-if-wanted) *************** *** 1174,1179 **** --- 1017,1025 ---- If it is a string, the command will be executed in a sub-shell asynchronously. The compressed face will be piped to this command.") + (defvar gnus-article-x-face-too-ugly nil + "Regexp matching posters whose face shouldn't be shown automatically.") + (defvar gnus-select-group-hook nil "*A hook called when a newsgroup is selected. *************** *** 1226,1241 **** The default hook (`gnus-inews-insert-signature') inserts a signature file specified by the variable `gnus-signature-file'.") - (defvar gnus-inews-article-hook (list 'gnus-inews-do-fcc) - "*A hook called before finally posting an article. - The default hook (`gnus-inews-do-fcc') does FCC processing (ie. saves - the article to a file).") - - (defvar gnus-inews-article-header-hook nil - "*A hook called after inserting the headers in an article to be posted. - The hook is called from the *post-news* buffer, narrowed to the - headers.") - (defvar gnus-exit-group-hook nil "*A hook called when exiting (not quitting) summary mode.") --- 1072,1077 ---- *************** *** 1262,1270 **** The hook is intended to mark an article as read (or unread) automatically when it is selected.") - (defvar gnus-hidden-properties '(invisible t intangible t) - "Property list to use for hiding text.") - ;; Internal variables --- 1098,1103 ---- *************** *** 1331,1337 **** (list ?\] 'closing-bracket ?c) (list ?\> '(make-string level ? ) ?s) (list ?\< '(make-string (max 0 (- 20 level)) ? ) ?s) ! (list ?i 'score ?s) (list ?z 'score-char ?c) (list ?U 'unread ?c) (list ?t '(gnus-summary-number-of-articles-in-thread --- 1164,1170 ---- (list ?\] 'closing-bracket ?c) (list ?\> '(make-string level ? ) ?s) (list ?\< '(make-string (max 0 (- 20 level)) ? ) ?s) ! (list ?i 'score ?d) (list ?z 'score-char ?c) (list ?U 'unread ?c) (list ?t '(gnus-summary-number-of-articles-in-thread *************** *** 1376,1382 **** (defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls & Boys)" "The mail address of the Gnus maintainer.") ! (defconst gnus-version "(ding) Gnus v0.70" "Version number for this version of Gnus.") (defvar gnus-info-nodes --- 1209,1215 ---- (defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls & Boys)" "The mail address of the Gnus maintainer.") ! (defconst gnus-version "(ding) Gnus v0.71" "Version number for this version of Gnus.") (defvar gnus-info-nodes *************** *** 1566,1571 **** --- 1399,1424 ---- gnus-newsgroup-adaptive) "Variables that are buffer-local to the summary buffers.") + (defconst gnus-bug-message + "Sending a bug report to the Gnus Towers. + ======================================== + + The buffer below is a mail buffer. When you press `C-c C-c', it will + be sent to the Gnus Bug Exterminators. + + At the bottom of the buffer you'll see lots of variable settings. + Please do not delete those. They will tell the Bug People what your + environment is, so that it will be easier to locate the bugs. + + If you have found a bug that makes Emacs go \"beep\", set + debug-on-error to t (`M-ESC (setq debug-on-error t)') and include the + backtrace in your bug report. + + Please describe the bug in annoying, painstaking detail. + + Thank you for your help in stamping out bugs. + ") + ;;; End of variables. ;; Define some autoload functions Gnus might use. *************** *** 1577,1584 **** --- 1430,1440 ---- (autoload 'hexl-hex-string-to-integer "hexl") (autoload 'pp "pp") (autoload 'pp-to-string "pp") + (autoload 'pp-eval-expression "pp") (autoload 'mail-extract-address-components "mail-extr") + (autoload 'nnmail-split-fancy "nnmail") + ;; timezone (autoload 'timezone-make-date-arpa-standard "timezone") (autoload 'timezone-fix-time "timezone") *************** *** 1649,1656 **** (autoload 'gnus-jog-cache "gnus-cache" nil t) ;; gnus-score ! (autoload 'gnus-summary-increase-map "gnus-score" nil nil 'keymap) ! (autoload 'gnus-summary-lower-map "gnus-score" nil nil 'keymap) (autoload 'gnus-summary-score-map "gnus-score" nil nil 'keymap) (autoload 'gnus-score-save "gnus-score") (autoload 'gnus-score-headers "gnus-score") --- 1505,1512 ---- (autoload 'gnus-jog-cache "gnus-cache" nil t) ;; gnus-score ! (autoload 'gnus-summary-increase-score "gnus-score" nil t) ! (autoload 'gnus-summary-lower-score "gnus-score" nil t) (autoload 'gnus-summary-score-map "gnus-score" nil nil 'keymap) (autoload 'gnus-score-save "gnus-score") (autoload 'gnus-score-headers "gnus-score") *************** *** 1699,1704 **** --- 1555,1562 ---- (autoload 'gnus-mail-send-and-exit "gnus-msg") (autoload 'gnus-mail-forward-using-mail "gnus-msg") (autoload 'gnus-mail-other-window-using-mail "gnus-msg") + (autoload 'gnus-article-mail-with-original "gnus-msg") + (autoload 'gnus-article-mail "gnus-msg") ;; gnus-vm (autoload 'gnus-summary-save-in-vm "gnus-vm" nil t) *************** *** 2162,2175 **** "Make hierarchical directory name from NEWSGROUP name." (let ((newsgroup (substring newsgroup 0)) ;Copy string. (len (length newsgroup)) ! (idx 0)) ;; Replace all occurrences of `.' with `/'. (while (< idx len) (if (= (aref newsgroup idx) ?.) (aset newsgroup idx ?/)) (setq idx (1+ idx))) ! newsgroup ! )) (defun gnus-make-directory (dir) "Make DIRECTORY recursively." --- 2020,2037 ---- "Make hierarchical directory name from NEWSGROUP name." (let ((newsgroup (substring newsgroup 0)) ;Copy string. (len (length newsgroup)) ! idx) ! ;; If this is a foreign group, we don't want to translate the ! ;; entire name. ! (if (setq idx (string-match ":" newsgroup)) ! (aset newsgroup idx ?/) ! (setq idx 0)) ;; Replace all occurrences of `.' with `/'. (while (< idx len) (if (= (aref newsgroup idx) ?.) (aset newsgroup idx ?/)) (setq idx (1+ idx))) ! newsgroup)) (defun gnus-make-directory (dir) "Make DIRECTORY recursively." *************** *** 2453,2460 **** buf) (while buffers (setq buf (cdr (car buffers))) ! (and (symbolp buf) (setq buf (symbol-value buf))) ! (and buf (get-buffer-window buf) (progn (set-buffer buf) (if first --- 2315,2324 ---- buf) (while buffers (setq buf (cdr (car buffers))) ! (if (symbolp buf) ! (setq buf (and (boundp buf) (symbol-value buf)))) ! (and buf ! (get-buffer-window buf) (progn (set-buffer buf) (if first *************** *** 2495,2500 **** --- 2359,2369 ---- "Send a bug report to the Gnus maintainers." (interactive) (let ((winconf (current-window-configuration))) + (delete-other-windows) + (switch-to-buffer "*Gnus Bug Help*") + (erase-buffer) + (insert gnus-bug-message) + (goto-char (point-min)) (pop-to-buffer "*Gnus Bug*") (erase-buffer) (mail-mode) *************** *** 2514,2549 **** "Attemps to go through the Gnus source file and report what variables have been changed. The source file has to be in the Emacs load path." (interactive) ! (let ((dirs load-path) ! file expr olist) ! (while dirs ! (if (file-exists-p (setq file (concat (car dirs) "/gnus.el"))) ! (save-excursion (setq dirs nil) - (set-buffer (get-buffer-create "*gnus bug info*")) - (buffer-disable-undo (current-buffer)) - (erase-buffer) (insert-file-contents file) (goto-char (point-min)) ! (or (search-forward "\n;; Internal variables" nil t) ! (error "Malformed sources")) (narrow-to-region (point-min) (point)) (goto-char (point-min)) (while (setq expr (condition-case () (read (current-buffer)) (error nil))) (and (eq (car expr) 'defvar) (stringp (nth 3 expr)) ! (not (equal (eval (nth 2 expr)) ! (and (boundp (nth 1 expr)) ! (symbol-value (nth 1 expr))))) ! (setq olist (cons (nth 1 expr) olist)))) ! (kill-buffer (current-buffer))) ! (setq dirs (cdr dirs)))) (while olist (if (boundp (car olist)) ! (insert "(setq " (symbol-name (car olist)) " '" ! (prin1-to-string (symbol-value (car olist))) ")\n") ! (insert ";; (makeunbound '" (symbol-name (car olist)) ")\n")) (setq olist (cdr olist))) (insert "\n\n"))) --- 2383,2426 ---- "Attemps to go through the Gnus source file and report what variables have been changed. The source file has to be in the Emacs load path." (interactive) ! (let ((files '("gnus.el" "gnus-msg.el" "gnus-score.el")) ! file dirs expr olist) ! (save-excursion ! (set-buffer (get-buffer-create " *gnus bug info*")) ! (buffer-disable-undo (current-buffer)) ! (message "Please wait while we snoop your variables...") ! (sit-for 0) ! (while files ! (erase-buffer) ! (setq dirs load-path) ! (while dirs ! (if (not (file-exists-p ! (setq file (concat (file-name-as-directory ! (car dirs)) (car files))))) ! (setq dirs (cdr dirs)) (setq dirs nil) (insert-file-contents file) (goto-char (point-min)) ! (or (re-search-forward "^;;* Internal variables" nil t) ! (error "Malformed sources in file %s" file)) (narrow-to-region (point-min) (point)) (goto-char (point-min)) (while (setq expr (condition-case () (read (current-buffer)) (error nil))) (and (eq (car expr) 'defvar) (stringp (nth 3 expr)) ! (or (not (boundp (nth 1 expr))) ! (not (equal (eval (nth 2 expr)) ! (symbol-value (nth 1 expr))))) ! (setq olist (cons (nth 1 expr) olist)))))) ! (setq files (cdr files))) ! (kill-buffer (current-buffer))) ! (insert "------------------- Environment follows -------------------\n\n") (while olist (if (boundp (car olist)) ! (insert "(setq " (symbol-name (car olist)) " '" ! (prin1-to-string (symbol-value (car olist))) ")\n") ! (insert ";; (makeunbound '" (symbol-name (car olist)) ")\n")) (setq olist (cdr olist))) (insert "\n\n"))) *************** *** 3493,3500 **** gnus-group-mode-line-format-alist)))) (news-server (car (cdr gnus-select-method))) (news-method (car gnus-select-method)) ! (mode-string (eval gformat)) ! (max-len 60)) (if (> (length mode-string) max-len) (setq mode-string (substring mode-string 0 (- max-len 4)))) (setq mode-line-buffer-identification mode-string) --- 3370,3378 ---- gnus-group-mode-line-format-alist)))) (news-server (car (cdr gnus-select-method))) (news-method (car gnus-select-method)) ! (max-len 60) ! (mode-string (eval gformat))) ! (setq mode-string (eval gformat)) (if (> (length mode-string) max-len) (setq mode-string (substring mode-string 0 (- max-len 4)))) (setq mode-line-buffer-identification mode-string) *************** *** 3957,3972 **** (while (not (equal "" (setq regexp (read-string (format "Match on %s (string): " header))))) ! (setq regexps (cons (list regexp nil 1000 nil) regexps))) (setq scores (cons (cons header regexps) scores))) ! (car scores)))) (gnus-group-make-group group "nnkiboze" address) (save-excursion (gnus-set-work-buffer) (let (emacs-lisp-mode-hook) ! (pp (list 'setq 'gnus-score-alist ! (list 'quote (list scores))) ! (current-buffer))) (write-region (point-min) (point-max) (concat (or gnus-kill-files-directory "~/News") "nnkiboze:" group "." gnus-score-file-suffix))) --- 3835,3848 ---- (while (not (equal "" (setq regexp (read-string (format "Match on %s (string): " header))))) ! (setq regexps (cons (list regexp nil nil 'r) regexps))) (setq scores (cons (cons header regexps) scores))) ! scores))) (gnus-group-make-group group "nnkiboze" address) (save-excursion (gnus-set-work-buffer) (let (emacs-lisp-mode-hook) ! (pp scores (current-buffer))) (write-region (point-min) (point-max) (concat (or gnus-kill-files-directory "~/News") "nnkiboze:" group "." gnus-score-file-suffix))) *************** *** 4667,4673 **** (set-buffer nntp-server-buffer) (let ((cur (current-buffer))) (goto-char (point-min)) ! (delete-matching-lines gnus-ignored-newsgroups) (while (re-search-forward "\\(^[^ \t]+\\)[ \t]+[0-9]+[ \t]+[0-9]+" nil t) (goto-char (match-end 1)) --- 4543,4550 ---- (set-buffer nntp-server-buffer) (let ((cur (current-buffer))) (goto-char (point-min)) ! (or (string= gnus-ignored-newsgroups "") ! (delete-matching-lines gnus-ignored-newsgroups)) (while (re-search-forward "\\(^[^ \t]+\\)[ \t]+[0-9]+[ \t]+[0-9]+" nil t) (goto-char (match-end 1)) *************** *** 5046,5051 **** --- 4923,4929 ---- (define-key gnus-summary-backend-map "r" 'gnus-summary-respool-article) (define-key gnus-summary-backend-map "w" 'gnus-summary-edit-article) (define-key gnus-summary-backend-map "c" 'gnus-summary-copy-article) + (define-key gnus-summary-backend-map "q" 'gnus-summary-fancy-query) (define-prefix-command 'gnus-summary-save-map) *************** *** 5083,5090 **** (define-key gnus-summary-sort-map "d" 'gnus-summary-sort-by-date) (define-key gnus-summary-sort-map "i" 'gnus-summary-sort-by-score) ! (define-key gnus-summary-mode-map "I" 'gnus-summary-increase-map) ! (define-key gnus-summary-mode-map "L" 'gnus-summary-lower-map) ) --- 4961,4968 ---- (define-key gnus-summary-sort-map "d" 'gnus-summary-sort-by-date) (define-key gnus-summary-sort-map "i" 'gnus-summary-sort-by-score) ! (define-key gnus-summary-mode-map "I" 'gnus-summary-increase-score) ! (define-key gnus-summary-mode-map "L" 'gnus-summary-lower-score) ) *************** *** 5132,5144 **** (setq major-mode 'gnus-summary-mode) (setq mode-name "Summary") (make-local-variable 'minor-mode-alist) - (gnus-set-mode-line 'summary) (use-local-map gnus-summary-mode-map) (buffer-disable-undo (current-buffer)) (setq buffer-read-only t) ;Disable modification (setq truncate-lines t) (setq selective-display t) (setq selective-display-ellipses t) ;Display `...' (run-hooks 'gnus-summary-mode-hook)) (defun gnus-summary-clear-local-variables () --- 5010,5031 ---- (setq major-mode 'gnus-summary-mode) (setq mode-name "Summary") (make-local-variable 'minor-mode-alist) (use-local-map gnus-summary-mode-map) (buffer-disable-undo (current-buffer)) (setq buffer-read-only t) ;Disable modification (setq truncate-lines t) (setq selective-display t) (setq selective-display-ellipses t) ;Display `...' + ;; Change the display table. Odd characters have a tendency to mess + ;; up nicely formatted displays. + (setq buffer-display-table (copy-sequence standard-display-table)) + (let ((i 32)) + (while (>= (setq i (1- i)) 0) + (aset buffer-display-table i [??]))) + (aset buffer-display-table ?\n nil) + (let ((i 160)) + (while (>= (setq i (1- i)) 127) + (aset buffer-display-table i [??]))) (run-hooks 'gnus-summary-mode-hook)) (defun gnus-summary-clear-local-variables () *************** *** 5168,5173 **** --- 5055,5061 ---- (gnus-add-current-to-buffer-list) (gnus-summary-mode) (and gnus-carpal (gnus-carpal-setup-buffer 'summary)) + (setq gnus-newsgroup-name group) t))) (defun gnus-set-global-variables () *************** *** 5305,5311 **** (not (equal (current-buffer) kill-buffer)) (progn (kill-buffer (current-buffer)) ! (switch-to-buffer gnus-group-buffer) (gnus-group-next-unread-group 1))) nil) ((eq did-select 'quit) --- 5193,5199 ---- (not (equal (current-buffer) kill-buffer)) (progn (kill-buffer (current-buffer)) ! (set-buffer gnus-group-buffer) (gnus-group-next-unread-group 1))) nil) ((eq did-select 'quit) *************** *** 6550,6573 **** (defun gnus-article-get-xrefs () "Fill in the Xref value in `gnus-current-headers', if necessary. This is meant to be called in `gnus-article-internal-prepare-hook'." ! (or (not gnus-use-cross-reference) ! (and (header-xref gnus-current-headers) ! (not (string= (header-xref gnus-current-headers) ""))) ! (let ((case-fold-search t) ! xref) ! (save-restriction ! (gnus-narrow-to-headers) ! (goto-char (point-min)) ! (if (or (and (eq (downcase (following-char)) ?x) ! (looking-at "Xref:")) ! (search-forward "\nXref:" nil t)) ! (progn ! (goto-char (1+ (match-end 0))) ! (setq xref (buffer-substring (point) ! (progn (end-of-line) (point)))) ! (save-excursion ! (set-buffer gnus-summary-buffer) ! (header-set-xref gnus-current-headers xref)))))))) (defalias 'gnus-find-header-by-number 'gnus-get-header-by-number) (make-obsolete 'gnus-find-header-by-number 'gnus-get-header-by-number) --- 6438,6461 ---- (defun gnus-article-get-xrefs () "Fill in the Xref value in `gnus-current-headers', if necessary. This is meant to be called in `gnus-article-internal-prepare-hook'." ! (let ((headers (save-excursion (set-buffer gnus-summary-buffer) ! gnus-current-headers))) ! (or (not gnus-use-cross-reference) ! (and (header-xref headers) ! (not (string= (header-xref headers) ""))) ! (let ((case-fold-search t) ! xref) ! (save-restriction ! (gnus-narrow-to-headers) ! (goto-char (point-min)) ! (if (or (and (eq (downcase (following-char)) ?x) ! (looking-at "Xref:")) ! (search-forward "\nXref:" nil t)) ! (progn ! (goto-char (1+ (match-end 0))) ! (setq xref (buffer-substring (point) ! (progn (end-of-line) (point)))) ! (header-set-xref headers xref)))))))) (defalias 'gnus-find-header-by-number 'gnus-get-header-by-number) (make-obsolete 'gnus-find-header-by-number 'gnus-get-header-by-number) *************** *** 6767,6791 **** gnus-summary-default-score 0)) ;; Written by Sudish Joseph . - (defun gnus-summary-recenter-new () - "Center point in the summary window. - If `gnus-auto-center-summary' is nil, or the article buffer isn't - displayed, no centering will be performed." - ;; Suggested by earle@mahendo.JPL.NASA.GOV (Greg Earle). - ;; Recenter only when requested. Suggested by popovich@park.cs.columbia.edu. - (sit-for 0) - (and gnus-auto-center-summary - (get-buffer-window gnus-article-buffer) - (let* ((height (window-height)) - (w-end (window-end)) - (top (cond ((< height 4) 0) - ((< height 6) 1) - (t 2)))) - (and (= w-end (point-max)) - ;; adjust for blank lines at the bottom of the window - (setq top (+ (count-lines (window-start) (point)) - (- height (count-lines (window-start) w-end) 2)))) - (recenter top)))) (defun gnus-summary-recenter () "Center point in the summary window. --- 6655,6660 ---- *************** *** 6813,6834 **** window (min bottom (save-excursion (forward-line (- top)) (point))))))) ;; Function written by Stainless Steel Rat . ! (defun gnus-short-group-name (newsgroup) ! "Convert a long group name to an initialized form. ! The last part of the name is left intact: \"rec.arts.anime\" becomes ! \"r.a.anime\"." ! (let ((name "")) ! (while newsgroup ! (if (string-match "\\." newsgroup) ! (progn ! (setq name (concat name (substring newsgroup 0 1)) ! newsgroup (substring newsgroup (match-end 0)) ! name (concat name "."))) ! (setq name (concat name newsgroup) ! newsgroup nil))) name)) - (defun gnus-summary-jump-to-group (newsgroup) "Move point to NEWSGROUP in group mode buffer." ;; Keep update point of group mode buffer if visible. --- 6682,6704 ---- window (min bottom (save-excursion (forward-line (- top)) (point))))))) ;; Function written by Stainless Steel Rat . ! (defun gnus-short-group-name (group &optional levels) ! "Collapse GROUP name LEVELS." ! (let ((name "") (foreign "") ! (levels (or levels 2))) ! (if (string-match ":" group) ! (setq foreign (substring group 0 (match-end 0)) ! group (substring group (match-end 0)))) ! (while group ! (if (and (string-match "\\." group) (> levels 0)) ! (setq name (concat name (substring group 0 1)) ! group (substring group (match-end 0)) ! levels (- levels 1) ! name (concat name ".")) ! (setq name (concat foreign name group) ! group nil))) name)) (defun gnus-summary-jump-to-group (newsgroup) "Move point to NEWSGROUP in group mode buffer." ;; Keep update point of group mode buffer if visible. *************** *** 7121,7128 **** (while (and (string= gnus-newsgroup-name ingroup) (bufferp sumbuf) (buffer-name sumbuf)) (set-buffer gnus-group-buffer) - (gnus-group-next-unread-group 1) - (recenter) (gnus-summary-read-group (gnus-group-group-name) nil no-article buf))))))) --- 6991,6996 ---- *************** *** 7267,7273 **** (and (not pseudo) (gnus-summary-pseudo-article) (error "This is a pseudo-article.")) (let ((article (or article (gnus-summary-article-number))) ! (all-headers (not (not all-headers)))) ;Must be T or NIL. (prog1 (save-excursion (set-buffer gnus-summary-buffer) --- 7135,7142 ---- (and (not pseudo) (gnus-summary-pseudo-article) (error "This is a pseudo-article.")) (let ((article (or article (gnus-summary-article-number))) ! (all-headers (not (not all-headers))) ;Must be T or NIL. ! did) (prog1 (save-excursion (set-buffer gnus-summary-buffer) *************** *** 7280,7302 **** (progn (gnus-summary-display-article article all-headers) (gnus-configure-windows 'article) ! article) (if all-headers (gnus-article-show-all-headers)) (gnus-configure-windows 'article) nil)) ! (let ((bookmark (cdr (assq article gnus-newsgroup-bookmarks)))) ! (set-window-start ! (get-buffer-window gnus-article-buffer) ! (save-excursion ! (set-buffer gnus-article-buffer) ! (goto-char (point-min)) ! (cond (bookmark ! (gnus-message 6 "Moved to bookmark") ! (search-forward "\n\n" nil t) ! (forward-line bookmark) ! (point)) ! (t ! (point-min))))))))) (defun gnus-summary-set-current-mark (&optional current-mark) "Obsolete function." --- 7149,7173 ---- (progn (gnus-summary-display-article article all-headers) (gnus-configure-windows 'article) ! (setq did article)) (if all-headers (gnus-article-show-all-headers)) (gnus-configure-windows 'article) nil)) ! (if (not did) ! () ! (let ((bookmark (cdr (assq article gnus-newsgroup-bookmarks)))) ! (set-window-start ! (get-buffer-window gnus-article-buffer) ! (save-excursion ! (set-buffer gnus-article-buffer) ! (goto-char (point-min)) ! (cond (bookmark ! (gnus-message 6 "Moved to bookmark") ! (search-forward "\n\n" nil t) ! (forward-line bookmark) ! (point)) ! (t ! (point-min)))))))))) (defun gnus-summary-set-current-mark (&optional current-mark) "Obsolete function." *************** *** 7430,7441 **** (lines (gnus-message 3 "End of message")) ((null lines) ! (gnus-summary-next-unread-article)))) ! (and gnus-summary-buffer ! (buffer-name gnus-summary-buffer) ! (progn ! (pop-to-buffer gnus-summary-buffer) ! (gnus-summary-position-cursor)))))) (defun gnus-summary-prev-page (lines) "Show previous page of selected article. --- 7301,7307 ---- (lines (gnus-message 3 "End of message")) ((null lines) ! (gnus-summary-next-unread-article))))))) (defun gnus-summary-prev-page (lines) "Show previous page of selected article. *************** *** 7622,7627 **** --- 7488,7495 ---- (interactive) (gnus-set-global-variables) (gnus-summary-select-article) + ;; We do not want a narrowed article. + (gnus-summary-stop-page-breaking) (let ((name (format "%s/%d" (gnus-group-prefixed-name gnus-newsgroup-name (list 'nndigest "")) *************** *** 7648,7653 **** --- 7516,7522 ---- (defun gnus-summary-isearch-article () "Do incremental search forward on current article." (interactive) + (gnus-set-global-variables) (gnus-summary-select-article) (gnus-eval-in-buffer-window gnus-article-buffer (isearch-forward))) *************** *** 7660,7665 **** --- 7529,7535 ---- (concat "Search forward (regexp): " (if gnus-last-search-regexp (concat "(default " gnus-last-search-regexp ") ")))))) + (gnus-set-global-variables) (if (string-equal regexp "") (setq regexp (or gnus-last-search-regexp "")) (setq gnus-last-search-regexp regexp)) *************** *** 7677,7682 **** --- 7547,7553 ---- (concat "Search backward (regexp): " (if gnus-last-search-regexp (concat "(default " gnus-last-search-regexp ") ")))))) + (gnus-set-global-variables) (if (string-equal regexp "") (setq regexp (or gnus-last-search-regexp "")) (setq gnus-last-search-regexp regexp)) *************** *** 7743,7748 **** --- 7614,7620 ---- (read-string "Regexp: ") (read-key-sequence "Command: ") current-prefix-arg)) + (gnus-set-global-variables) ;; Hidden thread subtrees must be searched as well. (gnus-summary-show-all-threads) ;; We don't want to change current point nor window configuration. *************** *** 7759,7764 **** --- 7631,7637 ---- (defun gnus-summary-beginning-of-article () "Scroll the article back to the beginning." (interactive) + (gnus-set-global-variables) (gnus-summary-select-article) (gnus-eval-in-buffer-window gnus-article-buffer *************** *** 7769,7774 **** --- 7642,7648 ---- (defun gnus-summary-end-of-article () "Scroll to the end of the article." (interactive) + (gnus-set-global-variables) (gnus-summary-select-article) (gnus-eval-in-buffer-window gnus-article-buffer *************** *** 7779,7784 **** --- 7653,7659 ---- (defun gnus-summary-show-article () "Force re-fetching of the current article." (interactive) + (gnus-set-global-variables) (gnus-summary-select-article gnus-have-all-headers t)) (defun gnus-summary-toggle-header (arg) *************** *** 7804,7815 **** --- 7679,7692 ---- (defun gnus-summary-show-all-headers () "Make all header lines visible." (interactive) + (gnus-set-global-variables) (gnus-article-show-all-headers)) (defun gnus-summary-toggle-mime (arg) "Toggle MIME processing. If ARG is a positive number, turn MIME processing on." (interactive "P") + (gnus-set-global-variables) (setq gnus-show-mime (if (null arg) (not gnus-show-mime) (> (prefix-numeric-value arg) 0))) *************** *** 7820,7825 **** --- 7697,7703 ---- With prefix arg, specifies the number of places to rotate each letter forward. Caesar rotates Japanese letters by 47 places in any case." (interactive "P") + (gnus-set-global-variables) (gnus-summary-select-article) (let ((mail-header-separator "")) ; !!! Is this necessary? (gnus-overload-functions) *************** *** 7838,7843 **** --- 7716,7722 ---- (defun gnus-summary-stop-page-breaking () "Stop page breaking in the current article." (interactive) + (gnus-set-global-variables) (gnus-summary-select-article) (gnus-eval-in-buffer-window gnus-article-buffer (widen))) *************** *** 8140,8145 **** --- 8019,8036 ---- (setq buffer-read-only t) (pop-to-buffer gnus-summary-buffer))) + (defun gnus-summary-fancy-query () + "Query where the fancy respool algorithm would put this article." + (interactive) + (gnus-summary-select-article) + (save-excursion + (set-buffer gnus-article-buffer) + (save-restriction + (goto-char (point-min)) + (search-forward "\n\n") + (narrow-to-region (point-min) (point)) + (pp-eval-expression (list 'quote (nnmail-split-fancy)))))) + ;; Summary score commands. ;; Suggested by boubaker@cenatls.cena.dgac.fr. *************** *** 8174,8179 **** --- 8065,8075 ---- (cons (cons article n) gnus-newsgroup-scored)))) (gnus-summary-update-line))) + (defun gnus-summary-current-score () + "Return the score of the current article." + (interactive) + (message "%s" (gnus-summary-article-score))) + ;; Summary marking commands. (defun gnus-summary-raise-same-subject-and-select (score) *************** *** 8810,8817 **** (if all "Mark absolutely all articles as read? " "Mark all unread articles as read? "))) ! (if (and not-mark (not gnus-newsgroup-adaptive) ! gnus-newsgroup-auto-expire) (progn (and all (setq gnus-newsgroup-marked nil gnus-newsgroup-dormant nil)) --- 8706,8714 ---- (if all "Mark absolutely all articles as read? " "Mark all unread articles as read? "))) ! (if (and not-mark ! (not gnus-newsgroup-adaptive) ! (not gnus-newsgroup-auto-expire)) (progn (and all (setq gnus-newsgroup-marked nil gnus-newsgroup-dormant nil)) *************** *** 9662,9751 **** (save-excursion (gnus-article-setup-buffer) (set-buffer gnus-article-buffer) ! (let ((buffer-read-only nil)) ! (if (not (setq result (gnus-request-article-this-buffer ! article group))) ! ;; There is no such article. (progn (save-excursion ! (set-buffer gnus-summary-buffer) ! (setq gnus-current-article 0) ! (and (numberp article) ! (gnus-summary-mark-as-read article gnus-canceled-mark)) ! (gnus-message 1 "No such article (may be canceled)") ! (and (numberp article) ! (setq gnus-current-article article)) ! (ding)) ! (and (numberp article) ! (setq gnus-article-current ! (cons gnus-newsgroup-name article))) ! nil) ! (if (not (eq result 'article)) ! (progn ! (save-excursion ! (set-buffer summary-buffer) ! (setq gnus-last-article gnus-current-article ! gnus-newsgroup-history (cons gnus-current-article ! gnus-newsgroup-history) ! gnus-current-article 0 ! gnus-current-headers nil ! gnus-article-current nil) ! (gnus-configure-windows 'article) ! (gnus-set-global-variables)) ! (gnus-set-mode-line 'article)) ! ;; The result from the `request' was an actual article - ! ;; or at least some text that is now displayed in the ! ;; article buffer. ! (if (and (numberp article) ! (not (eq article gnus-current-article))) ! ;; Seems like a new article has been selected. ! ;; `gnus-current-article' must be an article number. ! (save-excursion ! (set-buffer summary-buffer) ! (setq gnus-last-article gnus-current-article ! gnus-newsgroup-history (cons gnus-current-article ! gnus-newsgroup-history) ! gnus-current-article article ! gnus-current-headers ! (gnus-get-header-by-number gnus-current-article) ! gnus-article-current ! (cons gnus-newsgroup-name gnus-current-article)) ! (run-hooks 'gnus-mark-article-hook) ! (gnus-set-mode-line 'summary) ! (and gnus-visual ! (run-hooks 'gnus-visual-mark-article-hook)) ! ;; Set the global newsgroup variables here. ! ;; Suggested by Jim Sisolak ! ;; . ! (gnus-set-global-variables) ! (and gnus-use-cache ! (gnus-cache-possibly-enter-article ! group article ! (gnus-get-header-by-number article) ! (memq article gnus-newsgroup-marked) ! (memq article gnus-newsgroup-dormant) ! (memq article gnus-newsgroup-unreads))))) ! ;; gnus-have-all-headers must be either T or NIL. ! (setq gnus-have-all-headers ! (not (not (or all-headers gnus-show-all-headers)))) ! ;; Hooks for getting information from the article. ! ;; This hook must be called before being narrowed. ! (run-hooks 'internal-hook) ! (run-hooks 'gnus-article-prepare-hook) ! ;; Decode MIME message. ! (if (and gnus-show-mime ! (gnus-fetch-field "Mime-Version")) ! (funcall gnus-show-mime-method)) ! ;; Perform the article display hooks. ! (let ((buffer-read-only nil)) ! (run-hooks 'gnus-article-display-hook)) ! ;; Do page break. ! (goto-char (point-min)) ! (and gnus-break-pages (gnus-narrow-to-page)) ! (gnus-set-mode-line 'article) ! (gnus-configure-windows 'article) ! (goto-char (point-min)) ! t))))))) (defun gnus-article-show-all-headers () "Show all article headers in article mode buffer." --- 9559,9648 ---- (save-excursion (gnus-article-setup-buffer) (set-buffer gnus-article-buffer) ! (if (not (setq result (let ((buffer-read-only nil)) ! (gnus-request-article-this-buffer ! article group)))) ! ;; There is no such article. ! (progn ! (save-excursion ! (set-buffer gnus-summary-buffer) ! (setq gnus-current-article 0) ! (and (numberp article) ! (gnus-summary-mark-as-read article gnus-canceled-mark)) ! (gnus-message 1 "No such article (may be canceled)") ! (and (numberp article) ! (setq gnus-current-article article)) ! (ding)) ! (and (numberp article) ! (setq gnus-article-current ! (cons gnus-newsgroup-name article))) ! nil) ! (if (not (eq result 'article)) (progn (save-excursion ! (set-buffer summary-buffer) ! (setq gnus-last-article gnus-current-article ! gnus-newsgroup-history (cons gnus-current-article ! gnus-newsgroup-history) ! gnus-current-article 0 ! gnus-current-headers nil ! gnus-article-current nil) ! (gnus-configure-windows 'article) ! (gnus-set-global-variables)) ! (gnus-set-mode-line 'article)) ! ;; The result from the `request' was an actual article - ! ;; or at least some text that is now displayed in the ! ;; article buffer. ! (if (and (numberp article) ! (not (eq article gnus-current-article))) ! ;; Seems like a new article has been selected. ! ;; `gnus-current-article' must be an article number. ! (save-excursion ! (set-buffer summary-buffer) ! (setq gnus-last-article gnus-current-article ! gnus-newsgroup-history (cons gnus-current-article ! gnus-newsgroup-history) ! gnus-current-article article ! gnus-current-headers ! (gnus-get-header-by-number gnus-current-article) ! gnus-article-current ! (cons gnus-newsgroup-name gnus-current-article)) ! (run-hooks 'gnus-mark-article-hook) ! (gnus-set-mode-line 'summary) ! (and gnus-visual ! (run-hooks 'gnus-visual-mark-article-hook)) ! ;; Set the global newsgroup variables here. ! ;; Suggested by Jim Sisolak ! ;; . ! (gnus-set-global-variables) ! (and gnus-use-cache ! (gnus-cache-possibly-enter-article ! group article ! (gnus-get-header-by-number article) ! (memq article gnus-newsgroup-marked) ! (memq article gnus-newsgroup-dormant) ! (memq article gnus-newsgroup-unreads))))) ! ;; gnus-have-all-headers must be either T or NIL. ! (setq gnus-have-all-headers ! (not (not (or all-headers gnus-show-all-headers)))) ! ;; Hooks for getting information from the article. ! ;; This hook must be called before being narrowed. ! (run-hooks 'internal-hook) ! (run-hooks 'gnus-article-prepare-hook) ! ;; Decode MIME message. ! (if (and gnus-show-mime ! (gnus-fetch-field "Mime-Version")) ! (funcall gnus-show-mime-method)) ! ;; Perform the article display hooks. ! (let ((buffer-read-only nil)) ! (run-hooks 'gnus-article-display-hook)) ! ;; Do page break. ! (goto-char (point-min)) ! (and gnus-break-pages (gnus-narrow-to-page)) ! (gnus-set-mode-line 'article) ! (gnus-configure-windows 'article) ! (goto-char (point-min)) ! t)))))) (defun gnus-article-show-all-headers () "Show all article headers in article mode buffer." *************** *** 9881,9906 **** (while (search-forward "\r" nil t) (replace-match "" t t))))) ! (defun gnus-article-display-x-face () "Look for an X-Face header and display it if present." ! (interactive) (save-excursion (set-buffer gnus-article-buffer) ! (goto-char (point-min)) ! (if (or (not gnus-article-x-face-command) ! (and (re-search-forward "^\\($\\|X-Face: \\)" nil t) ! (looking-at "^$"))) ! nil ! (let ((beg (point)) ! (end (1- (re-search-forward "^\\($\\|[^ \t]\\)" nil t)))) ! (if (symbolp gnus-article-x-face-command) ! (and (or (fboundp gnus-article-x-face-command) ! (error "%s is not a function" ! gnus-article-x-face-command)) ! (funcall gnus-article-x-face-command beg end)) ! (call-process-region beg end "sh" nil 0 nil ! "-c" gnus-article-x-face-command)))))) ! (defun gnus-article-de-quoted-unreadable (&optional force) "Do a naïve translation of a quoted-printable-encoded article. This is in no way, shape or form meant as a replacement for real MIME --- 9778,9814 ---- (while (search-forward "\r" nil t) (replace-match "" t t))))) ! (defun gnus-article-display-x-face (&optional force) "Look for an X-Face header and display it if present." ! (interactive (list 'force)) (save-excursion (set-buffer gnus-article-buffer) ! (let ((inhibit-point-motion-hooks t) ! (case-fold-search nil)) ! (save-restriction ! (goto-char (point-min)) ! (search-forward "\n\n") ! (narrow-to-region (point-min) (point)) ! (goto-char (point-min)) ! (if (or (not gnus-article-x-face-command) ! (and (not force) ! (or (not gnus-article-x-face-too-ugly) ! (string-match gnus-article-x-face-too-ugly ! (mail-fetch-field "from")))) ! (progn ! (goto-char (point-min)) ! (not (re-search-forward "^X-Face: " nil t)))) ! nil ! (let ((beg (point)) ! (end (1- (re-search-forward "^\\($\\|[^ \t]\\)" nil t)))) ! (if (symbolp gnus-article-x-face-command) ! (and (or (fboundp gnus-article-x-face-command) ! (error "%s is not a function" ! gnus-article-x-face-command)) ! (funcall gnus-article-x-face-command beg end)) ! (call-process-region beg end "sh" nil 0 nil ! "-c" gnus-article-x-face-command)))))))) ! (defun gnus-article-de-quoted-unreadable (&optional force) "Do a naïve translation of a quoted-printable-encoded article. This is in no way, shape or form meant as a replacement for real MIME *************** *** 9935,9941 **** (delete-char 2)) ((gnus-message 3 "Malformed MIME quoted-printable message")))))) - (defun gnus-article-date-ut (&optional type) "Convert DATE date to universal time in the current article. If TYPE is `local', convert to local time; if it is `lapsed', output --- 9843,9848 ---- *************** *** 9943,9957 **** (interactive (list 'ut)) (let ((date (header-date (or gnus-current-headers (gnus-get-header-by-number ! (gnus-summary-article-number)))))) (save-excursion (set-buffer gnus-article-buffer) (let ((buffer-read-only nil)) (goto-char (point-min)) ! (if (re-search-forward "^Date: \\|^X-Sent: " nil t) (delete-region (gnus-point-at-bol) ! (progn (forward-line 1) (point))) ! (- (search-forward "\n\n") 2)) (insert (cond ((eq type 'local) --- 9850,9869 ---- (interactive (list 'ut)) (let ((date (header-date (or gnus-current-headers (gnus-get-header-by-number ! (gnus-summary-article-number))))) ! (date-regexp "^Date: \\|^X-Sent: ")) (save-excursion (set-buffer gnus-article-buffer) (let ((buffer-read-only nil)) (goto-char (point-min)) ! (if (and (re-search-forward date-regexp nil t) ! (progn ! (beginning-of-line) ! (looking-at date-regexp))) (delete-region (gnus-point-at-bol) ! (progn (end-of-line) (1+ (point)))) ! (goto-char (point-min)) ! (goto-char (- (search-forward "\n\n") 2))) (insert (cond ((eq type 'local) *************** *** 10191,10214 **** (gnus-summary-refer-article message-id)) (error "No references around point"))) - (defun gnus-article-mail (yank) - "Send a reply to the address near point. - If YANK is non-nil, include the original article." - (interactive "P") - (let ((address - (buffer-substring - (save-excursion (re-search-backward "[ \t\n]" nil t) (1+ (point))) - (save-excursion (re-search-forward "[ \t\n]" nil t) (1- (point)))))) - (and address - (progn - (switch-to-buffer gnus-summary-buffer) - (funcall gnus-mail-reply-method yank address))))) - - (defun gnus-article-mail-with-original () - "Send a reply to the address near point and include the original article." - (interactive) - (gnus-article-mail 'yank)) - (defun gnus-article-show-summary () "Reconfigure windows to show summary buffer." (interactive) --- 10103,10108 ---- *************** *** 10225,10233 **** "Execute the last keystroke in the summary buffer." (interactive) (let ((obuf (current-buffer)) ! (owin (current-window-configuration))) (switch-to-buffer gnus-summary-buffer 'norecord) ! (execute-kbd-macro (this-command-keys)) (set-buffer obuf) (let ((npoint (point))) (set-window-configuration owin) --- 10119,10129 ---- "Execute the last keystroke in the summary buffer." (interactive) (let ((obuf (current-buffer)) ! (owin (current-window-configuration)) ! func) (switch-to-buffer gnus-summary-buffer 'norecord) ! (setq func (lookup-key (current-local-map) (this-command-keys))) ! (call-interactively func) (set-buffer obuf) (let ((npoint (point))) (set-window-configuration owin) *************** *** 10237,10245 **** "Execute the last keystroke in the summary buffer." (interactive) (let ((obuf (current-buffer)) ! (owin (current-window-configuration))) (switch-to-buffer gnus-summary-buffer 'norecord) ! (execute-kbd-macro (this-command-keys)))) ;; caesar-region written by phr@prep.ai.mit.edu Nov 86 ;; Modified by tower@prep Nov 86 --- 10133,10143 ---- "Execute the last keystroke in the summary buffer." (interactive) (let ((obuf (current-buffer)) ! (owin (current-window-configuration)) ! func) (switch-to-buffer gnus-summary-buffer 'norecord) ! (setq func (lookup-key (current-local-map) (this-command-keys))) ! (call-interactively func))) ;; caesar-region written by phr@prep.ai.mit.edu Nov 86 ;; Modified by tower@prep Nov 86 *************** *** 11101,11107 **** (setq groups (cdr groups))) (gnus-group-make-help-group) (and gnus-novice-user ! (gnus-message 7 "`G k' to list killed groups")))))) ;; `gnus-group-change-level' is the fundamental function for changing ;; subscription levels of newsgroups. This might mean just changing --- 10999,11005 ---- (setq groups (cdr groups))) (gnus-group-make-help-group) (and gnus-novice-user ! (gnus-message 7 "`A k' to list killed groups")))))) ;; `gnus-group-change-level' is the fundamental function for changing ;; subscription levels of newsgroups. This might mean just changing *************** *** 11195,11203 **** (setq p (cdr p))) p))) (setq entry (cons info (cdr (cdr previous)))) ! (setcdr (cdr previous) entry) ! (gnus-sethash group (cons num (cdr previous)) ! gnus-newsrc-hashtb) (if (cdr entry) (setcdr (gnus-gethash (car (car (cdr entry))) gnus-newsrc-hashtb) --- 11093,11106 ---- (setq p (cdr p))) p))) (setq entry (cons info (cdr (cdr previous)))) ! (if (cdr previous) ! (progn ! (setcdr (cdr previous) entry) ! (gnus-sethash group (cons num (cdr previous)) ! gnus-newsrc-hashtb)) ! (setcdr previous entry) ! (gnus-sethash group (cons num previous) ! gnus-newsrc-hashtb)) (if (cdr entry) (setcdr (gnus-gethash (car (car (cdr entry))) gnus-newsrc-hashtb) *************** *** 11579,11589 **** (gnus-message 5 "%s...done" mesg))))) (setq methods (cdr methods)))))) ! ;; rewritten by jwz based on ideas from Rick Sladkey ! ;; Further rewrites by lmi. (defun gnus-active-to-gnus-format (method &optional hashtb) - "Convert active file format to internal format. - Lines matching `gnus-ignored-newsgroups' are ignored." (let ((cur (current-buffer)) (hashtb (or hashtb (if method --- 11482,11489 ---- (gnus-message 5 "%s...done" mesg))))) (setq methods (cdr methods)))))) ! ;; Read an active file and place the results in `gnus-active-hashtb'. (defun gnus-active-to-gnus-format (method &optional hashtb) (let ((cur (current-buffer)) (hashtb (or hashtb (if method *************** *** 11593,11599 **** (count-lines (point-min) (point-max)))))))) ;; Delete unnecessary lines. (goto-char (point-min)) ! (delete-matching-lines gnus-ignored-newsgroups) (and method (not (eq method gnus-select-method)) (let ((prefix (gnus-group-prefixed-name "" method))) (goto-char (point-min)) --- 11493,11504 ---- (count-lines (point-min) (point-max)))))))) ;; Delete unnecessary lines. (goto-char (point-min)) ! (while (search-forward "\nto." nil t) ! (delete-region (match-beginning 0) (progn (forward-line 1) (point)))) ! (or (string= gnus-ignored-newsgroups "") ! (progn ! (goto-char (point-min)) ! (delete-matching-lines gnus-ignored-newsgroups))) (and method (not (eq method gnus-select-method)) (let ((prefix (gnus-group-prefixed-name "" method))) (goto-char (point-min)) *************** *** 11602,11649 **** (zerop (forward-line 1)))))) (goto-char (point-min)) ;; Store active file in hashtable. ! (save-restriction ! (if (or (re-search-forward "\n.\r?$" nil t) ! (goto-char (point-max))) ! (progn ! (beginning-of-line) ! (narrow-to-region (point-min) (point)))) ! (goto-char (point-min)) ! (if (string-match "%[oO]" gnus-group-line-format) ! ;; Suggested by Brian Edmonds . ! ;; If we want information on moderated groups, we use this ! ;; loop... ! (condition-case () ! (let ((mod-hashtb (make-vector 7 0)) ! group max mod) ! (while (not (eobp)) ! (setq group (let ((obarray hashtb)) ! (read cur))) (setq max (read cur)) (set group (cons (read cur) max)) ;; Enter moderated groups into a list. ! (if (string= ! (symbol-name (let ((obarray mod-hashtb)) (read cur))) ! "m") (setq gnus-moderated-list ! (cons (symbol-name group) gnus-moderated-list))) ! (forward-line 1))) ! (error ! (progn (ding) (gnus-message 3 "Possible error in active file.")))) ! ;; And if we do not care about moderation, we use this loop, ! ;; which is faster. ! (condition-case () ! (let (group max) ! (while (not (eobp)) ;; group gets set to a symbol interned in the hash table ;; (what a hack!!) (setq group (let ((obarray hashtb)) (read cur))) (setq max (read cur)) ! (set group (cons (read cur) max)) ! (forward-line 1))) ! (error ! (progn (ding) ! (gnus-message 3 "Possible error in active file.")))))))) (defun gnus-groups-to-gnus-format (method &optional hashtb) ;; Parse a "groups" active file. --- 11507,11554 ---- (zerop (forward-line 1)))))) (goto-char (point-min)) ;; Store active file in hashtable. ! (goto-char (point-min)) ! (if (string-match "%[oO]" gnus-group-line-format) ! ;; Suggested by Brian Edmonds . ! ;; If we want information on moderated groups, we use this ! ;; loop... ! (let* ((mod-hashtb (make-vector 7 0)) ! (m (intern "m" mod-hashtb)) ! group max mod) ! (while (not (eobp)) ! (condition-case nil ! (progn ! (narrow-to-region (point) (gnus-point-at-eol)) ! (setq group (let ((obarray hashtb)) (read cur))) (setq max (read cur)) (set group (cons (read cur) max)) ;; Enter moderated groups into a list. ! (if (eq (let ((obarray mod-hashtb)) (read cur)) m) (setq gnus-moderated-list ! (cons (symbol-name group) gnus-moderated-list)))) ! (error nil)) ! (widen) ! (forward-line 1))) ! ;; And if we do not care about moderation, we use this loop, ! ;; which is faster. ! (let (group max) ! (while (not (eobp)) ! (condition-case () ! (progn ! (narrow-to-region (point) (gnus-point-at-eol)) ;; group gets set to a symbol interned in the hash table ;; (what a hack!!) (setq group (let ((obarray hashtb)) (read cur))) (setq max (read cur)) ! (set group (cons (read cur) max))) ! (error ! (progn (ding) ! (gnus-message 3 "Illegal active: %s" ! (buffer-substring ! (gnus-point-at-bol) (gnus-point-at-eol))) ! nil))) ! (widen) ! (forward-line 1)))))) (defun gnus-groups-to-gnus-format (method &optional hashtb) ;; Parse a "groups" active file. *************** *** 12540,12545 **** --- 12445,12454 ---- (interactive "e") (mouse-set-point e) (gnus-server-read-server (gnus-server-server-name))) + + ;; Allow redefinition of Gnus functions. + + (gnus-ems-redefine) (provide 'gnus) diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnbabyl.el dgnus/lisp/nnbabyl.el *** pub/dgnus/lisp/nnbabyl.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnbabyl.el Wed May 17 17:02:47 1995 *************** *** 1,4 **** ! ;;; nnbabyl.el --- mail mbox access for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen --- 1,4 ---- ! ;;; nnbabyl.el --- rmail mbox access for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen *************** *** 41,46 **** --- 41,49 ---- (defvar nnbabyl-get-new-mail t "If non-nil, nnbabyl will check the incoming mail file and split the mail.") + (defvar nnbabyl-prepare-save-mail-hook nil + "Hook run narrowed to an article before saving.") + (defvar nnbabyl-mail-delimiter "\^_") *************** *** 185,191 **** (if (nnbabyl-possibly-change-newsgroup group) (if dont-check t ! (nnbabyl-get-new-mail) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) --- 188,194 ---- (if (nnbabyl-possibly-change-newsgroup group) (if dont-check t ! (nnbabyl-get-new-mail group) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) *************** *** 379,385 **** (let ((group-art (nreverse (nnmail-article-group 'nnbabyl-active-number)))) (nnmail-insert-lines) (nnmail-insert-xref group-art) ! (nnbabyl-insert-newsgroup-line group-art))) (defun nnbabyl-insert-newsgroup-line (group-art) (save-excursion --- 382,390 ---- (let ((group-art (nreverse (nnmail-article-group 'nnbabyl-active-number)))) (nnmail-insert-lines) (nnmail-insert-xref group-art) ! (nnbabyl-insert-newsgroup-line group-art) ! (run-hooks 'nnbabyl-prepare-save-mail-hook) ! group-art)) (defun nnbabyl-insert-newsgroup-line (group-art) (save-excursion *************** *** 460,469 **** (and (buffer-modified-p (current-buffer)) (save-buffer)) (nnmail-save-active nnbabyl-group-alist nnbabyl-active-file))))) ! (defun nnbabyl-get-new-mail () "Read new incoming mail." ! (let ((spools (if (listp nnmail-spool-file) nnmail-spool-file ! (list nnmail-spool-file))) incoming incomings) (nnbabyl-read-mbox) (if (or (not nnbabyl-get-new-mail) (not nnmail-spool-file)) --- 465,473 ---- (and (buffer-modified-p (current-buffer)) (save-buffer)) (nnmail-save-active nnbabyl-group-alist nnbabyl-active-file))))) ! (defun nnbabyl-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) incoming incomings) (nnbabyl-read-mbox) (if (or (not nnbabyl-get-new-mail) (not nnmail-spool-file)) diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nndigest.el dgnus/lisp/nndigest.el *** pub/dgnus/lisp/nndigest.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nndigest.el Wed May 17 17:02:48 1995 *************** *** 26,31 **** --- 26,34 ---- (require 'nnheader) + (eval-and-compile + (autoload 'mail-send-and-exit "sendmail")) + (defconst nndigest-version "nndigest 0.0" diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nndir.el dgnus/lisp/nndir.el *** pub/dgnus/lisp/nndir.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nndir.el Wed May 17 17:02:48 1995 *************** *** 29,34 **** --- 29,37 ---- (require 'nnmh) (require 'nnml) + (eval-and-compile + (autoload 'mail-send-and-exit "sendmail")) + (defconst nndir-version "nndir 0.0") diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnfolder.el dgnus/lisp/nnfolder.el *** pub/dgnus/lisp/nnfolder.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnfolder.el Wed May 17 19:24:16 1995 *************** *** 38,44 **** (defvar nnfolder-directory (expand-file-name "~/Mail/") "The name of the mail box file in the users home directory.") ! (defvar nnfolder-active-file (concat nnfolder-directory "active") "The name of the active file.") ;; I renamed this variable to somehting more in keeping with the general GNU --- 38,44 ---- (defvar nnfolder-directory (expand-file-name "~/Mail/") "The name of the mail box file in the users home directory.") ! (defvar nnfolder-active-file (concat nnfolder-directory "active") "The name of the active file.") ;; I renamed this variable to somehting more in keeping with the general GNU *************** *** 66,71 **** --- 66,74 ---- (defvar nnfolder-get-new-mail t "If non-nil, nnml will check the incoming mail file and split the mail.") + (defvar nnfolder-prepare-save-mail-hook nil + "Hook run narrowed to an article before saving.") + (defconst nnfolder-version "nnfolder 0.2" *************** *** 215,221 **** (progn (if dont-check t ! (nnfolder-get-new-mail)) (let* ((active (assoc group nnfolder-group-alist)) (group (car active)) (range (car (cdr active))) --- 218,224 ---- (progn (if dont-check t ! (nnfolder-get-new-mail group)) (let* ((active (assoc group nnfolder-group-alist)) (group (car active)) (range (car (cdr active))) *************** *** 411,420 **** (defun nnfolder-possibly-change-group (group) (or (file-exists-p nnfolder-directory) (make-directory (directory-file-name nnfolder-directory))) ! (if (not nnfolder-group-alist) ! (progn ! (nnfolder-request-list) ! (setq nnfolder-group-alist (nnmail-get-active)))) (or (assoc group nnfolder-group-alist) (not (file-exists-p (concat nnfolder-directory group))) (progn --- 414,420 ---- (defun nnfolder-possibly-change-group (group) (or (file-exists-p nnfolder-directory) (make-directory (directory-file-name nnfolder-directory))) ! (nnfolder-possibly-activate-groups nil) (or (assoc group nnfolder-group-alist) (not (file-exists-p (concat nnfolder-directory group))) (progn *************** *** 467,472 **** --- 467,473 ---- (setq save-list group-art-list) (nnmail-insert-lines) (nnmail-insert-xref group-art-list) + (run-hooks 'nnfolder-prepare-save-mail-hook) ;; Insert the mail into each of the destination groups. (while group-art-list *************** *** 503,517 **** (insert (format (concat nnfolder-article-marker "%d %s\n") (cdr group-art) (current-time-string))))))) ! (defun nnfolder-active-number (group) ! (if (not nnfolder-group-alist) ! (save-excursion ! (nnfolder-request-list) ! (setq nnfolder-group-alist (nnmail-get-active)))) ! (let ((active (car (cdr (assoc group nnfolder-group-alist))))) ! (setcdr active (1+ (cdr active))) ! (cdr active))) ;; This method has a problem if you've accidentally let the active list get ;; out of sync with the files. This could happen, say, if you've --- 504,526 ---- (insert (format (concat nnfolder-article-marker "%d %s\n") (cdr group-art) (current-time-string))))))) ! (defun nnfolder-possibly-activate-groups (&optional group) ! (save-excursion ! ;; If we're looking for the activation of a specific group, find out ! ;; it's real name and switch to it. ! (if group (nnfolder-possibly-change-group (gnus-group-real-name group))) ! ;; If the group alist isn't active, activate it now. ! (if (not nnfolder-group-alist) ! (progn ! (nnfolder-request-list) ! (setq nnfolder-group-alist (nnmail-get-active)))))) + (defun nnfolder-active-number (group) + (save-excursion + (nnfolder-possibly-activate-groups group) + (let ((active (car (cdr (assoc group nnfolder-group-alist))))) + (setcdr active (1+ (cdr active))) + (cdr active)))) ;; This method has a problem if you've accidentally let the active list get ;; out of sync with the files. This could happen, say, if you've *************** *** 530,539 **** (defun nnfolder-read-folder (file) (save-excursion ! (if (not nnfolder-group-alist) ! (progn ! (nnfolder-request-list) ! (setq nnfolder-group-alist (nnmail-get-active)))) ;; We should be paranoid here and make sure the group is in the alist, ;; and add it if it isn't. ;;(if (not (assoc nnfoler-current-group nnfolder-group-alist) --- 539,545 ---- (defun nnfolder-read-folder (file) (save-excursion ! (nnfolder-possibly-activate-groups nil) ;; We should be paranoid here and make sure the group is in the alist, ;; and add it if it isn't. ;;(if (not (assoc nnfoler-current-group nnfolder-group-alist) *************** *** 598,613 **** (nnmail-save-active nnfolder-group-alist nnfolder-active-file) (current-buffer)))) ! (defun nnfolder-get-new-mail () "Read new incoming mail." ! (let ((spools (if (listp nnmail-spool-file) nnmail-spool-file ! (list nnmail-spool-file))) incomings incoming) (if (or (not nnfolder-get-new-mail) (not nnmail-spool-file)) () ;; We first activate all the groups. ! (nnfolder-request-list) ! (setq nnfolder-group-alist (nnmail-get-active)) ;; The we go through all the existing spool files and split the ;; mail from each. (while spools --- 604,617 ---- (nnmail-save-active nnfolder-group-alist nnfolder-active-file) (current-buffer)))) ! (defun nnfolder-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) incomings incoming) (if (or (not nnfolder-get-new-mail) (not nnmail-spool-file)) () ;; We first activate all the groups. ! (nnfolder-possibly-activate-groups nil) ;; The we go through all the existing spool files and split the ;; mail from each. (while spools diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnheader.el dgnus/lisp/nnheader.el *** pub/dgnus/lisp/nnheader.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnheader.el Wed May 17 17:02:49 1995 *************** *** 1,4 **** ! ;;; nnheader: Header access macros for Gnus and its backends ;; Copyright (C) 1987,88,89,90,93,94,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA --- 1,4 ---- ! ;;; nnheader.el --- header access macros for Gnus and its backends ;; Copyright (C) 1987,88,89,90,93,94,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnkiboze.el dgnus/lisp/nnkiboze.el *** pub/dgnus/lisp/nnkiboze.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnkiboze.el Wed May 17 17:02:49 1995 *************** *** 1,4 **** ! ;;;; nnkiboze.el --- select virtual news access for (ding) Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen --- 1,4 ---- ! ;;; nnkiboze.el --- select virtual news access for (ding) Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen *************** *** 120,140 **** (nnkiboze-possibly-change-newsgroups group) (if dont-check () ! (let (beg end total) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) ! (insert-file-contents (nnkiboze-nov-file-name)) ! (if (zerop (buffer-size)) (insert (format "211 0 0 0 %s\n" group)) ! (goto-char (point-min)) ! (and (looking-at "[0-9]+") (setq beg (read (current-buffer)))) ! (goto-char (point-max)) ! (and (re-search-backward "^[0-9]" nil t) ! (setq end (read (current-buffer)))) ! (setq total (count-lines (point-min) (point-max))) ! (erase-buffer) ! (insert (format "211 %d %d %d %s\n" total beg end group)))))) t) (defun nnkiboze-close-group (group &optional server) --- 120,143 ---- (nnkiboze-possibly-change-newsgroups group) (if dont-check () ! (let ((nov-file (nnkiboze-nov-file-name)) ! beg end total) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) ! (if (not (file-exists-p nov-file)) (insert (format "211 0 0 0 %s\n" group)) ! (insert-file-contents nov-file) ! (if (zerop (buffer-size)) ! (insert (format "211 0 0 0 %s\n" group)) ! (goto-char (point-min)) ! (and (looking-at "[0-9]+") (setq beg (read (current-buffer)))) ! (goto-char (point-max)) ! (and (re-search-backward "^[0-9]" nil t) ! (setq end (read (current-buffer)))) ! (setq total (count-lines (point-min) (point-max))) ! (erase-buffer) ! (insert (format "211 %d %d %d %s\n" total beg end group))))))) t) (defun nnkiboze-close-group (group &optional server) *************** *** 312,318 **** (if first ;; The first xref has to be the group this article ;; really came for - this is the article nnkiboze ! ;; will to request when it is asked for the article. (save-excursion (goto-char (match-beginning 0)) (insert prefix group ":" --- 315,321 ---- (if first ;; The first xref has to be the group this article ;; really came for - this is the article nnkiboze ! ;; will request when it is asked for the article. (save-excursion (goto-char (match-beginning 0)) (insert prefix group ":" diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnmail.el dgnus/lisp/nnmail.el *** pub/dgnus/lisp/nnmail.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnmail.el Wed May 17 17:02:50 1995 *************** *** 27,36 **** (require 'nnheader) (require 'rmail) (require 'timezone) (defvar nnmail-split-methods '(("mail.misc" "")) ! "Incoming mail will be split according to this variable. If you'd like, for instance, one mail group for mail from the \"4ad-l\" mailing list, one group for junk mail and one for everything --- 27,37 ---- (require 'nnheader) (require 'rmail) (require 'timezone) + (require 'sendmail) (defvar nnmail-split-methods '(("mail.misc" "")) ! "*Incoming mail will be split according to this variable. If you'd like, for instance, one mail group for mail from the \"4ad-l\" mailing list, one group for junk mail and one for everything *************** *** 56,75 **** ;; Suggested by Erik Selberg . (defvar nnmail-crosspost t ! "If non-nil, do crossposting if several split methods match the mail. If nil, the first match found will be used.") ;; Added by gord@enci.ucalgary.ca (Gordon Matzigkeit). (defvar nnmail-keep-last-article nil ! "If non-nil, nnmail will never delete the last expired article in a directory. You may need to set this variable if other programs are putting new mail into folder numbers that Gnus has marked as expired.") (defvar nnmail-expiry-wait 7 ! "Articles that are older than `nnmail-expiry-wait' days will be expired.") (defvar nnmail-expiry-wait-function nil ! "Variable that holds funtion to specify how old articles should be before they are expired. The function will be called with the name of the group that the expiry is to be performed in, and it should return an integer that says how many days an article can be stored before it is considered --- 57,76 ---- ;; Suggested by Erik Selberg . (defvar nnmail-crosspost t ! "*If non-nil, do crossposting if several split methods match the mail. If nil, the first match found will be used.") ;; Added by gord@enci.ucalgary.ca (Gordon Matzigkeit). (defvar nnmail-keep-last-article nil ! "*If non-nil, nnmail will never delete the last expired article in a directory. You may need to set this variable if other programs are putting new mail into folder numbers that Gnus has marked as expired.") (defvar nnmail-expiry-wait 7 ! "*Articles that are older than `nnmail-expiry-wait' days will be expired.") (defvar nnmail-expiry-wait-function nil ! "*Variable that holds funtion to specify how old articles should be before they are expired. The function will be called with the name of the group that the expiry is to be performed in, and it should return an integer that says how many days an article can be stored before it is considered *************** *** 88,97 **** (concat "/usr/spool/mail/" (user-login-name))) "Where the mail backends will look for incoming mail. This variable is \"/usr/spool/mail/$user\" by default. ! If this variable is nil, no mail backends will read incoming mail.") (defvar nnmail-read-incoming-hook nil ! "Hook that will be run after the incoming mail has been transferred. The incoming mail is moved from `nnmail-spool-file' (which normally is something like \"/usr/spool/mail/$user\") to the user's home directory. This hook is called after the incoming mail box has been --- 89,107 ---- (concat "/usr/spool/mail/" (user-login-name))) "Where the mail backends will look for incoming mail. This variable is \"/usr/spool/mail/$user\" by default. ! If this variable is nil, no mail backends will read incoming mail. ! If this variable is `procmail', the mail backends will look in ! `nnmail-procmail-directory' for spool files.") ! ! (defvar nnmail-procmail-directory "~/incoming/" ! "*When using procmail (and the like), incoming mail is put in this directory. ! The Gnus mail backends will read the mail from this directory.") ! ! (defvar nnmail-procmail-suffix ".spool" ! "*Suffix of files created by procmail (and the like).") (defvar nnmail-read-incoming-hook nil ! "*Hook that will be run after the incoming mail has been transferred. The incoming mail is moved from `nnmail-spool-file' (which normally is something like \"/usr/spool/mail/$user\") to the user's home directory. This hook is called after the incoming mail box has been *************** *** 107,124 **** ;; Suggested by Erik Selberg . (defvar nnmail-prepare-incoming-hook nil ! "Hook called before treating incoming mail. The hook is run in a buffer with all the new, incoming mail.") ;; Suggested by Mejia Pablo J . (defvar nnmail-tmp-directory nil ! "If non-nil, use this directory for temporary storage when reading incoming mail.") (defvar nnmail-large-newsgroup 50 ! "The number of the articles which indicates a large newsgroup. If the number of the articles is greater than the value, verbose messages will be shown to indicate the current status.") (defconst nnmail-version "nnml 0.0" --- 117,186 ---- ;; Suggested by Erik Selberg . (defvar nnmail-prepare-incoming-hook nil ! "*Hook called before treating incoming mail. The hook is run in a buffer with all the new, incoming mail.") ;; Suggested by Mejia Pablo J . (defvar nnmail-tmp-directory nil ! "*If non-nil, use this directory for temporary storage when reading incoming mail.") (defvar nnmail-large-newsgroup 50 ! "*The number of the articles which indicates a large newsgroup. If the number of the articles is greater than the value, verbose messages will be shown to indicate the current status.") + (defvar nnmail-split-fancy "mail.misc" + "*Incoming mail can be split according to this fancy variable. + To enable this, set `nnmail-split-methods' to `nnmail-split-fancy'. + + The format is this variable is SPLIT, where SPLIT can be one of + the following: + + GROUP: Mail will be stored in GROUP (a string). + + \(FIELD VALUE SPLIT): If the message field FIELD (a regexp) contains + VALUE (a regexp), store the messages as specified by SPLIT. + + \(| SPLIT...): Process each SPLIT expression until one of them matches. + A SPLIT expression is said to match if it will cause the mail + message to be stored in one or more groups. + + \(& SPLIT...): Process each SPLIT expression. + + FIELD must match a complete field name. VALUE must match a complete + word according to the fundamental mode syntax table. You can use .* + in the regexps to match partial field names or words. + + FIELD and VALUE can also be lisp symbols, in that case they are expanded + as specified in `nnmail-split-abbrev-alist'. + + Example: + + \(setq nnmail-split-methods 'nnmail-split-fancy + nnmail-split-fancy + ;; Messages from the mailer deamon are not crossposted to any of + ;; the ordinary groups. Warnings are put in a separate group + ;; from real errors. + '(| (\"from\" mail (| (\"subject\" \"warn.*\" \"mail.warning\") + \"mail.misc\")) + ;; Non-error messages are crossposted to all relevant + ;; groups, but we don't crosspost between the group for the + ;; (ding) list and the group for other (ding) related mail. + (& (| (any \"ding@ifi\\\\.uio\\\\.no\" \"ding.list\") + (\"subject\" \"ding\" \"ding.misc\")) + ;; Other mailing lists... + (any \"procmail@informatik\\\\.rwth-aachen\\\\.de\" \"procmail.list\") + (any \"SmartList@informatik\\\\.rwth-aachen\\\\.de\" \"SmartList.list\") + ;; People... + (any \"larsi@ifi\\\\.uio\\\\.no\" \"people.Lars Magne Ingebrigtsen\")) + ;; Unmatched mail goes to the catch all group. + \"misc.misc\"))") + + (defvar nnmail-split-abbrev-alist + '((any . "from\\|to\\|cc\\|sender\\|apparently-to") + (mail . "mailer-daemon\\|postmaster")) + "*Alist of abbrevations allowed in `nnmail-split-fancy'.") + (defconst nnmail-version "nnml 0.0" *************** *** 504,509 **** --- 566,639 ---- (setq newname (make-temp-name newprefix))) newname)) + ;; Written by Per Abrahamsen . + + (defun nnmail-split-fancy () + "Fancy splitting method. + See the documentation for the variable `nnmail-split-fancy' for documentation." + (nnmail-split-it nnmail-split-fancy)) + + (defvar nnmail-split-cache nil) + ;; Alist of split expresions their equivalent regexps. + + (defun nnmail-split-it (split) + ;; Return a list of groups matching SPLIT. + (cond ((stringp split) + ;; A group. + (list split)) + ((eq (car split) '&) + (apply 'nconc (mapcar 'nnmail-split-it (cdr split)))) + ((eq (car split) '|) + (let (done) + (while (and (not done) (cdr split)) + (setq split (cdr split) + done (nnmail-split-it (car split)))) + done)) ((assq split nnmail-split-cache) + ;; A compiled match expression. + (goto-char (point-max)) + (if (re-search-backward (cdr (assq split nnmail-split-cache)) nil t) + (nnmail-split-it (nth 2 split)))) + (t + ;; An uncompiled match. + (let* ((field (nth 0 split)) + (value (nth 1 split)) + (regexp (concat "^\\(" + (if (symbolp field) + (cdr (assq field + nnmail-split-abbrev-alist)) + field) + "\\):.*\\<\\(" + (if (symbolp value) + (cdr (assq value + nnmail-split-abbrev-alist)) + value) + "\\>\\)"))) + (setq nnmail-split-cache + (cons (cons split regexp) nnmail-split-cache)) + (goto-char (point-max)) + (if (re-search-backward regexp nil t) + (nnmail-split-it (nth 2 split))))))) + + ;; Get a list of spool files to read. + (defun nnmail-get-spool-files (&optional group) + (if (null nnmail-spool-file) + ;; No spool file whatsoever. + nil) + (let ((procmails + ;; If procmail is used to get incoming mail, the files + ;; are stored in this directory. + (and (file-exists-p nnmail-procmail-directory) + (directory-files + nnmail-procmail-directory + t (concat (if group group "") + nnmail-procmail-suffix "$") t)))) + (cond ((listp nnmail-spool-file) + (append nnmail-spool-file procmails)) + ((stringp nnmail-spool-file) + (cons nnmail-spool-file procmails)) + (t + procmails)))) + (provide 'nnmail) ;;; nnml.el ends here diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnmbox.el dgnus/lisp/nnmbox.el *** pub/dgnus/lisp/nnmbox.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnmbox.el Wed May 17 17:02:50 1995 *************** *** 41,46 **** --- 41,49 ---- (defvar nnmbox-get-new-mail t "If non-nil, nnmbox will check the incoming mail file and split the mail.") + (defvar nnmbox-prepare-save-mail-hook nil + "Hook run narrowed to an article before saving.") + (defconst nnmbox-version "nnmbox 0.1" *************** *** 183,189 **** (if (nnmbox-possibly-change-newsgroup group) (if dont-check t ! (nnmbox-get-new-mail) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) --- 186,192 ---- (if (nnmbox-possibly-change-newsgroup group) (if dont-check t ! (nnmbox-get-new-mail group) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) *************** *** 381,386 **** --- 384,390 ---- (nnmail-insert-lines) (nnmail-insert-xref group-art) (nnmbox-insert-newsgroup-line group-art) + (run-hooks 'nnml-prepare-save-mail-hook) group-art)) (defun nnmbox-insert-newsgroup-line (group-art) *************** *** 438,447 **** (nnmbox-save-mail)))) (goto-char end)))))) ! (defun nnmbox-get-new-mail () "Read new incoming mail." ! (let ((spools (if (listp nnmail-spool-file) nnmail-spool-file ! (list nnmail-spool-file))) incoming incomings) (nnmbox-read-mbox) (if (or (not nnmbox-get-new-mail) (not nnmail-spool-file)) --- 442,450 ---- (nnmbox-save-mail)))) (goto-char end)))))) ! (defun nnmbox-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) incoming incomings) (nnmbox-read-mbox) (if (or (not nnmbox-get-new-mail) (not nnmail-spool-file)) diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnmh.el dgnus/lisp/nnmh.el *** pub/dgnus/lisp/nnmh.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnmh.el Wed May 17 17:02:50 1995 *************** *** 1,4 **** ! ;;; nnmh.el --- mail spool access for Gnus (mhspool) ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen --- 1,4 ---- ! ;;; nnmh.el --- mhspool access for Gnus ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen *************** *** 40,45 **** --- 40,48 ---- (defvar nnmh-get-new-mail t "If non-nil, nnmh will check the incoming mail file and split the mail.") + (defvar nnmh-prepare-save-mail-hook nil + "Hook run narrowed to an article before saving.") + (defconst nnmh-version "nnmh 0.1" *************** *** 153,159 **** (nnmail-find-file file))))) (defun nnmh-request-group (group &optional server dont-check) ! (and nnmh-get-new-mail (or dont-check (nnmh-get-new-mail))) (let ((pathname (nnmh-article-pathname group nnmh-directory)) dir) (if (file-directory-p pathname) --- 156,162 ---- (nnmail-find-file file))))) (defun nnmh-request-group (group &optional server dont-check) ! (and nnmh-get-new-mail (or dont-check (nnmh-get-new-mail group))) (let ((pathname (nnmh-article-pathname group nnmh-directory)) dir) (if (file-directory-p pathname) *************** *** 336,341 **** --- 339,345 ---- chars nov-line lines hbeg hend) (setq chars (nnmail-insert-lines)) (nnmail-insert-xref group-art) + (run-hooks 'nnmh-prepare-save-mail-hook) (goto-char (point-min)) (while (looking-at "From ") (replace-match "X-From-Line: ") *************** *** 376,385 **** (concat mail-dir group "/") (concat mail-dir (nnmail-replace-chars-in-string group ?. ?/) "/")))) ! (defun nnmh-get-new-mail () "Read new incoming mail." ! (let ((spools (if (listp nnmail-spool-file) nnmail-spool-file ! (list nnmail-spool-file))) incoming incomings) (if (or (not nnmh-get-new-mail) (not nnmail-spool-file)) () --- 380,388 ---- (concat mail-dir group "/") (concat mail-dir (nnmail-replace-chars-in-string group ?. ?/) "/")))) ! (defun nnmh-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) incoming incomings) (if (or (not nnmh-get-new-mail) (not nnmail-spool-file)) () diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnml.el dgnus/lisp/nnml.el *** pub/dgnus/lisp/nnml.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnml.el Wed May 17 17:02:51 1995 *************** *** 53,58 **** --- 53,61 ---- through all nnml directories and generate nov databases for them all. This may very well take some time.") + (defvar nnml-prepare-save-mail-hook nil + "Hook run narrowed to an article before saving.") + (defconst nnml-version "nnml 0.2" *************** *** 185,191 **** nil) (if dont-check t ! (nnml-get-new-mail) (let ((timestamp (nth 5 (file-attributes nnml-active-file)))) (if (or (not nnml-active-timestamp) (> (nth 0 timestamp) (nth 0 nnml-active-timestamp)) --- 188,194 ---- nil) (if dont-check t ! (nnml-get-new-mail group) (let ((timestamp (nth 5 (file-attributes nnml-active-file)))) (if (or (not nnml-active-timestamp) (> (nth 0 timestamp) (nth 0 nnml-active-timestamp)) *************** *** 423,428 **** --- 426,432 ---- chars nov-line) (setq chars (nnmail-insert-lines)) (nnmail-insert-xref group-art) + (run-hooks 'nnml-prepare-save-mail-hook) (goto-char (point-min)) (while (looking-at "From ") (replace-match "X-From-Line: ") *************** *** 470,479 **** (setcdr active (1+ (cdr active))))) (cdr active))) ! (defun nnml-get-new-mail () "Read new incoming mail." ! (let ((spools (if (listp nnmail-spool-file) nnmail-spool-file ! (list nnmail-spool-file))) incoming incomings) (if (or (not nnml-get-new-mail) (not nnmail-spool-file)) () --- 474,482 ---- (setcdr active (1+ (cdr active))))) (cdr active))) ! (defun nnml-get-new-mail (&optional group) "Read new incoming mail." ! (let ((spools (nnmail-get-spool-files group)) incoming incomings) (if (or (not nnml-get-new-mail) (not nnmail-spool-file)) () diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnspool.el dgnus/lisp/nnspool.el *** pub/dgnus/lisp/nnspool.el Mon May 15 20:17:11 1995 --- dgnus/lisp/nnspool.el Wed May 17 17:02:51 1995 *************** *** 122,128 **** file beg article) (if (not (nnspool-possibly-change-directory newsgroup)) () ! (if (nnspool-retrieve-headers-with-nov sequence) 'nov (while sequence (setq article (car sequence)) --- 122,129 ---- file beg article) (if (not (nnspool-possibly-change-directory newsgroup)) () ! (if (and (numberp (car sequence)) ! (nnspool-retrieve-headers-with-nov sequence)) 'nov (while sequence (setq article (car sequence)) diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nntp.el dgnus/lisp/nntp.el *** pub/dgnus/lisp/nntp.el Mon May 15 20:17:12 1995 --- dgnus/lisp/nntp.el Wed May 17 17:25:09 1995 *************** *** 1,4 **** ! ;;; nntp.el --- NNTP (RFC977) Interface for GNU Emacs ;; Copyright (C) 1987,88,89,90,92,93,94,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA --- 1,4 ---- ! ;;; nntp.el --- nntp access for Gnus ;; Copyright (C) 1987,88,89,90,92,93,94,95 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA *************** *** 35,41 **** (autoload 'nnmail-request-post-buffer "nnmail") (autoload 'cancel-timer "timer") (autoload 'telnet "telnet") ! (autoload 'telnet-send-input "telnet")) (defvar nntp-server-hook nil "*Hooks for the NNTP server. --- 35,42 ---- (autoload 'nnmail-request-post-buffer "nnmail") (autoload 'cancel-timer "timer") (autoload 'telnet "telnet") ! (autoload 'telnet-send-input "telnet") ! (autoload 'timezone-parse-date "timezone")) (defvar nntp-server-hook nil "*Hooks for the NNTP server. *************** *** 116,121 **** --- 117,127 ---- none of the commands are successful, nntp will just grab headers one by one.") + (defvar nntp-nov-gap 20 + "*Maximum allowed gap between two articles. + If the gap between two consecutive articles is bigger than this + variable, split the XOVER request into two requests.") + (defvar nntp-connection-timeout nil "*Number of seconds to wait before an nntp connection times out. If this variable is nil, which is the default, no timers are set.") *************** *** 842,874 **** t))))) ;;; ;;; Low-Level Interface to NNTP Server. ;;; (defun nntp-retrieve-headers-with-xover (sequence) ! (if (not nntp-server-xover) ! () ! (let ((range (format "%d-%d" (car sequence) ! (nntp-last-element sequence)))) ! (prog1 ! (if (stringp nntp-server-xover) ! (nntp-send-command "^\\.\r?$" nntp-server-xover range) ! (let ((commands nntp-xover-commands)) ! (while (and commands (eq nntp-server-xover 'try)) ! (nntp-send-command "^\\.\r?$" (car commands) range) ! (save-excursion ! (set-buffer nntp-server-buffer) ! (goto-char (point-min)) ! (if (looking-at "[23]") ! (setq nntp-server-xover (car commands)))) ! (setq commands (cdr commands))) ! (if (eq nntp-server-xover 'try) ! (setq nntp-server-xover nil)) ! nntp-server-xover)) ! (if nntp-server-xover ! (nntp-decode-text) ! (erase-buffer)))))) (defun nntp-send-strings-to-server (&rest strings) "Send list of STRINGS to news server as command and its arguments." --- 848,950 ---- t))))) + ;;; ;;; Low-Level Interface to NNTP Server. ;;; (defun nntp-retrieve-headers-with-xover (sequence) ! (erase-buffer) ! (cond ! ! ;; This server does not talk NOV. ! ((not nntp-server-xover) ! nil) ! ! ;; We don't care about gaps. ! ((not nntp-nov-gap) ! (nntp-send-xover-command (car sequence) (nntp-last-element sequence))) ! ! ;; We do it the hard way. For each gap, an XOVER command is sent ! ;; to the server. We do not wait for a reply from the server, we ! ;; just send them off as fast as we can. That means that we have ! ;; to count the number of responses we get back to find out when we ! ;; have gotten all we asked for. ! ((numberp nntp-nov-gap) ! (let ((count 0) ! (received 0) ! (last-point (point-min)) ! first) ! ;; We have to check `nntp-server-xover'. If it gets set to nil, ! ;; that means that the server does not understand XOVER, but we ! ;; won't know that until we try. ! (while (and nntp-server-xover sequence) ! (setq first (car sequence)) ! ;; Search forward until we find a gap, or until we run out of ! ;; articles. ! (while (and (cdr sequence) ! (< (- (nth 1 sequence) (car sequence)) nntp-nov-gap)) ! (setq sequence (cdr sequence))) ! ! (nntp-send-xover-command first (car sequence)) ! (setq sequence (cdr sequence) ! count (1+ count)) ! ! ;; Every 400 requests we have to read the stream in ! ;; order to avoid deadlocks. ! (if (or (null sequence) ;All requests have been sent. ! (zerop (% count nntp-maximum-request))) ! (progn ! (accept-process-output) ! (while (progn ! (goto-char last-point) ! ;; Count replies. ! (while (re-search-forward "^[0-9][0-9][0-9] " nil t) ! (setq received (1+ received))) ! (setq last-point (point)) ! (< received count)) ! (nntp-accept-response))))) ! ! (if (not nntp-server-xover) ! () ! ;; Wait for the reply from the final command. ! (goto-char (point-max)) ! (re-search-backward "^[0-9][0-9][0-9] " nil t) ! (if (looking-at "^[23]") ! (while (progn ! (goto-char (- (point-max) 3)) ! (not (looking-at "^\\.\r?$"))) ! (nntp-accept-response))) ! ! ;; We remove any "." lines and status lines. ! (goto-char (point-min)) ! (while (search-forward "\r" nil t) ! (delete-char -1)) ! (goto-char (point-min)) ! (delete-matching-lines "^\\.$\\|^[1-5][0-9][0-9] ")) ! ! nntp-server-xover)))) ! ! (defun nntp-send-xover-command (beg end) ! (let ((range (format "%d-%d" beg end))) ! (if (stringp nntp-server-xover) ! ;; If `nntp-server-xover' is a string, then we just send this ! ;; command. We do not wait for the reply. ! (nntp-send-strings-to-server nntp-server-xover range) ! (let ((commands nntp-xover-commands)) ! ;; `nntp-xover-commands' is a list of possible XOVER commands. ! ;; We try them all until we get at positive response. ! (while (and commands (eq nntp-server-xover 'try)) ! (nntp-send-command "^\\.\r?$" (car commands) range) ! (save-excursion ! (set-buffer nntp-server-buffer) ! (goto-char (point-min)) ! (and (looking-at "[23]") (setq nntp-server-xover (car commands)))) ! (setq commands (cdr commands))) ! ;; If none of the commands worked, we disable XOVER. ! (if (eq nntp-server-xover 'try) ! (setq nntp-server-xover nil)) ! nntp-server-xover)))) (defun nntp-send-strings-to-server (&rest strings) "Send list of STRINGS to news server as command and its arguments." diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/lisp/nnvirtual.el dgnus/lisp/nnvirtual.el *** pub/dgnus/lisp/nnvirtual.el Mon May 15 20:17:12 1995 --- dgnus/lisp/nnvirtual.el Wed May 17 17:02:52 1995 *************** *** 1,4 **** ! ;;;; nnvirtual.el --- virtual newsgroups access for (ding) Gnus ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen --- 1,4 ---- ! ;;; nnvirtual.el --- virtual newsgroups access for (ding) Gnus ;; Copyright (C) 1994,95 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --exclude=*.elc --exclude=*~ --exclude=*-[0-9] --exclude=gnus --exclude=readme --context --recursive pub/dgnus/texi/gnus.texi dgnus/texi/gnus.texi *** pub/dgnus/texi/gnus.texi Mon May 15 20:17:19 1995 --- dgnus/texi/gnus.texi Wed May 17 19:09:39 1995 *************** *** 718,726 **** @vindex gnus-ignored-newsgroups Before examining the active file, Gnus deletes all lines that match the regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject ! any groups with bogus names (eg. groups containing characters like ! @samp{'[]"} and so on), but you can use this variable to make Gnus ! ignore hierarchies you aren't ever interested in. @vindex gnus-read-active-file The active file can be rather Huge, so if you have a slow network, you --- 718,727 ---- @vindex gnus-ignored-newsgroups Before examining the active file, Gnus deletes all lines that match the regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject ! any groups with bogus names, but you can use this variable to make Gnus ! ignore hierarchies you aren't ever interested in. This variable is ! @code{nil} by default, and will slow down active file handling somewhat ! if you set it to anything else. @vindex gnus-read-active-file The active file can be rather Huge, so if you have a slow network, you *************** *** 1401,1406 **** --- 1402,1420 ---- server. The default value of this variable is @code{("XOVER" "XOVERVIEW")}. + @item nntp-nov-gap + @vindex nntp-nov-gap + @code{nntp} normally sends just one big request for @sc{nov} lines to + the server. The server responds with one huge list of lines. However, + if you have read articles 2-5000 in the group, and only want to read + article 1 and 5001, that means that @code{nntp} will fetch 4999 @sc{nov} + lines that you do not want, and will not use. This variable says how + big a gap between two consecutive articles is allowed to be before the + @code{XOVER} request is split into several request. Note that if your + network is fast, setting this variable to a really small number means + that fetching will probably be slower. If this variable is @code{nil}, + @code{nntp} will never split requests. + @item nntp-prepare-server-hook @vindex nntp-prepare-server-hook A hook run before attempting to connect to an @sc{nntp} server. *************** *** 1638,1643 **** --- 1652,1658 ---- @menu * Creating Mail Groups:: How to create mail groups. + * Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. * Mail & Procmail:: Reading mail groups that procmail create. * Expiring Old Mail Articles:: Getting rid of unwanted mail. * Not Reading Mail:: Using mail backends for reading other files. *************** *** 1667,1672 **** --- 1682,1693 ---- Set this variable to begin with the string @samp{po:}, and everything should go smoothly, even though I have never tested this. + If this variable is @code{procmail}, the mail backends will look in + @code{nnmail-procmail-directory} for incoming mail. All the files in + that directory that have names ending in @code{gnus-procmail-suffix} + will be considered incoming mailboxes, and will be searched for new + mail. + @vindex nnmail-prepare-incoming-hook @code{nnmail-prepare-incoming-hook} is run in a buffer that holds all the new incoming mail, and can be used for, well, anything, really. *************** *** 1737,1749 **** the mail will be "cross-posted" to all those groups. @code{nnmail-crosspost} says whether to use this mechanism or not. @node Mail & Procmail @subsubsection Mail & Procmail @cindex procmail Many people use @code{procmail} to split incoming mail into groups. If ! you do that, you should set @code{nnmail-spool-file} to @code{nil} to ! make sure that the mail backends never ever try to fetch mail by themselves. This also means that you probably don't want to set --- 1758,1836 ---- the mail will be "cross-posted" to all those groups. @code{nnmail-crosspost} says whether to use this mechanism or not. + @node Fancy Mail Splitting + @subsubsection Fancy Mail Splitting + @cindex mail splitting + @cindex fancy mail splitting + + @vindex nnmail-split-fancy + @findex nnmail-split-fancy + If the rather simple, standard method for specifying how to split mail + doesn't allow you to do what you want, you can set + @code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can + play with the @code{nnmail-split-methods} variable. + + Let's look at an example value of this variable first: + + @lisp + ;; Messages from the mailer deamon are not crossposted to any of + ;; the ordinary groups. Warnings are put in a separate group + ;; from real errors. + (| ("from" mail (| ("subject" "warn.*" "mail.warning") + "mail.misc")) + ;; Non-error messages are crossposted to all relevant + ;; groups, but we don't crosspost between the group for the + ;; (ding) list and the group for other (ding) related mail. + (& (| (any "ding@@ifi\\.uio\\.no" "ding.list") + ("subject" "ding" "ding.misc")) + ;; Other mailing lists... + (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") + (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") + ;; People... + (any "larsi@@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen")) + ;; Unmatched mail goes to the catch all group. + "misc.misc"))") + @end lisp + + This variable has the format of a @dfn{split}. A split is a (possibly) + recursive structure where each split may contain other splits. Here are + the four possible split syntaxes: + + @table @dfn + @item GROUP + If the split is a string, that will be taken as a group name. + @item (FIELD VALUE SPLIT) + If the split is a list, and the first element is a string, then that + means that if header FIELD (a regexp) contains VALUE (also a regexp), + then store the message as specified by SPLIT. + @item (| SPLIT...) + If the split is a list, and the first element is @code{|} (vertical + bar), then process each SPLIT until one of them matches. A SPLIT is + said to match if it will cause the mail message to be stored in one or + more groups. + @item (& SPLIT...) + If the split is a list, and the first element is @code{&}, then process + all SPLITs in the list. + @end table + + In these splits, FIELD must match a complete field name. VALUE must + match a complete word according to the fundamental mode syntax table. + You can use @code{.*} in the regexps to match partial field names or + words. + + @vindex nnmail-split-abbrev-alist + FIELD and VALUE can also be lisp symbols, in that case they are expanded + as specified by the variable @code{nnmail-split-abbrev-alist}. This is + an alist of cons cells, where the car of the cells contains the key, and + the cdr contains a string. + @node Mail & Procmail @subsubsection Mail & Procmail @cindex procmail Many people use @code{procmail} to split incoming mail into groups. If ! you do that, you should set @code{nnmail-spool-file} to @code{procmail} ! to ensure that the mail backends never ever try to fetch mail by themselves. This also means that you probably don't want to set *************** *** 1760,1780 **** This means that you have to tell Gnus (and the backends) what groups exist by hand. ! Let's take the @code{nnfolder} backend as an example. (This backend ! uses one file as the basis of each group.) ! The folders are located in @code{nnfolder-directory}, say, ! @file{~/Mail/}. There are three folders, @file{foo}, @file{bar} and ! @file{mail.baz}. Go to the group buffer and type @kbd{G m}. When prompted, answer ! @samp{foo} for the name and @samp{nnfolder} for the method. Repeat twice for the two other groups, @samp{bar} and @samp{mail.baz}. Be sure to include all your mail groups. That's it. You are now set to read your mail. An active file for this method will be created automatically. @node Expiring Old Mail Articles @subsubsection Expiring Old Mail Articles @cindex article expiry --- 1847,1875 ---- This means that you have to tell Gnus (and the backends) what groups exist by hand. ! Let's take the @code{nnmh} backend as an example. ! The folders are located in @code{nnmh-directory}, say, @file{~/Mail/}. ! There are three folders, @file{foo}, @file{bar} and @file{mail.baz}. Go to the group buffer and type @kbd{G m}. When prompted, answer ! @samp{foo} for the name and @samp{nnmh} for the method. Repeat twice for the two other groups, @samp{bar} and @samp{mail.baz}. Be sure to include all your mail groups. That's it. You are now set to read your mail. An active file for this method will be created automatically. + @vindex nnmail-procmail-suffix + @vindex nnmail-procmail-directory + If you use @code{nnfolder} or any other backend that store more than a + single article in each file, you should never have procmail add mails to + the file that Gnus sees. Instead, procmail should put all incoming mail + in @code{nnmail-procmail-directory}. To arrive at the file name to put + the incoming mail in, append @code{nnmail-procmail-suffix} to the group + name. The mail backends will read the mail from these files. + + @node Expiring Old Mail Articles @subsubsection Expiring Old Mail Articles @cindex article expiry *************** *** 1872,1877 **** --- 1967,1976 ---- the @code{nnbabyl} mail reading, you edit the virtual server for the group to have a setting where @code{nnbabyl-get-new-mail} to @code{nil}. + All the mail backends will call @code{nn}*@code{-prepare-save-mail-hook} + narrowed to the article to be saved before saving it when reading + incoming mail. + @node nnmbox @subsubsection nnmbox @cindex nnmbox *************** *** 3144,3150 **** @item gnus-check-before-posting @vindex gnus-check-before-posting If non-@code{nil}, Gnus will attempt to check the legality of the ! headers, as well as some other stuff, before posting. @end table --- 3243,3274 ---- @item gnus-check-before-posting @vindex gnus-check-before-posting If non-@code{nil}, Gnus will attempt to check the legality of the ! headers, as well as some other stuff, before posting. You can control ! the granularity of the check by adding or removing elements from this ! list. Legal elemetents are: ! ! @table @code ! @item subject-cmsg ! Check the subject for commands. ! @item multiple-headers ! Check for the existance of multiple equal headers. ! @item sendsys ! Check for the existance of version and sendsys commands. ! @item message-id ! Check whether the @code{Message-ID} looks ok. ! @item from ! Check whether the @code{From} header seems nice. ! @item long-lines ! Check for too long lines. ! @item control-chars ! Check for illegal characters. ! @item size ! Check for excessive size. ! @item new-text ! Check whether there is any new text in the messages. ! @item signature ! Check the length of the signature ! @end table @end table *************** *** 3181,3190 **** If @code{gnus-signature-file} is non-@code{nil}, it should be the name of a file containing a signature (@samp{~/.signature} by default). This signature will be appended to all outgoing post. Most people find it ! more convenient to use @code{mail-signature}, which does the same, but ! inserts the signature into the buffer before you start editing the post ! (or mail). So - if you have both of these variables set, you will get ! two signatures. Note that RFC1036 says that a signature should be preceded by the three characters @samp{-- } on a line by themselves. This is to make it --- 3305,3317 ---- If @code{gnus-signature-file} is non-@code{nil}, it should be the name of a file containing a signature (@samp{~/.signature} by default). This signature will be appended to all outgoing post. Most people find it ! more convenient to use @code{mail-signature}, which (sort of) does the ! same, but inserts the signature into the buffer before you start editing ! the post (or mail). So - if you have both of these variables set, you ! will get two signatures. Note that @code{mail-signature} does not work ! the same way as @code{gnus-signature-file}, which is a bit confusing. ! If @code{mail-signature} is @code{t}, it will insert ! @file{~/.signature}. If it is a string, this string will be inserted. Note that RFC1036 says that a signature should be preceded by the three characters @samp{-- } on a line by themselves. This is to make it *************** *** 4561,4572 **** @kindex W f (Summary) @findex gnus-article-display-x-face @findex gnus-article-x-face-command Look for and display any X-Face headers ! (@code{gnus-article-display-x-face}). The command executed by this ! function is given by the @code{gnus-article-x-face-command} variable. ! If this variable is a string, this string will be executed in a ! sub-shell. If it is a function, this function will be called with the ! face as the argument. @end table @node Summary Sorting --- 4688,4702 ---- @kindex W f (Summary) @findex gnus-article-display-x-face @findex gnus-article-x-face-command + @vindex gnus-article-x-face-command + @vindex gnus-article-x-face-too-ugly Look for and display any X-Face headers ! (@code{gnus-article-display-x-face}). The command executed by this ! function is given by the @code{gnus-article-x-face-command} variable. If ! this variable is a string, this string will be executed in a sub-shell. ! If it is a function, this function will be called with the face as the ! argument. If the @code{gnus-article-x-face-too-ugly} (which is a regexp) ! matches the @code{From} header, the face will not be shown. @end table @node Summary Sorting *************** *** 4700,4705 **** --- 4830,4845 ---- @kindex V S s (Summary) @findex gnus-summary-set-score Set the score of the current article (@code{gnus-summary-set-score}). + @item V S S + @kindex V S S (Summary) + @findex gnus-summary-current-score + Display the score of the current article + (@code{gnus-summary-current-score}). + @item V S a + @kindex V S a (Summary) + @findex gnus-summary-score-entry + Add a new score entry, and allow specifying all elements + (@code{gnus-summary-score-entry}). @item V S c @kindex V S c (Summary) @findex gnus-score-change-score-file *************** *** 4743,4970 **** numeric prefix) (@code{gnus-score-set-expunge-below}). @end table ! Commands for increasing the score: @table @kbd ! @item I s t ! @kindex I s t (Summary) ! @findex gnus-summary-temporarily-raise-by-subject ! Increase the current subject temporarily ! (@code{gnus-summary-temporarily-raise-by-subject}). ! @item I s p ! @kindex I s p (Summary) ! @findex gnus-summary-raise-by-subject ! Increase the current subject permanently ! (@code{gnus-summary-raise-by-subject}). ! @item I s i ! @kindex I s i (Summary) ! @findex gnus-summary-immediately-raise-by-subject ! Increase the current subject immediately ! (@code{gnus-summary-immediately-raise-by-subject}). ! @item I a t ! @kindex I a t (Summary) ! @findex gnus-summary-temporarily-raise-by-author ! Increase the current author temporarily ! (@code{gnus-summary-temporarily-raise-by-author}). ! @item I a p ! @kindex I a p (Summary) ! @findex gnus-summary-raise-by-author ! Increase the current author permanently ! (@code{gnus-summary-raise-by-author}). ! @item I a i ! @kindex I a i (Summary) ! @findex gnus-summary-immediately-raise-by-author ! Increase the current author immediately ! (@code{gnus-summary-immediately-raise-by-author}). ! @item I b t ! @kindex I b t (Summary) ! @findex gnus-summary-temporarily-raise-by-body ! Increase based on a match on the body of an article temporarily ! (@code{gnus-summary-temporarily-raise-by-body}). This is a very slow ! operation. ! @item I b p ! @kindex I b p (Summary) ! @findex gnus-summary-raise-by-body ! Increase based on a match on the body of an article ! (@code{gnus-summary-raise-by-body}). This is a very slow operation ! @item I b i ! @kindex I b i (Summary) ! @findex gnus-summary-immediately-raise-by-body ! Increase based on a match on the body of an article ! (@code{gnus-summary-immediately-raise-by-body}). This is a very slow operation ! @item I i t ! @kindex I i t (Summary) ! @findex gnus-summary-temporarily-raise-by-id ! Increase the current message-id temporarily ! (@code{gnus-summary-temporarily-raise-by-id}). ! @item I i p ! @kindex I i p (Summary) ! @findex gnus-summary-raise-by-id ! Increase the current message-id permanently ! (@code{gnus-summary-raise-by-id}). ! @item I i i ! @kindex I i i (Summary) ! @findex gnus-summary-immediately-raise-by-id ! Increase the current message-id immediately ! (@code{gnus-summary-immediately-raise-by-id}). ! @item I t t ! @kindex I t t (Summary) ! @findex gnus-summary-temporarily-raise-by-thread ! Increase the current thread temporarily ! (@code{gnus-summary-temporarily-raise-by-thread}). ! @item I t p ! @kindex I t p (Summary) ! @findex gnus-summary-raise-by-thread ! Increase the current thread permanently ! (@code{gnus-summary-raise-by-thread}). ! @item I t i ! @kindex I t i (Summary) ! @findex gnus-summary-immediately-raise-by-thread ! Increase the current thread immediately ! (@code{gnus-summary-immediately-raise-by-thread}). ! @item I x t ! @kindex I x t (Summary) ! @findex gnus-summary-temporarily-raise-by-xref ! Increase the current xref temporarily ! (@code{gnus-summary-temporarily-raise-by-xref}). ! @item I x p ! @kindex I x p (Summary) ! @findex gnus-summary-raise-by-xref ! Increase the current xref permanently ! (@code{gnus-summary-raise-by-xref}). ! @item I x i ! @kindex I x i (Summary) ! @findex gnus-summary-immediately-raise-by-xref ! Increase the current xref immediately ! (@code{gnus-summary-immediately-raise-by-xref}). ! @item I f t ! @kindex I f t (Summary) ! @findex gnus-summary-temporarily-raise-followups-to-author ! Increase followups to the current author temporarily ! (@code{gnus-summary-temporarily-raise-followups-to-author}). ! @item I f p ! @kindex I f p (Summary) ! @findex gnus-summary-raise-followups-to-author ! Increase followups to the current author permanently ! (@code{gnus-summary-raise-followups-to-author}). ! @item I f i ! @kindex I f i (Summary) ! @findex gnus-summary-immediately-raise-followups-to-author ! Increase followups to the current author immediately ! (@code{gnus-summary-immediately-raise-followups-to-author}). ! @end table ! ! Commands for lowering the score: ! ! @table @kbd ! @item L s t ! @kindex L s t (Summary) ! @findex gnus-summary-temporarily-lower-by-subject ! Lower the current subject temporarily ! (@code{gnus-summary-temporarily-lower-by-subject}). ! @item L s p ! @kindex L s p (Summary) ! @findex gnus-summary-lower-by-subject ! Lower the current subject permanently ! (@code{gnus-summary-lower-by-subject}). ! @item L s i ! @kindex L s i (Summary) ! @findex gnus-summary-immediately-lower-by-subject ! Lower the current subject immediately ! (@code{gnus-summary-immediately-lower-by-subject}). ! @item L a t ! @kindex L a t (Summary) ! @findex gnus-summary-temporarily-lower-by-author ! Lower the current author temporarily ! (@code{gnus-summary-temporarily-lower-by-author}). ! @item L a p ! @kindex L a p (Summary) ! @findex gnus-summary-lower-by-author ! Lower the current author permanently ! (@code{gnus-summary-lower-by-author}). ! @item L a i ! @kindex L a i (Summary) ! @findex gnus-summary-immediately-lower-by-author ! Lower the current author immediately ! (@code{gnus-summary-immediately-lower-by-author}). ! @item L b t ! @kindex L b t (Summary) ! @findex gnus-summary-temporarily-lower-by-body ! Lower based on a match on the article body ! (@code{gnus-summary-temporarily-lower-by-body}). This is a very slow ! operation. ! @item L b p ! @kindex L b p (Summary) ! @findex gnus-summary-lower-by-body ! Lower based on a match on the article body ! (@code{gnus-summary-lower-by-body}). This is a very slow operation. ! @item L b i ! @kindex L b i (Summary) ! @findex gnus-summary-immediately-lower-by-body ! Lower based on a match on the article body ! (@code{gnus-summary-immediately-lower-by-body}). This is a very slow operation. ! @item L i t ! @kindex L i t (Summary) ! @findex gnus-summary-temporarily-lower-by-id ! Lower the current message-id temporarily ! (@code{gnus-summary-temporarily-lower-by-id}). ! @item L i p ! @kindex L i p (Summary) ! @findex gnus-summary-lower-by-id ! Lower the current message-id permanently ! (@code{gnus-summary-lower-by-id}). ! @item L i i ! @kindex L i i (Summary) ! @findex gnus-summary-immediately-lower-by-id ! Lower the current message-id immediately ! (@code{gnus-summary-immediately-lower-by-id}). ! @item L t t ! @kindex L t t (Summary) ! @findex gnus-summary-temporarily-lower-by-thread ! Lower the current thread temporarily ! (@code{gnus-summary-temporarily-lower-by-thread}). ! @item L t p ! @kindex L t p (Summary) ! @findex gnus-summary-lower-by-thread ! Lower the current thread permanently ! (@code{gnus-summary-lower-by-thread}). ! @item L t i ! @kindex L t i (Summary) ! @findex gnus-summary-immediately-lower-by-thread ! Lower the current thread immediately ! (@code{gnus-summary-immediately-lower-by-thread}). ! @item L x t ! @kindex L x t (Summary) ! @findex gnus-summary-temporarily-lower-by-xref ! Lower the current xref temporarily ! (@code{gnus-summary-temporarily-lower-by-xref}). ! @item L x p ! @kindex L x p (Summary) ! @findex gnus-summary-lower-by-xref ! Lower the current xref permanently ! (@code{gnus-summary-lower-by-xref}). ! @item L x i ! @kindex L x i (Summary) ! @findex gnus-summary-immediately-lower-by-xref ! Lower the current xref immediately ! (@code{gnus-summary-immediately-lower-by-xref}). ! @item L f t ! @kindex L f t (Summary) ! @findex gnus-summary-temporarily-lower-followups-to-author ! Lower followups to the current author temporarily ! (@code{gnus-summary-temporarily-lower-followups-to-author}). ! @item L f p ! @kindex L f p (Summary) ! @findex gnus-summary-lower-followups-to-author ! Lower followups to the current author permanently ! (@code{gnus-summary-lower-followups-to-author}). ! @item L f i ! @kindex L f i (Summary) ! @findex gnus-summary-immediately-lower-followups-to-author ! Lower followups to the current author immediately ! (@code{gnus-summary-immediately-lower-followups-to-author}). @end table @node Score Variables @subsection Score Variables @cindex score variables --- 4883,4957 ---- numeric prefix) (@code{gnus-score-set-expunge-below}). @end table ! The keystrokes for actually making score entries follow a very regular ! pattern, so there's no need to list all the commands. (Hundreds of ! them.) + @enumerate + @item + The first key is either @kbd{I} (upper case i) for increasing the score + or @kbd{L} for lowering the score. + @item + The second key says what header you want to score on. The following + keys are available: @table @kbd ! @item a ! Score on the author name. ! @item s ! Score on the subject line. ! @item x ! Score on the Xref line - ie. the cross-posting line. ! @item t ! Score on thread - the References line. ! @item d ! Score on the date. ! @item l ! Score on the number of lines. ! @item b ! Score on the body. ! @item h ! Score on the head. ! @end table ! ! @item ! The third key is the match type. ! @table @kbd ! @item e ! Exact matching. ! @item s ! Substring matching. ! @item f ! Fuzzy matching. ! @item r ! Regexp matching @end table + @item + The fourth and final key says whether this is a temporary (ie. expiring) + score entry, or a permanent (ie. non-expiring) score entry, or whether + it is to be done immediately, without adding to the score file. + @table @kbd + @item t + Temporary score entry. + @item p + Permanent score entry. + @item i + Immediately scoring. + @end table + + @end enumerate + + So, let's say you want to increase the score on the current author with + exact matching permanently: @kbd{I a e p}. If you want to lower the + score based on the subject line, using substring matching, and make a + temporary score entry: @kbd{L s s t}. Pretty easy. + + To make things a bit more complicated, there are shortcuts. If you use + a capital letter on either the second or third keys, Gnus will use + defaults for the remaining one or two keystrokes. The defaults are + "substring" and "temporary". So @kbd{I A} is the same as @kbd{I a s t}, + and @kbd{I a R} is the same as @kbd{I a r t}. + @node Score Variables @subsection Score Variables @cindex score variables *************** *** 5270,5275 **** --- 5257,5270 ---- The adaptive score entries will be put into a file where the name is the group name with @code{gnus-adaptive-file-suffix} appended. + @vindex gnus-score-exact-adapt-limit + When doing adaptive scoring, one normally uses substring matching. + However, if the header one matches is short, the possibility for false + positives is great, so if the length of the match is less than + @code{gnus-score-exact-adapt-limit}, exact matching will be used. + If this variable is @code{nil}, which it is by default, exact matching + will always be used. + @node Scoring Tips @subsection Scoring Tips @cindex scoring tips *************** *** 5489,5494 **** --- 5484,5494 ---- Edit the current article (@code{gnus-summary-edit-article}). To finish editing and make the changes permanent, type @kbd{C-c C-c} (@kbd{gnus-summary-edit-article-done}). + @item B q + @kindex B q (Summary) + @findex gnus-summary-fancy-query + If you are using fancy splitting, this command will tell you where an + article would go (@code{gnus-summary-fancy-query}). @end table @node Various Summary Stuff *************** *** 5711,5726 **** @findex gnus-article-subcite @findex gnus-article-hide-signature @findex gnus-article-hide-citation ! Other useful functions you might add to this hook is ! @code{gnus-article-hide-citation} (which hides all cited text); ! @code{gnus-article-hide-signature} (which, umn, hides the signature); ! @code{gnus-article-subcite} (which tries to clean up the mess supercite ! makes in The Hands Of The Mad); @code{gnus-article-treat-overstrike} ! (which treats @samp{^H_} in a reasonable manner); ! @code{gnus-article-remove-cr} (which removes trailing carriage returns); ! @code{gnus-article-de-quoted-unreadable} (which does a naive decoding of ! articles encoded with Quoted-Printable); and ! @code{gnus-article-display-x-face} (which displays any X-Face headers). You can, of course, write your own functions. The functions are called from the article buffer, and you can do anything you like, pretty much. --- 5711,5734 ---- @findex gnus-article-subcite @findex gnus-article-hide-signature @findex gnus-article-hide-citation ! Other useful functions you might add to this hook is: ! ! @table @code ! @item gnus-article-hide-citation ! Hide all cited text. ! @item gnus-article-hide-signature ! Umn, hides the signature. ! @item gnus-article-treat-overstrike ! Treat @samp{^H_} in a reasonable manner. ! @item gnus-article-maybe-highlight ! Do fancy article highlighting. ! @item gnus-article-remove-cr ! Removes trailing carriage returns. ! @item gnus-article-de-quoted-unreadable ! Do naive decoding of articles encoded with Quoted-Printable. ! @item gnus-article-display-x-face ! Displays any X-Face headers. ! @end table You can, of course, write your own functions. The functions are called from the article buffer, and you can do anything you like, pretty much.