*** pub/sgnus/lisp/gnus-cache.el Sun Jul 14 16:54:37 1996 --- sgnus/lisp/gnus-cache.el Tue Jul 30 19:53:59 1996 *************** *** 374,382 **** (file-name-as-directory (if (gnus-use-long-file-name 'not-cache) group ! (let ((group (concat group ""))) ! (if (string-match ":" group) ! (aset group (match-beginning 0) ?/)) (nnheader-replace-chars-in-string group ?. ?/)))) (if (stringp article) article (int-to-string article)))) --- 374,383 ---- (file-name-as-directory (if (gnus-use-long-file-name 'not-cache) group ! (let ((group (nnheader-replace-chars-in-string group ?/ ?_))) ! ;; Translate the first colon into a slash. ! (when (string-match ":" group) ! (aset group (match-beginning 0) ?/)) (nnheader-replace-chars-in-string group ?. ?/)))) (if (stringp article) article (int-to-string article)))) *** pub/sgnus/lisp/gnus-topic.el Fri Jul 19 01:27:47 1996 --- sgnus/lisp/gnus-topic.el Tue Jul 30 19:55:35 1996 *************** *** 378,383 **** --- 378,384 ---- gnus-topic-tallied-groups nil gnus-topology-checked-p nil)) + (defun gnus-topic-check-topology () ;; The first time we set the topology to whatever we have ;; gotten here, which can be rather random. *************** *** 385,390 **** --- 386,393 ---- (gnus-topic-init-alist)) (setq gnus-topology-checked-p t) + ;; Go through the topic alist and make sure that all topics + ;; are in the topic topology. (let ((topics (gnus-topic-list)) (alist gnus-topic-alist) changed) *************** *** 395,401 **** (setq changed t)) (setq alist (cdr alist))) (when changed ! (gnus-topic-enter-dribble))) (let* ((tgroups (apply 'append (mapcar (lambda (entry) (cdr entry)) gnus-topic-alist))) (entry (assoc (caar gnus-topic-topology) gnus-topic-alist)) --- 398,412 ---- (setq changed t)) (setq alist (cdr alist))) (when changed ! (gnus-topic-enter-dribble)) ! ;; Conversely, go through the topology and make sure that all ! ;; topologies have alists. ! (while topics ! (unless (assoc (car topics) gnus-topic-alist) ! (push (list (car topics)) gnus-topic-alist)) ! (pop topics))) ! ;; Go through all living groups and make sure that ! ;; they belong to some topic. (let* ((tgroups (apply 'append (mapcar (lambda (entry) (cdr entry)) gnus-topic-alist))) (entry (assoc (caar gnus-topic-topology) gnus-topic-alist)) *************** *** 403,409 **** group) (while newsrc (unless (member (setq group (gnus-info-group (pop newsrc))) tgroups) ! (setcdr entry (cons group (cdr entry))))))) (defvar gnus-tmp-topics nil) (defun gnus-topic-list (&optional topology) --- 414,428 ---- group) (while newsrc (unless (member (setq group (gnus-info-group (pop newsrc))) tgroups) ! (setcdr entry (cons group (cdr entry)))))) ! ;; Go through all topics and make sure they contain only living groups. ! (let ((alist gnus-topic-alist) ! topic) ! (while (setq topic (pop alist)) ! (while (cdr topic) ! (if (gnus-gethash (cadr topic) gnus-newsrc-hashtb) ! (setq topic (cdr topic)) ! (setcdr topic (cddr topic))))))) (defvar gnus-tmp-topics nil) (defun gnus-topic-list (&optional topology) *** pub/sgnus/lisp/gnus-vis.el Tue Jul 9 08:51:33 1996 --- sgnus/lisp/gnus-vis.el Wed Jul 24 06:36:19 1996 *************** *** 301,466 **** (defun gnus-group-make-menu-bar () (gnus-visual-turn-off-edit-menu 'group) ! (or ! (boundp 'gnus-group-reading-menu) ! (progn ! (easy-menu-define ! gnus-group-reading-menu gnus-group-mode-map "" ! '("Group" ! ["Read" gnus-group-read-group (gnus-group-group-name)] ! ["Select" gnus-group-select-group (gnus-group-group-name)] ! ["See old articles" (gnus-group-select-group 'all) ! :keys "C-u SPC" :active (gnus-group-group-name)] ! ["Catch up" gnus-group-catchup-current (gnus-group-group-name)] ! ["Catch up all articles" gnus-group-catchup-current-all ! (gnus-group-group-name)] ! ["Check for new articles" gnus-group-get-new-news-this-group ! (gnus-group-group-name)] ! ["Toggle subscription" gnus-group-unsubscribe-current-group ! (gnus-group-group-name)] ! ["Kill" gnus-group-kill-group (gnus-group-group-name)] ! ["Yank" gnus-group-yank-group gnus-list-of-killed-groups] ! ["Describe" gnus-group-describe-group (gnus-group-group-name)] ! ["Fetch FAQ" gnus-group-fetch-faq (gnus-group-group-name)] ! ["Edit kill file" gnus-group-edit-local-kill ! (gnus-group-group-name)] ! ;; Actually one should check, if any of the marked groups gives t for ! ;; (gnus-check-backend-function 'request-expire-articles ...) ! ["Expire articles" gnus-group-expire-articles ! (or (and (gnus-group-group-name) ! (gnus-check-backend-function ! 'request-expire-articles ! (gnus-group-group-name))) gnus-group-marked)] ! ["Set group level" gnus-group-set-current-level ! (gnus-group-group-name)] ! ["Select quick" gnus-group-quick-select-group (gnus-group-group-name)] ! )) ! (easy-menu-define ! gnus-group-group-menu gnus-group-mode-map "" ! '("Groups" ! ("Listing" ! ["List unread subscribed groups" gnus-group-list-groups t] ! ["List (un)subscribed groups" gnus-group-list-all-groups t] ! ["List killed groups" gnus-group-list-killed gnus-killed-list] ! ["List zombie groups" gnus-group-list-zombies gnus-zombie-list] ! ["List level..." gnus-group-list-level t] ! ["Describe all groups" gnus-group-describe-all-groups t] ! ["Group apropos..." gnus-group-apropos t] ! ["Group and description apropos..." gnus-group-description-apropos t] ! ["List groups matching..." gnus-group-list-matching t] ! ["List all groups matching..." gnus-group-list-all-matching t] ! ["List active file" gnus-group-list-active t]) ! ("Sort" ! ["Default sort" gnus-group-sort-groups ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by method" gnus-group-sort-groups-by-method ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by rank" gnus-group-sort-groups-by-rank ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by score" gnus-group-sort-groups-by-score ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by level" gnus-group-sort-groups-by-level ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by unread" gnus-group-sort-groups-by-unread ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by name" gnus-group-sort-groups-by-alphabet ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))]) ! ("Mark" ! ["Mark group" gnus-group-mark-group ! (and (gnus-group-group-name) ! (not (memq (gnus-group-group-name) gnus-group-marked)))] ! ["Unmark group" gnus-group-unmark-group ! (and (gnus-group-group-name) ! (memq (gnus-group-group-name) gnus-group-marked))] ! ["Unmark all" gnus-group-unmark-all-groups gnus-group-marked] ! ["Mark regexp..." gnus-group-mark-regexp t] ! ["Mark region" gnus-group-mark-region t] ! ["Mark buffer" gnus-group-mark-buffer t] ! ["Execute command" gnus-group-universal-argument ! (or gnus-group-marked (gnus-group-group-name))]) ! ("Subscribe" ! ["Subscribe to a group" gnus-group-unsubscribe-group t] ! ["Kill all newsgroups in region" gnus-group-kill-region t] ! ["Kill all zombie groups" gnus-group-kill-all-zombies ! gnus-zombie-list] ! ["Kill all groups on level..." gnus-group-kill-level t]) ! ("Foreign groups" ! ["Make a foreign group" gnus-group-make-group t] ! ["Add a directory group" gnus-group-make-directory-group t] ! ["Add the help group" gnus-group-make-help-group t] ! ["Add the archive group" gnus-group-make-archive-group t] ! ["Make a doc group" gnus-group-make-doc-group t] ! ["Make a kiboze group" gnus-group-make-kiboze-group t] ! ["Make a virtual group" gnus-group-make-empty-virtual t] ! ["Add a group to a virtual" gnus-group-add-to-virtual t] ! ["Rename group" gnus-group-rename-group ! (gnus-check-backend-function ! 'request-rename-group (gnus-group-group-name))] ! ["Delete group" gnus-group-delete-group ! (gnus-check-backend-function ! 'request-delete-group (gnus-group-group-name))]) ! ("Editing groups" ! ["Parameters" gnus-group-edit-group-parameters ! (gnus-group-group-name)] ! ["Select method" gnus-group-edit-group-method ! (gnus-group-group-name)] ! ["Info" gnus-group-edit-group (gnus-group-group-name)]) ! ("Score file" ! ["Flush cache" gnus-score-flush-cache ! (or gnus-score-cache gnus-short-name-score-file-cache)]) ! ("Move" ! ["Next" gnus-group-next-group t] ! ["Previous" gnus-group-prev-group t] ! ["Next unread" gnus-group-next-unread-group t] ! ["Previous unread" gnus-group-prev-unread-group t] ! ["Next unread same level" gnus-group-next-unread-group-same-level t] ! ["Previous unread same level" ! gnus-group-previous-unread-group-same-level t] ! ["Jump to group" gnus-group-jump-to-group t] ! ["First unread group" gnus-group-first-unread-group t] ! ["Best unread group" gnus-group-best-unread-group t]) ! ["Transpose" gnus-group-transpose-groups (gnus-group-group-name)] ! ["Read a directory as a group..." gnus-group-enter-directory t] ! )) ! (easy-menu-define ! gnus-group-misc-menu gnus-group-mode-map "" ! '("Misc" ! ["Send a bug report" gnus-bug t] ! ["Send a mail" gnus-group-mail t] ! ["Post an article..." gnus-group-post-news t] ! ["Customize score file" gnus-score-customize t] ! ["Check for new news" gnus-group-get-new-news t] ! ["Activate all groups" gnus-activate-all-groups t] ! ["Delete bogus groups" gnus-group-check-bogus-groups t] ! ["Find new newsgroups" gnus-find-new-newsgroups t] ! ["Restart Gnus" gnus-group-restart t] ! ["Read init file" gnus-group-read-init-file t] ! ["Browse foreign server" gnus-group-browse-foreign-server t] ! ["Enter server buffer" gnus-group-enter-server-mode t] ! ["Expire all expirable articles" gnus-group-expire-all-groups t] ! ["Generate any kiboze groups" nnkiboze-generate-groups t] ! ["Gnus version" gnus-version t] ! ["Save .newsrc files" gnus-group-save-newsrc t] ! ["Suspend Gnus" gnus-group-suspend t] ! ["Clear dribble buffer" gnus-group-clear-dribble t] ! ["Exit from Gnus" gnus-group-exit t] ! ["Exit without saving" gnus-group-quit t] ! ["Edit global kill file" gnus-group-edit-global-kill t] ! ["Read manual" gnus-info-find-node t] ! ["Toggle topics" gnus-topic-mode t] ! ("SOUP" ! ["Pack replies" nnsoup-pack-replies (fboundp 'nnsoup-request-group)] ! ["Send replies" gnus-soup-send-replies ! (fboundp 'gnus-soup-pack-packet)] ! ["Pack packet" gnus-soup-pack-packet (fboundp 'gnus-soup-pack-packet)] ! ["Save areas" gnus-soup-save-areas (fboundp 'gnus-soup-pack-packet)] ! ["Brew SOUP" gnus-soup-brew-soup (fboundp 'gnus-soup-pack-packet)]) ! )) ! (run-hooks 'gnus-group-menu-hook) ! ))) ;; Summary buffer (defun gnus-summary-make-menu-bar () --- 301,466 ---- (defun gnus-group-make-menu-bar () (gnus-visual-turn-off-edit-menu 'group) ! (unless (boundp 'gnus-group-reading-menu) ! ! (easy-menu-define ! gnus-group-reading-menu gnus-group-mode-map "" ! '("Group" ! ["Read" gnus-group-read-group (gnus-group-group-name)] ! ["Select" gnus-group-select-group (gnus-group-group-name)] ! ["See old articles" (gnus-group-select-group 'all) ! :keys "C-u SPC" :active (gnus-group-group-name)] ! ["Catch up" gnus-group-catchup-current (gnus-group-group-name)] ! ["Catch up all articles" gnus-group-catchup-current-all ! (gnus-group-group-name)] ! ["Check for new articles" gnus-group-get-new-news-this-group ! (gnus-group-group-name)] ! ["Toggle subscription" gnus-group-unsubscribe-current-group ! (gnus-group-group-name)] ! ["Kill" gnus-group-kill-group (gnus-group-group-name)] ! ["Yank" gnus-group-yank-group gnus-list-of-killed-groups] ! ["Describe" gnus-group-describe-group (gnus-group-group-name)] ! ["Fetch FAQ" gnus-group-fetch-faq (gnus-group-group-name)] ! ["Edit kill file" gnus-group-edit-local-kill ! (gnus-group-group-name)] ! ;; Actually one should check, if any of the marked groups gives t for ! ;; (gnus-check-backend-function 'request-expire-articles ...) ! ["Expire articles" gnus-group-expire-articles ! (or (and (gnus-group-group-name) ! (gnus-check-backend-function ! 'request-expire-articles ! (gnus-group-group-name))) gnus-group-marked)] ! ["Set group level" gnus-group-set-current-level ! (gnus-group-group-name)] ! ["Select quick" gnus-group-quick-select-group (gnus-group-group-name)] ! )) ! (easy-menu-define ! gnus-group-group-menu gnus-group-mode-map "" ! '("Groups" ! ("Listing" ! ["List unread subscribed groups" gnus-group-list-groups t] ! ["List (un)subscribed groups" gnus-group-list-all-groups t] ! ["List killed groups" gnus-group-list-killed gnus-killed-list] ! ["List zombie groups" gnus-group-list-zombies gnus-zombie-list] ! ["List level..." gnus-group-list-level t] ! ["Describe all groups" gnus-group-describe-all-groups t] ! ["Group apropos..." gnus-group-apropos t] ! ["Group and description apropos..." gnus-group-description-apropos t] ! ["List groups matching..." gnus-group-list-matching t] ! ["List all groups matching..." gnus-group-list-all-matching t] ! ["List active file" gnus-group-list-active t]) ! ("Sort" ! ["Default sort" gnus-group-sort-groups ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by method" gnus-group-sort-groups-by-method ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by rank" gnus-group-sort-groups-by-rank ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by score" gnus-group-sort-groups-by-score ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by level" gnus-group-sort-groups-by-level ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by unread" gnus-group-sort-groups-by-unread ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))] ! ["Sort by name" gnus-group-sort-groups-by-alphabet ! (or (not (boundp 'gnus-topic-mode)) (not gnus-topic-mode))]) ! ("Mark" ! ["Mark group" gnus-group-mark-group ! (and (gnus-group-group-name) ! (not (memq (gnus-group-group-name) gnus-group-marked)))] ! ["Unmark group" gnus-group-unmark-group ! (and (gnus-group-group-name) ! (memq (gnus-group-group-name) gnus-group-marked))] ! ["Unmark all" gnus-group-unmark-all-groups gnus-group-marked] ! ["Mark regexp..." gnus-group-mark-regexp t] ! ["Mark region" gnus-group-mark-region t] ! ["Mark buffer" gnus-group-mark-buffer t] ! ["Execute command" gnus-group-universal-argument ! (or gnus-group-marked (gnus-group-group-name))]) ! ("Subscribe" ! ["Subscribe to a group" gnus-group-unsubscribe-group t] ! ["Kill all newsgroups in region" gnus-group-kill-region t] ! ["Kill all zombie groups" gnus-group-kill-all-zombies ! gnus-zombie-list] ! ["Kill all groups on level..." gnus-group-kill-level t]) ! ("Foreign groups" ! ["Make a foreign group" gnus-group-make-group t] ! ["Add a directory group" gnus-group-make-directory-group t] ! ["Add the help group" gnus-group-make-help-group t] ! ["Add the archive group" gnus-group-make-archive-group t] ! ["Make a doc group" gnus-group-make-doc-group t] ! ["Make a kiboze group" gnus-group-make-kiboze-group t] ! ["Make a virtual group" gnus-group-make-empty-virtual t] ! ["Add a group to a virtual" gnus-group-add-to-virtual t] ! ["Rename group" gnus-group-rename-group ! (gnus-check-backend-function ! 'request-rename-group (gnus-group-group-name))] ! ["Delete group" gnus-group-delete-group ! (gnus-check-backend-function ! 'request-delete-group (gnus-group-group-name))]) ! ("Editing groups" ! ["Parameters" gnus-group-edit-group-parameters ! (gnus-group-group-name)] ! ["Select method" gnus-group-edit-group-method (gnus-group-group-name)] ! ["Info" gnus-group-edit-group (gnus-group-group-name)]) ! ("Score file" ! ["Flush cache" gnus-score-flush-cache ! (or gnus-score-cache gnus-short-name-score-file-cache)]) ! ("Move" ! ["Next" gnus-group-next-group t] ! ["Previous" gnus-group-prev-group t] ! ["Next unread" gnus-group-next-unread-group t] ! ["Previous unread" gnus-group-prev-unread-group t] ! ["Next unread same level" gnus-group-next-unread-group-same-level t] ! ["Previous unread same level" ! gnus-group-previous-unread-group-same-level t] ! ["Jump to group" gnus-group-jump-to-group t] ! ["First unread group" gnus-group-first-unread-group t] ! ["Best unread group" gnus-group-best-unread-group t]) ! ["Transpose" gnus-group-transpose-groups ! (gnus-group-group-name)] ! ["Read a directory as a group..." gnus-group-enter-directory t] ! )) ! (easy-menu-define ! gnus-group-misc-menu gnus-group-mode-map "" ! '("Misc" ! ["Send a bug report" gnus-bug t] ! ["Send a mail" gnus-group-mail t] ! ["Post an article..." gnus-group-post-news t] ! ["Customize score file" gnus-score-customize t] ! ["Check for new news" gnus-group-get-new-news t] ! ["Activate all groups" gnus-activate-all-groups t] ! ["Delete bogus groups" gnus-group-check-bogus-groups t] ! ["Find new newsgroups" gnus-find-new-newsgroups t] ! ["Restart Gnus" gnus-group-restart t] ! ["Read init file" gnus-group-read-init-file t] ! ["Browse foreign server" gnus-group-browse-foreign-server t] ! ["Enter server buffer" gnus-group-enter-server-mode t] ! ["Expire all expirable articles" gnus-group-expire-all-groups t] ! ["Generate any kiboze groups" nnkiboze-generate-groups t] ! ["Gnus version" gnus-version t] ! ["Save .newsrc files" gnus-group-save-newsrc t] ! ["Suspend Gnus" gnus-group-suspend t] ! ["Clear dribble buffer" gnus-group-clear-dribble t] ! ["Edit global kill file" gnus-group-edit-global-kill t] ! ["Read manual" gnus-info-find-node t] ! ["Toggle topics" gnus-topic-mode t] ! ("SOUP" ! ["Pack replies" nnsoup-pack-replies (fboundp 'nnsoup-request-group)] ! ["Send replies" gnus-soup-send-replies ! (fboundp 'gnus-soup-pack-packet)] ! ["Pack packet" gnus-soup-pack-packet (fboundp 'gnus-soup-pack-packet)] ! ["Save areas" gnus-soup-save-areas (fboundp 'gnus-soup-pack-packet)] ! ["Brew SOUP" gnus-soup-brew-soup (fboundp 'gnus-soup-pack-packet)]) ! ["Exit from Gnus" gnus-group-exit t] ! ["Exit without saving" gnus-group-quit t] ! )) ! ! (run-hooks 'gnus-group-menu-hook) ! )) ;; Summary buffer (defun gnus-summary-make-menu-bar () *************** *** 469,578 **** (unless (boundp 'gnus-summary-misc-menu) (easy-menu-define - gnus-summary-misc-menu gnus-summary-mode-map "" - '("Misc" - ("Mark" - ("Read" - ["Mark as read" gnus-summary-mark-as-read-forward t] - ["Mark same subject and select" - gnus-summary-kill-same-subject-and-select t] - ["Mark same subject" gnus-summary-kill-same-subject t] - ["Catchup" gnus-summary-catchup t] - ["Catchup all" gnus-summary-catchup-all t] - ["Catchup to here" gnus-summary-catchup-to-here t] - ["Catchup region" gnus-summary-mark-region-as-read t] - ["Mark excluded" gnus-summary-limit-mark-excluded-as-read t]) - ("Various" - ["Tick" gnus-summary-tick-article-forward t] - ["Mark as dormant" gnus-summary-mark-as-dormant t] - ["Remove marks" gnus-summary-clear-mark-forward t] - ["Set expirable mark" gnus-summary-mark-as-expirable t] - ["Set bookmark" gnus-summary-set-bookmark t] - ["Remove bookmark" gnus-summary-remove-bookmark t]) - ("Limit" - ["Marks..." gnus-summary-limit-to-marks t] - ["Subject..." gnus-summary-limit-to-subject t] - ["Author..." gnus-summary-limit-to-author t] - ["Score" gnus-summary-limit-to-score t] - ["Unread" gnus-summary-limit-to-unread t] - ["Non-dormant" gnus-summary-limit-exclude-dormant t] - ["Articles" gnus-summary-limit-to-articles t] - ["Pop limit" gnus-summary-pop-limit t] - ["Show dormant" gnus-summary-limit-include-dormant t] - ["Hide childless dormant" - gnus-summary-limit-exclude-childless-dormant t] - ;;["Hide thread" gnus-summary-limit-exclude-thread t] - ["Show expunged" gnus-summary-show-all-expunged t]) - ("Process mark" - ["Set mark" gnus-summary-mark-as-processable t] - ["Remove mark" gnus-summary-unmark-as-processable t] - ["Remove all marks" gnus-summary-unmark-all-processable t] - ["Mark above" gnus-uu-mark-over t] - ["Mark series" gnus-uu-mark-series t] - ["Mark region" gnus-uu-mark-region t] - ["Mark by regexp..." gnus-uu-mark-by-regexp t] - ["Mark all" gnus-uu-mark-all t] - ["Mark buffer" gnus-uu-mark-buffer t] - ["Mark sparse" gnus-uu-mark-sparse t] - ["Mark thread" gnus-uu-mark-thread t] - ["Unmark thread" gnus-uu-unmark-thread t])) - ("Scroll article" - ["Page forward" gnus-summary-next-page t] - ["Page backward" gnus-summary-prev-page t] - ["Line forward" gnus-summary-scroll-up t]) - ("Move" - ["Next unread article" gnus-summary-next-unread-article t] - ["Previous unread article" gnus-summary-prev-unread-article t] - ["Next article" gnus-summary-next-article t] - ["Previous article" gnus-summary-prev-article t] - ["Next unread subject" gnus-summary-next-unread-subject t] - ["Previous unread subject" gnus-summary-prev-unread-subject t] - ["Next article same subject" gnus-summary-next-same-subject t] - ["Previous article same subject" gnus-summary-prev-same-subject t] - ["First unread article" gnus-summary-first-unread-article t] - ["Best unread article" gnus-summary-best-unread-article t] - ["Go to subject number..." gnus-summary-goto-subject t] - ["Go to article number..." gnus-summary-goto-article t] - ["Go to the last article" gnus-summary-goto-last-article t] - ["Pop article off history" gnus-summary-pop-article t]) - ("Sort" - ["Sort by number" gnus-summary-sort-by-number t] - ["Sort by author" gnus-summary-sort-by-author t] - ["Sort by subject" gnus-summary-sort-by-subject t] - ["Sort by date" gnus-summary-sort-by-date t] - ["Sort by score" gnus-summary-sort-by-score t]) - ("Exit" - ["Catchup and exit" gnus-summary-catchup-and-exit t] - ["Catchup all and exit" gnus-summary-catchup-and-exit t] - ["Catchup and goto next" gnus-summary-catchup-and-goto-next-group t] - ["Exit group" gnus-summary-exit t] - ["Exit group without updating" gnus-summary-exit-no-update t] - ["Exit and goto next group" gnus-summary-next-group t] - ["Exit and goto prev group" gnus-summary-prev-group t] - ["Reselect group" gnus-summary-reselect-current-group t] - ["Rescan group" gnus-summary-rescan-group t]) - ("Help" - ["Fetch group FAQ" gnus-summary-fetch-faq t] - ["Describe group" gnus-summary-describe-group t] - ["Read manual" gnus-info-find-node t]) - ("Cache" - ["Enter article" gnus-cache-enter-article t] - ["Remove article" gnus-cache-remove-article t]) - ("Modes" - ["Pick and read" gnus-pick-mode t] - ["Binary" gnus-binary-mode t]) - ["Filter articles..." gnus-summary-execute-command t] - ["Run command on subjects..." gnus-summary-universal-argument t] - ["Toggle line truncation" gnus-summary-toggle-truncation t] - ["Expand window" gnus-summary-expand-window t] - ["Expire expirable articles" gnus-summary-expire-articles - (gnus-check-backend-function - 'request-expire-articles gnus-newsgroup-name)] - ["Edit local kill file" gnus-summary-edit-local-kill t] - ["Edit main kill file" gnus-summary-edit-global-kill t] - )) - - (easy-menu-define gnus-summary-kill-menu gnus-summary-mode-map "" (cons "Score" --- 469,474 ---- *************** *** 830,835 **** --- 726,835 ---- ;;["Send" gnus-summary-send-draft t] ;;["Send bounced" gnus-resend-bounced-mail t]) )) + + (easy-menu-define + gnus-summary-misc-menu gnus-summary-mode-map "" + '("Misc" + ("Mark" + ("Read" + ["Mark as read" gnus-summary-mark-as-read-forward t] + ["Mark same subject and select" + gnus-summary-kill-same-subject-and-select t] + ["Mark same subject" gnus-summary-kill-same-subject t] + ["Catchup" gnus-summary-catchup t] + ["Catchup all" gnus-summary-catchup-all t] + ["Catchup to here" gnus-summary-catchup-to-here t] + ["Catchup region" gnus-summary-mark-region-as-read t] + ["Mark excluded" gnus-summary-limit-mark-excluded-as-read t]) + ("Various" + ["Tick" gnus-summary-tick-article-forward t] + ["Mark as dormant" gnus-summary-mark-as-dormant t] + ["Remove marks" gnus-summary-clear-mark-forward t] + ["Set expirable mark" gnus-summary-mark-as-expirable t] + ["Set bookmark" gnus-summary-set-bookmark t] + ["Remove bookmark" gnus-summary-remove-bookmark t]) + ("Limit" + ["Marks..." gnus-summary-limit-to-marks t] + ["Subject..." gnus-summary-limit-to-subject t] + ["Author..." gnus-summary-limit-to-author t] + ["Score" gnus-summary-limit-to-score t] + ["Unread" gnus-summary-limit-to-unread t] + ["Non-dormant" gnus-summary-limit-exclude-dormant t] + ["Articles" gnus-summary-limit-to-articles t] + ["Pop limit" gnus-summary-pop-limit t] + ["Show dormant" gnus-summary-limit-include-dormant t] + ["Hide childless dormant" + gnus-summary-limit-exclude-childless-dormant t] + ;;["Hide thread" gnus-summary-limit-exclude-thread t] + ["Show expunged" gnus-summary-show-all-expunged t]) + ("Process mark" + ["Set mark" gnus-summary-mark-as-processable t] + ["Remove mark" gnus-summary-unmark-as-processable t] + ["Remove all marks" gnus-summary-unmark-all-processable t] + ["Mark above" gnus-uu-mark-over t] + ["Mark series" gnus-uu-mark-series t] + ["Mark region" gnus-uu-mark-region t] + ["Mark by regexp..." gnus-uu-mark-by-regexp t] + ["Mark all" gnus-uu-mark-all t] + ["Mark buffer" gnus-uu-mark-buffer t] + ["Mark sparse" gnus-uu-mark-sparse t] + ["Mark thread" gnus-uu-mark-thread t] + ["Unmark thread" gnus-uu-unmark-thread t])) + ("Scroll article" + ["Page forward" gnus-summary-next-page t] + ["Page backward" gnus-summary-prev-page t] + ["Line forward" gnus-summary-scroll-up t]) + ("Move" + ["Next unread article" gnus-summary-next-unread-article t] + ["Previous unread article" gnus-summary-prev-unread-article t] + ["Next article" gnus-summary-next-article t] + ["Previous article" gnus-summary-prev-article t] + ["Next unread subject" gnus-summary-next-unread-subject t] + ["Previous unread subject" gnus-summary-prev-unread-subject t] + ["Next article same subject" gnus-summary-next-same-subject t] + ["Previous article same subject" gnus-summary-prev-same-subject t] + ["First unread article" gnus-summary-first-unread-article t] + ["Best unread article" gnus-summary-best-unread-article t] + ["Go to subject number..." gnus-summary-goto-subject t] + ["Go to article number..." gnus-summary-goto-article t] + ["Go to the last article" gnus-summary-goto-last-article t] + ["Pop article off history" gnus-summary-pop-article t]) + ("Sort" + ["Sort by number" gnus-summary-sort-by-number t] + ["Sort by author" gnus-summary-sort-by-author t] + ["Sort by subject" gnus-summary-sort-by-subject t] + ["Sort by date" gnus-summary-sort-by-date t] + ["Sort by score" gnus-summary-sort-by-score t]) + ("Help" + ["Fetch group FAQ" gnus-summary-fetch-faq t] + ["Describe group" gnus-summary-describe-group t] + ["Read manual" gnus-info-find-node t]) + ("Cache" + ["Enter article" gnus-cache-enter-article t] + ["Remove article" gnus-cache-remove-article t]) + ("Modes" + ["Pick and read" gnus-pick-mode t] + ["Binary" gnus-binary-mode t]) + ["Filter articles..." gnus-summary-execute-command t] + ["Run command on subjects..." gnus-summary-universal-argument t] + ["Toggle line truncation" gnus-summary-toggle-truncation t] + ["Expand window" gnus-summary-expand-window t] + ["Expire expirable articles" gnus-summary-expire-articles + (gnus-check-backend-function + 'request-expire-articles gnus-newsgroup-name)] + ["Edit local kill file" gnus-summary-edit-local-kill t] + ["Edit main kill file" gnus-summary-edit-global-kill t] + ("Exit" + ["Catchup and exit" gnus-summary-catchup-and-exit t] + ["Catchup all and exit" gnus-summary-catchup-and-exit t] + ["Catchup and goto next" gnus-summary-catchup-and-goto-next-group t] + ["Exit group" gnus-summary-exit t] + ["Exit group without updating" gnus-summary-exit-no-update t] + ["Exit and goto next group" gnus-summary-next-group t] + ["Exit and goto prev group" gnus-summary-prev-group t] + ["Reselect group" gnus-summary-reselect-current-group t] + ["Rescan group" gnus-summary-rescan-group t]))) + (run-hooks 'gnus-summary-menu-hook) )) *** pub/sgnus/lisp/gnus.el Fri Jul 19 01:27:45 1996 --- sgnus/lisp/gnus.el Tue Jul 30 19:55:02 1996 *************** *** 1774,1780 **** "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version-number "5.2.37" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) --- 1774,1780 ---- "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version-number "5.2.38" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) *************** *** 3117,3122 **** --- 3117,3124 ---- (defun gnus-make-directory (dir) "Make DIRECTORY recursively." + (unless dir + (error "No directory to make")) ;; Why don't we use `(make-directory dir 'parents)'? That's just one ;; of the many mysteries of the universe. (let* ((dir (expand-file-name dir default-directory)) *************** *** 4823,4837 **** (defun gnus-group-prefixed-name (group method) "Return the whole name from GROUP and METHOD." (and (stringp method) (setq method (gnus-server-to-method method))) ! (concat (format "%s" (car method)) ! (if (and ! (or (assoc (format "%s" (car method)) ! (gnus-methods-using 'address)) ! (gnus-server-equal method gnus-message-archive-method)) ! (nth 1 method) ! (not (string= (nth 1 method) ""))) ! (concat "+" (nth 1 method))) ! ":" group)) (defun gnus-group-real-prefix (group) "Return the prefix of the current group name." --- 4825,4841 ---- (defun gnus-group-prefixed-name (group method) "Return the whole name from GROUP and METHOD." (and (stringp method) (setq method (gnus-server-to-method method))) ! (if (not method) ! group ! (concat (format "%s" (car method)) ! (if (and ! (or (assoc (format "%s" (car method)) ! (gnus-methods-using 'address)) ! (gnus-server-equal method gnus-message-archive-method)) ! (nth 1 method) ! (not (string= (nth 1 method) ""))) ! (concat "+" (nth 1 method))) ! ":" group))) (defun gnus-group-real-prefix (group) "Return the prefix of the current group name." *************** *** 5512,5517 **** --- 5516,5522 ---- (goto-char b) ;; ... or insert the line. (or + t ;; Don't activate group. (gnus-active group) (gnus-activate-group group) (error "%s error: %s" group (gnus-status-message group))) *************** *** 5655,5673 **** (completing-read "Method: " (append gnus-valid-select-methods gnus-server-alist) nil t nil 'gnus-method-history))) ! (cond ((assoc method gnus-valid-select-methods) ! (list method ! (if (memq 'prompt-address ! (assoc method gnus-valid-select-methods)) ! (read-string "Address: ") ! ""))) ! ((assoc method gnus-server-alist) ! (list method)) ! (t ! (list method "")))))) ! (let* ((meth (and method (if address (list (intern method) address) ! method))) (nname (if method (gnus-group-prefixed-name name meth) name)) backend info) (when (gnus-gethash nname gnus-newsrc-hashtb) --- 5660,5683 ---- (completing-read "Method: " (append gnus-valid-select-methods gnus-server-alist) nil t nil 'gnus-method-history))) ! (cond ! ((equal method "") ! (setq method gnus-select-method)) ! ((assoc method gnus-valid-select-methods) ! (list method ! (if (memq 'prompt-address ! (assoc method gnus-valid-select-methods)) ! (read-string "Address: ") ! ""))) ! ((assoc method gnus-server-alist) ! (list method)) ! (t ! (list method "")))))) ! (let* ((meth (when (and method ! (not (gnus-server-equal method gnus-select-method))) ! (if address (list (intern method) address) ! method))) (nname (if method (gnus-group-prefixed-name name meth) name)) backend info) (when (gnus-gethash nname gnus-newsrc-hashtb) *************** *** 5748,5756 **** ;; We find the proper prefixed name. (setq new-name ! (gnus-group-prefixed-name ! (gnus-group-real-name new-name) ! (gnus-info-method (gnus-get-info group)))) (gnus-message 6 "Renaming group %s to %s..." group new-name) (prog1 --- 5758,5770 ---- ;; We find the proper prefixed name. (setq new-name ! (if (equal (gnus-group-real-name new-name) new-name) ! ;; Native group. ! new-name ! ;; Foreign group. ! (gnus-group-prefixed-name ! (gnus-group-real-name new-name) ! (gnus-info-method (gnus-get-info group))))) (gnus-message 6 "Renaming group %s to %s..." group new-name) (prog1 *************** *** 5959,5965 **** (setq ext (format "<%d>" (setq i (1+ i))))) (gnus-group-make-group (gnus-group-real-name group) ! (list 'nndir group (list 'nndir-directory dir))))) (defun gnus-group-make-kiboze-group (group address scores) "Create an nnkiboze group. --- 5973,5979 ---- (setq ext (format "<%d>" (setq i (1+ i))))) (gnus-group-make-group (gnus-group-real-name group) ! (list 'nndir (gnus-group-real-name group) (list 'nndir-directory dir))))) (defun gnus-group-make-kiboze-group (group address scores) "Create an nnkiboze group. *************** *** 9260,9286 **** (active (gnus-active group)) range) ;; First peel off all illegal article numbers. ! (if active ! (let ((ids articles) ! id first) ! (while ids ! (setq id (car ids)) ! (if (and first (> id (cdr active))) ! (progn ! ;; We'll end up in this situation in one particular ! ;; obscure situation. If you re-scan a group and get ! ;; a new article that is cross-posted to a different ! ;; group that has not been re-scanned, you might get ! ;; crossposted article that has a higher number than ! ;; Gnus believes possible. So we re-activate this ! ;; group as well. This might mean doing the ! ;; crossposting thingy will *increase* the number ! ;; of articles in some groups. Tsk, tsk. ! (setq active (or (gnus-activate-group group) active)))) ! (if (or (> id (cdr active)) (< id (car active))) ! (setq articles (delq id articles))) ! (setq ids (cdr ids))))) ;; If the read list is nil, we init it. (and active (null (gnus-info-read info)) --- 9274,9297 ---- (active (gnus-active group)) range) ;; First peel off all illegal article numbers. ! (when active ! (let ((ids articles) ! id first) ! (while (setq id (pop ids)) ! (when (and first (> id (cdr active))) ! ;; We'll end up in this situation in one particular ! ;; obscure situation. If you re-scan a group and get ! ;; a new article that is cross-posted to a different ! ;; group that has not been re-scanned, you might get ! ;; crossposted article that has a higher number than ! ;; Gnus believes possible. So we re-activate this ! ;; group as well. This might mean doing the ! ;; crossposting thingy will *increase* the number ! ;; of articles in some groups. Tsk, tsk. ! (setq active (or (gnus-activate-group group) active))) ! (when (or (> id (cdr active)) (< id (car active))) ! (setq articles (delq id articles)))))) ;; If the read list is nil, we init it. (and active (null (gnus-info-read info)) *************** *** 13298,13315 **** gnus-article-save-directory (car split-name)))) (car (push result file-name-history))))))) ;; If we have read a directory, we append the default file name. (when (file-directory-p file) (setq file (concat (file-name-as-directory file) (file-name-nondirectory default-name)))) ! ;; Possibly translate some charaters. (nnheader-translate-file-chars file))) (defun gnus-article-archive-name (group) "Return the first instance of an \"Archive-name\" in the current buffer." (let ((case-fold-search t)) (when (re-search-forward "archive-name: *\\([^ \n\t]+\\)[ \t]*$" nil t) ! (match-string 1)))) (defun gnus-summary-save-in-rmail (&optional filename) "Append this article to Rmail file. --- 13309,13330 ---- gnus-article-save-directory (car split-name)))) (car (push result file-name-history))))))) + ;; Create the directory. + (unless (equal (directory-file-name file) file) + (make-directory (file-name-directory file) t)) ;; If we have read a directory, we append the default file name. (when (file-directory-p file) (setq file (concat (file-name-as-directory file) (file-name-nondirectory default-name)))) ! ;; Possibly translate some characters. (nnheader-translate-file-chars file))) (defun gnus-article-archive-name (group) "Return the first instance of an \"Archive-name\" in the current buffer." (let ((case-fold-search t)) (when (re-search-forward "archive-name: *\\([^ \n\t]+\\)[ \t]*$" nil t) ! (nnheader-concat gnus-article-save-directory ! (match-string 1))))) (defun gnus-summary-save-in-rmail (&optional filename) "Append this article to Rmail file. *** pub/sgnus/lisp/message.el Wed Jul 17 01:27:36 1996 --- sgnus/lisp/message.el Tue Jul 30 21:30:18 1996 *************** *** 968,978 **** (file-exists-p message-signature-file)) signature)))) (when signature - ; ;; Remove blank lines at the end of the message. - (goto-char (point-max)) - ; (skip-chars-backward " \t\n") - ; (delete-region (point) (point-max)) ;; Insert the signature. (unless (bolp) (insert "\n")) (insert "\n-- \n") --- 968,975 ---- (file-exists-p message-signature-file)) signature)))) (when signature ;; Insert the signature. + (goto-char (point-max)) (unless (bolp) (insert "\n")) (insert "\n-- \n") *************** *** 1055,1061 **** (name (if enter-string (read-string "New buffer name: " name-default) name-default))) ! (rename-buffer name t))))) (defun message-fill-yanked-message (&optional justifyp) "Fill the paragraphs of a message yanked into this one. --- 1052,1062 ---- (name (if enter-string (read-string "New buffer name: " name-default) name-default))) ! (rename-buffer name t) ! (setq buffer-auto-save-file-name ! (format "%s%s" ! (file-name-as-directory message-autosave-directory) ! (file-name-nondirectory buffer-auto-save-file-name))))))) (defun message-fill-yanked-message (&optional justifyp) "Fill the paragraphs of a message yanked into this one. *************** *** 1684,1691 **** (concat "^" (regexp-quote mail-header-separator) "$")) (forward-line 1) (let ((b (point))) ! (or (re-search-forward message-signature-separator nil t) ! (goto-char (point-max))) (beginning-of-line) (or (re-search-backward "[^ \n\t]" b t) (y-or-n-p "Empty article. Really post? "))))) --- 1685,1692 ---- (concat "^" (regexp-quote mail-header-separator) "$")) (forward-line 1) (let ((b (point))) ! (goto-char (point-max)) ! (re-search-backward message-signature-separator nil t) (beginning-of-line) (or (re-search-backward "[^ \n\t]" b t) (y-or-n-p "Empty article. Really post? "))))) *************** *** 1715,1721 **** (message-check-element 'signature) (progn (goto-char (point-max)) ! (if (or (not (re-search-backward "^-- $" nil t)) (search-forward message-forward-end-separator nil t)) t (if (> (count-lines (point) (point-max)) 5) --- 1716,1722 ---- (message-check-element 'signature) (progn (goto-char (point-max)) ! (if (or (not (re-search-backward message-signature-separator nil t)) (search-forward message-forward-end-separator nil t)) t (if (> (count-lines (point) (point-max)) 5) *************** *** 2983,2989 **** ;;; Help stuff. (defmacro message-y-or-n-p (question show &rest text) ! "Ask QUESTION, displaying the rest of the arguments in a temporary buffer." `(message-talkative-question 'y-or-n-p ,question ,show ,@text)) (defun message-talkative-question (ask question show &rest text) --- 2984,2990 ---- ;;; Help stuff. (defmacro message-y-or-n-p (question show &rest text) ! "Ask QUESTION, displaying the rest of the arguments in a temp. buffer if SHOW" `(message-talkative-question 'y-or-n-p ,question ,show ,@text)) (defun message-talkative-question (ask question show &rest text) *** pub/sgnus/lisp/nndir.el Sun Apr 21 19:39:38 1996 --- sgnus/lisp/nndir.el Wed Jul 24 07:46:54 1996 *************** *** 63,68 **** --- 63,70 ---- server)) (unless (assq 'nndir-directory defs) (push `(nndir-directory ,server) defs)) + ;(when (equal server "") + ; (setq server (cadr (assq 'nndir-directory defs)))) (push `(nndir-current-group ,(file-name-nondirectory (directory-file-name nndir-directory))) defs) *** pub/sgnus/lisp/nnmail.el Fri Jul 19 00:15:00 1996 --- sgnus/lisp/nnmail.el Tue Jul 30 19:54:04 1996 *************** *** 440,450 **** (goto-char (point-min)) (if (looking-at "movemail: ") (delete-region (point-min) (match-end 0))) ! (beep t) ! (message (concat "movemail: " ! (buffer-substring (point-min) ! (point-max)))) ! (sit-for 3) (setq tofile nil)))))) (and errors (buffer-name errors) --- 440,446 ---- (goto-char (point-min)) (if (looking-at "movemail: ") (delete-region (point-min) (match-end 0))) ! (error (concat "movemail: " (buffer-string))) (setq tofile nil)))))) (and errors (buffer-name errors) *** pub/sgnus/lisp/nntp.el Thu Jul 18 02:03:41 1996 --- sgnus/lisp/nntp.el Tue Jul 30 19:55:02 1996 *************** *** 351,356 **** --- 351,357 ---- "Open the virtual server SERVER. If CONNECTIONLESS is non-nil, don't attempt to connect to any physical servers." + (nnheader-init-server-buffer) ;; Called with just a port number as the defs. (when (or (stringp (car defs)) (numberp (car defs))) *************** *** 1058,1064 **** ;; We open the nntp server if it is down. (or (nntp-server-opened (nnoo-current-server 'nntp)) (nntp-open-server (nnoo-current-server 'nntp)) ! (error (nntp-status-message))) ;; Send the strings. (process-send-string nntp-server-process cmd) t)) --- 1059,1065 ---- ;; We open the nntp server if it is down. (or (nntp-server-opened (nnoo-current-server 'nntp)) (nntp-open-server (nnoo-current-server 'nntp)) ! (error "Couldn't open server: " (nntp-status-message))) ;; Send the strings. (process-send-string nntp-server-process cmd) t)) *************** *** 1193,1202 **** "nntpd" nntp-server-buffer server nntp-port-number)) (defun nntp-open-rlogin (server) (let ((proc (if nntp-rlogin-user-name (start-process "nntpd" nntp-server-buffer "rsh" ! "-l" nntp-rlogin-user-name server (mapconcat 'identity nntp-rlogin-parameters " ")) (start-process --- 1194,1204 ---- "nntpd" nntp-server-buffer server nntp-port-number)) (defun nntp-open-rlogin (server) + "Open a connection to SERVER using rsh." (let ((proc (if nntp-rlogin-user-name (start-process "nntpd" nntp-server-buffer "rsh" ! server "-l" nntp-rlogin-user-name (mapconcat 'identity nntp-rlogin-parameters " ")) (start-process *** pub/sgnus/lisp/smiley.el Wed Jul 17 23:58:59 1996 --- sgnus/lisp/smiley.el Sat Jul 20 19:03:19 1996 *************** *** 49,55 **** ("\\(:-+\\]+\\)\\W" 1 "FaceGoofy.xpm") ("\\(:-*D\\)\\W" 1 "FaceGrinning.xpm") ("\\(:-*[)>}»]+\\)\\W" 1 "FaceHappy.xpm") ! ("\\(:-*[/\\\"]\\)[^\\]" 1 "FaceIronic.xpm") ("\\([8|]-*[|Oo%]\\)\\W" 1 "FaceKOed.xpm") ("\\([:|]-*#+\\)\\W" 1 "FaceNyah.xpm") ("\\(:-*[({]+\\)\\W" 1 "FaceSad.xpm") --- 49,55 ---- ("\\(:-+\\]+\\)\\W" 1 "FaceGoofy.xpm") ("\\(:-*D\\)\\W" 1 "FaceGrinning.xpm") ("\\(:-*[)>}»]+\\)\\W" 1 "FaceHappy.xpm") ! ("\\(:-*[/\\\"]\\)[^/]" 1 "FaceIronic.xpm") ("\\([8|]-*[|Oo%]\\)\\W" 1 "FaceKOed.xpm") ("\\([:|]-*#+\\)\\W" 1 "FaceNyah.xpm") ("\\(:-*[({]+\\)\\W" 1 "FaceSad.xpm") *************** *** 130,163 **** ;;;###autoload (defun smiley-buffer (&optional buffer st nd) (interactive) ! (save-excursion ! (and buffer (set-buffer buffer)) ! (let ((buffer-read-only nil) ! (alist smiley-regexp-alist) ! entry regexp beg group file) ! (goto-char (or st (point-min))) ! (setq beg (point)) ! ;; loop through alist ! (while (setq entry (pop alist)) ! (setq regexp (car entry) ! group (cadr entry) ! file (caddr entry)) ! (goto-char beg) ! (while (re-search-forward regexp nd t) ! (let* ((start (match-beginning group)) ! (end (match-end group)) ! (glyph (smiley-create-glyph (buffer-substring start end) ! file))) ! (when glyph ! (mapcar 'delete-annotation (annotations-at end)) ! (let ((ext (make-extent start end))) ! (set-extent-property ext 'invisible t) ! (set-extent-property ext 'end-open t) ! (set-extent-property ext 'intangible t)) ! (make-annotation glyph end 'text) ! (when (smiley-end-paren-p start end) ! (make-annotation ")" end 'text)) ! (goto-char end)))))))) (defun smiley-end-paren-p (start end) "Try to guess whether the current smiley is an end-paren smiley." --- 130,165 ---- ;;;###autoload (defun smiley-buffer (&optional buffer st nd) (interactive) ! (when (featurep 'x) ! (save-excursion ! (when buffer ! (set-buffer buffer)) ! (let ((buffer-read-only nil) ! (alist smiley-regexp-alist) ! entry regexp beg group file) ! (goto-char (or st (point-min))) ! (setq beg (point)) ! ;; loop through alist ! (while (setq entry (pop alist)) ! (setq regexp (car entry) ! group (cadr entry) ! file (caddr entry)) ! (goto-char beg) ! (while (re-search-forward regexp nd t) ! (let* ((start (match-beginning group)) ! (end (match-end group)) ! (glyph (smiley-create-glyph (buffer-substring start end) ! file))) ! (when glyph ! (mapcar 'delete-annotation (annotations-at end)) ! (let ((ext (make-extent start end))) ! (set-extent-property ext 'invisible t) ! (set-extent-property ext 'end-open t) ! (set-extent-property ext 'intangible t)) ! (make-annotation glyph end 'text) ! (when (smiley-end-paren-p start end) ! (make-annotation ")" end 'text)) ! (goto-char end))))))))) (defun smiley-end-paren-p (start end) "Try to guess whether the current smiley is an end-paren smiley." *** pub/sgnus/lisp/ChangeLog Fri Jul 19 01:27:46 1996 --- sgnus/lisp/ChangeLog Tue Jul 30 19:54:59 1996 *************** *** 1,3 **** --- 1,68 ---- + Tue Jul 30 00:00:28 1996 Lars Magne Ingebrigtsen + + * nntp.el (nntp-open-server): Init server buffer. + + * gnus.el (gnus-group-prefixed-name): Do the right thing with nil + methods. + (gnus-group-rename-group): Would act oddly when renaming native + groups. + + Sat Jul 27 17:46:42 1996 Lars Magne Ingebrigtsen + + * message.el (message-check-news-syntax): Use signature + separator. + + * gnus.el (gnus-group-make-group): Beep at "" methods. + (gnus-group-make-group): Don't prefix native groups. + + * nnmail.el (nnmail-move-inbox): Bug out on movemail errors. + + * gnus-cache.el (gnus-cache-file-name): Would bug out on group + names containing slashes. + + * gnus-topic.el (gnus-topic-check-topology): Make sure all groups + in topics are living. + + * nntp.el (nntp-send-strings-to-server): Give a better error + message. + + Sat Jul 27 17:33:22 1996 Teddy + + * nntp.el (nntp-open-rlogin): Change parameter order. + + Sat Jul 27 17:19:47 1996 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-check-topology): Make sure all + topologies have alists. + + Wed Jul 24 08:23:26 1996 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-jump-to-group): Don't activate group. + + Wed Jul 24 07:47:47 1996 Katsumi Yamaoka + + * message.el (message-rename-buffer): Rename autosave name. + + Wed Jul 24 06:24:07 1996 Lars Magne Ingebrigtsen + + * gnus-vis.el (gnus-group-make-menu-bar): Moved Misc menu last. + (gnus-summary-make-menu-bar): Ditto. + + Sat Jul 20 00:59:22 1996 Lars Magne Ingebrigtsen + + * smiley.el (smiley-buffer): Only do smilies under X. + + * gnus.el (gnus-make-directory): Beep on nil dirs. + (gnus-article-archive-name): Prepend the save directory. + + Fri Jul 19 23:08:52 1996 Hallvard B. Furuseth + + * message.el (message-y-or-n-p): Doc fix. + + Fri Jul 19 02:12:58 1996 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.2.37 is released. + Fri Jul 19 00:31:22 1996 Lars Magne Ingebrigtsen * gnus.el (gnus-subscribe-newsgroup): Add new groups to top-level *** pub/sgnus/texi/gnus.texi Fri Jul 19 00:43:45 1996 --- sgnus/texi/gnus.texi Tue Jul 30 19:55:04 1996 *************** *** 541,547 **** @item gnus-subscribe-hierarchically @vindex gnus-subscribe-hierarchically ! Subscribe all new groups hierarchically. @item gnus-subscribe-interactively @vindex gnus-subscribe-interactively --- 541,553 ---- @item gnus-subscribe-hierarchically @vindex gnus-subscribe-hierarchically ! Subscribe all new groups hierarchically. The difference between this ! function and @code{gnus-subscribe-alphabetically} is slight. ! {gnus-subscribe-alphabetically} will subscribe new groups in a strictly ! alphabetical fashion, while this function will enter groups into it's ! hierarchy. So if you want to have the @samp{rec} hierarchy before the ! @samp{comp} hierarchy, this function will not mess that configuration ! up. Or something like that. @item gnus-subscribe-interactively @vindex gnus-subscribe-interactively *************** *** 1495,1503 **** @kindex G r (Group) @findex gnus-group-rename-group Rename the current group to something else ! (@code{gnus-group-rename-group}). This is legal only on some groups -- ! mail groups mostly. This command might very well be quite slow on some ! backends. @item G e @kindex G e (Group) --- 1501,1509 ---- @kindex G r (Group) @findex gnus-group-rename-group Rename the current group to something else ! (@code{gnus-group-rename-group}). This is legal only on some ! groups---mail groups mostly. This command might very well be quite slow ! on some backends. @item G e @kindex G e (Group) *************** *** 1536,1542 **** Make a Gnus archive group (@code{gnus-group-make-archive-group}). By default a group pointing to the most recent articles will be created (@code{gnus-group-recent-archive-directory}), but given a prefix, a full ! group will be created from from @code{gnus-group-archive-directory}. @item G k @kindex G k (Group) --- 1542,1548 ---- Make a Gnus archive group (@code{gnus-group-make-archive-group}). By default a group pointing to the most recent articles will be created (@code{gnus-group-recent-archive-directory}), but given a prefix, a full ! group will be created from @code{gnus-group-archive-directory}. @item G k @kindex G k (Group) *************** *** 2785,2791 **** @item gnus-auto-select-same @vindex gnus-auto-select-same If non-@code{nil}, all the movement commands will try to go to the next ! article with the same subject as the current. This variable is not particularly useful if you use a threaded display. @item gnus-summary-check-current --- 2791,2799 ---- @item gnus-auto-select-same @vindex gnus-auto-select-same If non-@code{nil}, all the movement commands will try to go to the next ! article with the same subject as the current. (@dfn{Same} here might ! mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit} ! for details (@pxref{Customizing Threading}).) This variable is not particularly useful if you use a threaded display. @item gnus-summary-check-current *************** *** 5208,5226 **** @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. The default ! action under Emacs is to fork off an @code{xv} to view the face; under ! XEmacs the default action is to display the face before the @code{From} ! header. (It's nicer if XEmacs has been compiled with X-Face support -- ! that will make display somewhat faster. If there's no native X-Face ! support, Gnus will try to convert the @code{X-Face} header using external programs from the @code{pbmplus} package and friends.) If you want to have this function in the display hook, it should probably come ! last. @item W b @kindex W b (Summary) --- 5216,5234 ---- @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. ! The default action under Emacs is to fork off an @code{xv} to view the ! face; under XEmacs the default action is to display the face before the ! @code{From} header. (It's nicer if XEmacs has been compiled with X-Face ! support---that will make display somewhat faster. If there's no native ! X-Face support, Gnus will try to convert the @code{X-Face} header using external programs from the @code{pbmplus} package and friends.) If you want to have this function in the display hook, it should probably come ! last. @item W b @kindex W b (Summary) *************** *** 6605,6612 **** Gnus, or the next time you press @kbd{F} in the group buffer. You can enter it and read the articles in it just like you'd read any other group. If the group gets really big and annoying, you can simply rename ! if (using @kbd{G r} in the group buffer) to something nice -- ! @samp{misc-mail-september-1995}, or whatever. New messages will continue to be stored in the old (now empty) group. That's the default method of archiving sent mail. Gnus also offers two --- 6613,6620 ---- Gnus, or the next time you press @kbd{F} in the group buffer. You can enter it and read the articles in it just like you'd read any other group. If the group gets really big and annoying, you can simply rename ! if (using @kbd{G r} in the group buffer) to something ! nice---@samp{misc-mail-september-1995}, or whatever. New messages will continue to be stored in the old (now empty) group. That's the default method of archiving sent mail. Gnus also offers two *************** *** 7122,7129 **** @cindex news backends A newsreader is normally used for reading news. Gnus currently provides ! only two methods of getting news -- it can read from an @sc{nntp} ! server, or it can read from a local spool. @menu * NNTP:: Reading news from an @sc{nntp} server. --- 7130,7137 ---- @cindex news backends A newsreader is normally used for reading news. Gnus currently provides ! only two methods of getting news---it can read from an @sc{nntp} server, ! or it can read from a local spool. @menu * NNTP:: Reading news from an @sc{nntp} server. *************** *** 9402,9408 **** rest. Next time you enter the group, you will see new articles in the interesting threads, plus any new threads. ! I.e. -- the orphan score atom is for high-volume groups where there exist a few interesting threads which can't be found automatically by ordinary scoring rules. --- 9410,9416 ---- rest. Next time you enter the group, you will see new articles in the interesting threads, plus any new threads. ! I.e.---the orphan score atom is for high-volume groups where there exist a few interesting threads which can't be found automatically by ordinary scoring rules. *************** *** 10410,10416 **** @end lisp You'd typically stick these @code{gnus-add-configuration} calls in your ! @file{.gnus} file or in some startup hook -- they should be run after Gnus has been loaded. --- 10418,10424 ---- @end lisp You'd typically stick these @code{gnus-add-configuration} calls in your ! @file{.gnus} file or in some startup hook---they should be run after Gnus has been loaded. *************** *** 10821,10827 **** @menu * Picon Basics:: What are picons and How do I get them. * Picon Requirements:: Don't go further if you aren't using XEmacs. ! * Easy Picons:: Displaying Picons -- the easy way. * Hard Picons:: The way you should do it. You'll learn something. * Picon Configuration:: Other variables you can trash/tweak/munge/play with. @end menu --- 10829,10835 ---- @menu * Picon Basics:: What are picons and How do I get them. * Picon Requirements:: Don't go further if you aren't using XEmacs. ! * Easy Picons:: Displaying Picons---the easy way. * Hard Picons:: The way you should do it. You'll learn something. * Picon Configuration:: Other variables you can trash/tweak/munge/play with. @end menu *************** *** 10898,10905 **** default (which by default maps to the buffer @samp{*Picons*}). Other valid places could be @code{article}, @code{summary}, or @samp{"*scratch*"} for all I care. Just make sure that you've made the ! buffer visible using the standard Gnus window configuration routines -- ! @xref{Windows Configuration}. @end table --- 10906,10913 ---- default (which by default maps to the buffer @samp{*Picons*}). Other valid places could be @code{article}, @code{summary}, or @samp{"*scratch*"} for all I care. Just make sure that you've made the ! buffer visible using the standard Gnus window configuration ! routines---@xref{Windows Configuration}. @end table *************** *** 12682,12690 **** These slots are, in order: @code{number}, @code{subject}, @code{from}, @code{date}, @code{id}, @code{references}, @code{chars}, @code{lines}, ! @code{xref}. There are macros for accessing and setting these slots -- ! they all have predictable names beginning with @code{mail-header-} and ! @code{mail-header-set-}, respectively. The @code{xref} slot is really a @code{misc} slot. Any extra info will be put in there. --- 12690,12698 ---- These slots are, in order: @code{number}, @code{subject}, @code{from}, @code{date}, @code{id}, @code{references}, @code{chars}, @code{lines}, ! @code{xref}. There are macros for accessing and setting these ! slots---they all have predictable names beginning with ! @code{mail-header-} and @code{mail-header-set-}, respectively. The @code{xref} slot is really a @code{misc} slot. Any extra info will be put in there. *************** *** 12847,12853 **** @end lisp This sort of thing has been done for bunches of functions. Gnus does ! not redefine any native Emacs functions while running under XEmacs -- it does this @code{defalias} thing with Gnus equivalents instead. Cleaner all over. --- 12855,12861 ---- @end lisp This sort of thing has been done for bunches of functions. Gnus does ! not redefine any native Emacs functions while running under XEmacs---it does this @code{defalias} thing with Gnus equivalents instead. Cleaner all over.