*** pub/dgnus/lisp/gnus-cache.el Mon Aug 7 04:08:40 1995 --- dgnus/lisp/gnus-cache.el Tue Aug 8 07:53:14 1995 *************** *** 79,87 **** (set-buffer buffer) (if (> (buffer-size) 0) ;; non-empty overview, write it out ! (gnus-make-directory (file-name-directory overview-file)) ! (write-region (point-min) (point-max) ! overview-file nil 'quietly) ;; empty overview file, remove it (and (file-exists-p overview-file) (delete-file overview-file)) --- 79,88 ---- (set-buffer buffer) (if (> (buffer-size) 0) ;; non-empty overview, write it out ! (progn ! (gnus-make-directory (file-name-directory overview-file)) ! (write-region (point-min) (point-max) ! overview-file nil 'quietly)) ;; empty overview file, remove it (and (file-exists-p overview-file) (delete-file overview-file)) *************** *** 129,135 **** ;; Save the article in the cache. (if (file-exists-p file) t ; The article already is saved, so we end here. ! (gnus-summary-select-article) (save-excursion (set-buffer gnus-article-buffer) (save-restriction --- 130,137 ---- ;; Save the article in the cache. (if (file-exists-p file) t ; The article already is saved, so we end here. ! (let ((gnus-use-cache nil)) ! (gnus-summary-select-article)) (save-excursion (set-buffer gnus-article-buffer) (save-restriction *** pub/dgnus/lisp/gnus-ems.el Mon Aug 7 04:08:40 1995 --- dgnus/lisp/gnus-ems.el Tue Aug 8 09:58:41 1995 *************** *** 193,467 **** (defun face-list (&rest args))) ) ! (defun gnus-ems-redefine () ! (cond ! ((string-match "XEmacs\\|Lucid" emacs-version) ! ;; XEmacs definitions. ! (fset 'gnus-mouse-face-function 'identity) ! (fset 'gnus-summary-make-display-table (lambda () nil)) ! (fset 'gnus-visual-turn-off-edit-menu 'identity) ! ! (defun gnus-highlight-selected-summary () ! ;; Added by Per Abrahamsen . ! ;; Highlight selected article in summary buffer ! (if gnus-summary-selected-face ! (save-excursion ! (let* ((beg (progn (beginning-of-line) (point))) ! (end (progn (end-of-line) (point))) ! (to (max 1 (1- (or (previous-single-property-change ! end 'mouse-face nil beg) end)))) ! (from (1+ (or (next-single-property-change ! beg 'mouse-face nil end) beg)))) ! (if (< to beg) ! (progn ! (setq from beg) ! (setq to end))) ! (if gnus-newsgroup-selected-overlay ! (delete-extent gnus-newsgroup-selected-overlay)) ! (setq gnus-newsgroup-selected-overlay ! (make-extent from to)) ! (set-extent-face gnus-newsgroup-selected-overlay ! gnus-summary-selected-face))))) ! ! ! (defun gnus-summary-recenter () ! (let* ((top (cond ((< (window-height) 4) 0) ! ((< (window-height) 7) 1) ! (t 2))) ! (height (- (window-height) 2)) ! (bottom (save-excursion (goto-char (point-max)) ! (forward-line (- height)) ! (point))) ! (window (get-buffer-window (current-buffer)))) ! (and ! ;; The user has to want it, ! gnus-auto-center-summary ! ;; the article buffer must be displayed, ! (get-buffer-window gnus-article-buffer) ! ;; Set the window start to either `bottom', which is the biggest ! ;; possible valid number, or the second line from the top, ! ;; whichever is the least. ! (set-window-start ! window (min bottom (save-excursion (forward-line (- top)) ! (point))))))) ! ! (defun gnus-group-insert-group-line-info (group) ! (let ((entry (gnus-gethash group gnus-newsrc-hashtb)) ! (beg (point)) ! active info) ! (if entry ! (progn ! (setq info (nth 2 entry)) ! (gnus-group-insert-group-line ! nil group (nth 1 info) (nth 3 info) (car entry) (nth 4 info))) ! (setq active (gnus-gethash group gnus-active-hashtb)) ! (gnus-group-insert-group-line ! nil group (if (member group gnus-zombie-list) gnus-level-zombie ! gnus-level-killed) ! nil (if active (- (1+ (cdr active)) (car active)) 0) nil)) ! (save-excursion ! (goto-char beg) ! (remove-text-properties ! (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) ! '(gnus-group nil))))) ! ! (defun gnus-copy-article-buffer (&optional article-buffer) ! (setq gnus-article-copy (get-buffer-create " *gnus article copy*")) ! (buffer-disable-undo gnus-article-copy) ! (or (memq gnus-article-copy gnus-buffer-list) ! (setq gnus-buffer-list (cons gnus-article-copy gnus-buffer-list))) ! (let ((article-buffer (or article-buffer gnus-article-buffer)) ! buf) ! (if (and (get-buffer article-buffer) ! (buffer-name (get-buffer article-buffer))) ! (save-excursion ! (set-buffer article-buffer) ! (widen) ! (setq buf (buffer-substring (point-min) (point-max))) ! (set-buffer gnus-article-copy) ! (erase-buffer) ! (insert (format "%s" buf)))))) ! (defun gnus-summary-refer-article (message-id) ! "Refer article specified by MESSAGE-ID. NOTE: This command only works with newsgroups that use real or simulated NNTP." ! (interactive "sMessage-ID: ") ! (if (or (not (stringp message-id)) ! (zerop (length message-id))) ! () ! ;; Construct the correct Message-ID if necessary. ! ;; Suggested by tale@pawl.rpi.edu. ! (or (string-match "^<" message-id) ! (setq message-id (concat "<" message-id))) ! (or (string-match ">$" message-id) ! (setq message-id (concat message-id ">"))) ! (let ((header (car (gnus-gethash (downcase message-id) ! gnus-newsgroup-dependencies)))) ! (if header ! (or (gnus-summary-goto-article (header-number header)) ! ;; The header has been read, but the article had been ! ;; expunged, so we insert it again. ! (let ((beg (point))) ! (gnus-summary-insert-line ! nil header 0 nil gnus-read-mark nil nil ! (header-subject header)) ! (save-excursion ! (goto-char beg) ! (remove-text-properties ! (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) ! '(gnus-number nil gnus-mark nil gnus-level nil))) ! (forward-line -1) ! (header-number header))) ! (let ((gnus-override-method gnus-refer-article-method) ! (gnus-ancient-mark gnus-read-mark) ! (tmp-buf (get-buffer-create " *gnus refer")) ! (tmp-point (window-start ! (get-buffer-window gnus-article-buffer))) ! number) ! (and gnus-refer-article-method ! (or (gnus-server-opened gnus-refer-article-method) ! (gnus-open-server gnus-refer-article-method))) ! ;; Save the old article buffer. ! (save-excursion ! (set-buffer tmp-buf) ! (buffer-disable-undo (current-buffer)) ! (insert-buffer-substring gnus-article-buffer)) ! (prog1 ! (if (gnus-article-prepare ! message-id nil (gnus-read-header message-id)) ! (progn ! (setq number (header-number gnus-current-headers)) ! (gnus-rebuild-thread message-id) ! (gnus-summary-goto-subject number) ! (gnus-summary-recenter) ! (gnus-article-set-window-start ! (cdr (assq number gnus-newsgroup-bookmarks))) ! message-id) ! ;; We restore the old article buffer. ! (save-excursion ! (set-buffer gnus-article-buffer) ! (let ((buffer-read-only nil)) ! (insert-buffer-substring tmp-buf) ! (and tmp-point ! (set-window-start (get-buffer-window (current-buffer)) ! tmp-point)))) ! nil) ! (kill-buffer tmp-buf))))))) ! ! (defun gnus-summary-insert-pseudos (pslist &optional not-view) ! (let ((buffer-read-only nil) ! (article (gnus-summary-article-number)) ! b) ! (or (gnus-summary-goto-subject article) ! (error (format "No such article: %d" article))) ! (or gnus-newsgroup-headers-hashtb-by-number ! (gnus-make-headers-hashtable-by-number)) ! (gnus-summary-position-cursor) ! ;; If all commands are to be bunched up on one line, we collect ! ;; them here. ! (if gnus-view-pseudos-separately ! () ! (let ((ps (setq pslist (sort pslist 'gnus-pseudos<))) ! files action) ! (while ps ! (setq action (cdr (assq 'action (car ps)))) ! (setq files (list (cdr (assq 'name (car ps))))) ! (while (and ps (cdr ps) ! (string= (or action "1") ! (or (cdr (assq 'action (car (cdr ps)))) "2"))) ! (setq files (cons (cdr (assq 'name (car (cdr ps)))) files)) ! (setcdr ps (cdr (cdr ps)))) ! (if (not files) ! () ! (if (not (string-match "%s" action)) ! (setq files (cons " " files))) ! (setq files (cons " " files)) ! (and (assq 'execute (car ps)) ! (setcdr (assq 'execute (car ps)) ! (funcall (if (string-match "%s" action) ! 'format 'concat) ! action ! (mapconcat (lambda (f) f) files " "))))) ! (setq ps (cdr ps))))) ! (if (and gnus-view-pseudos (not not-view)) ! (while pslist ! (and (assq 'execute (car pslist)) ! (gnus-execute-command (cdr (assq 'execute (car pslist))) ! (eq gnus-view-pseudos 'not-confirm))) ! (setq pslist (cdr pslist))) (save-excursion ! (while pslist ! (gnus-summary-goto-subject (or (cdr (assq 'article (car pslist))) ! (gnus-summary-article-number))) ! (forward-line 1) ! (setq b (point)) ! (insert " " (file-name-nondirectory ! (cdr (assq 'name (car pslist)))) ! ": " (or (cdr (assq 'execute (car pslist))) "") "\n") ! (add-text-properties ! b (1+ b) (list 'gnus-number gnus-reffed-article-number ! 'gnus-mark gnus-unread-mark ! 'gnus-level 0 ! 'gnus-pseudo (car pslist))) ! (remove-text-properties ! (1+ b) (1+ (gnus-point-at-eol)) ! '(gnus-number nil gnus-mark nil gnus-level nil)) ! (forward-line -1) ! (gnus-sethash (int-to-string gnus-reffed-article-number) ! (car pslist) gnus-newsgroup-headers-hashtb-by-number) ! (setq gnus-reffed-article-number (1- gnus-reffed-article-number)) ! (setq pslist (cdr pslist))))))) ! ! (defun gnus-article-push-button (event) ! "Check text under the mouse pointer for a callback function. If the text under the mouse pointer has a `gnus-callback' property, call it with the value of the `gnus-data' text property." ! (interactive "e") ! (set-buffer (window-buffer (event-window event))) ! (let* ((pos (event-closest-point event)) ! (data (get-text-property pos 'gnus-data)) ! (fun (get-text-property pos 'gnus-callback))) ! (if fun (funcall fun data)))) ! ! ;; Re-build the thread containing ID. ! (defun gnus-rebuild-thread (id) ! (let ((dep gnus-newsgroup-dependencies) ! (buffer-read-only nil) ! parent headers refs thread art) ! (while (and id (setq headers ! (car (setq art (gnus-gethash (downcase id) ! dep))))) ! (setq parent art) ! (setq id (and (setq refs (header-references headers)) ! (string-match "\\(<[^>]+>\\) *$" refs) ! (substring refs (match-beginning 1) (match-end 1))))) ! (setq thread (gnus-make-sub-thread (car parent))) ! (gnus-rebuild-remove-articles thread) ! (let ((beg (point))) ! (gnus-summary-prepare-threads (list thread) 0) ! (save-excursion ! (while (and (>= (point) beg) ! (not (eobp))) ! (remove-text-properties ! (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) ! '(gnus-number nil gnus-mark nil gnus-level nil)) ! (forward-line -1))) ! (gnus-summary-update-lines beg (point))))) ! ! ;; Fixed by Christopher Davis . ! (defun gnus-article-add-button (from to fun &optional data) ! "Create a button between FROM and TO with callback FUN and data DATA." ! (and gnus-article-button-face ! (gnus-overlay-put (gnus-make-overlay from to) 'face gnus-article-button-face)) ! (add-text-properties from to ! (append ! (and gnus-article-mouse-face ! (list 'mouse-face gnus-article-mouse-face)) ! (list 'gnus-callback fun) ! (and data (list 'gnus-data data)) ! (list 'highlight t)))) (if (not gnus-visual) () --- 193,483 ---- (defun face-list (&rest args))) ) ! (defun gnus-highlight-selected-summary-xemacs () ! ;; Added by Per Abrahamsen . ! ;; Highlight selected article in summary buffer ! (if gnus-summary-selected-face ! (save-excursion ! (let* ((beg (progn (beginning-of-line) (point))) ! (end (progn (end-of-line) (point))) ! (to (max 1 (1- (or (previous-single-property-change ! end 'mouse-face nil beg) end)))) ! (from (1+ (or (next-single-property-change ! beg 'mouse-face nil end) beg)))) ! (if (< to beg) ! (progn ! (setq from beg) ! (setq to end))) ! (if gnus-newsgroup-selected-overlay ! (delete-extent gnus-newsgroup-selected-overlay)) ! (setq gnus-newsgroup-selected-overlay ! (make-extent from to)) ! (set-extent-face gnus-newsgroup-selected-overlay ! gnus-summary-selected-face))))) ! ! (defun gnus-summary-recenter-xemacs () ! (let* ((top (cond ((< (window-height) 4) 0) ! ((< (window-height) 7) 1) ! (t 2))) ! (height (- (window-height) 2)) ! (bottom (save-excursion (goto-char (point-max)) ! (forward-line (- height)) ! (point))) ! (window (get-buffer-window (current-buffer)))) ! (and ! ;; The user has to want it, ! gnus-auto-center-summary ! ;; the article buffer must be displayed, ! (get-buffer-window gnus-article-buffer) ! ;; Set the window start to either `bottom', which is the biggest ! ;; possible valid number, or the second line from the top, ! ;; whichever is the least. ! (set-window-start ! window (min bottom (save-excursion (forward-line (- top)) ! (point))))))) ! ! (defun gnus-group-insert-group-line-info-xemacs (group) ! (let ((entry (gnus-gethash group gnus-newsrc-hashtb)) ! (beg (point)) ! active info) ! (if entry ! (progn ! (setq info (nth 2 entry)) (gnus-group-insert-group-line ! nil group (nth 1 info) (nth 3 info) (car entry) (nth 4 info))) ! (setq active (gnus-gethash group gnus-active-hashtb)) ! ! (gnus-group-insert-group-line ! nil group (if (member group gnus-zombie-list) gnus-level-zombie ! gnus-level-killed) ! nil (if active (- (1+ (cdr active)) (car active)) 0) nil)) ! (save-excursion ! (goto-char beg) ! (remove-text-properties ! (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) ! '(gnus-group nil))))) ! (defun gnus-summary-refer-article-xemacs (message-id) ! "Refer article specified by MESSAGE-ID. NOTE: This command only works with newsgroups that use real or simulated NNTP." ! (interactive "sMessage-ID: ") ! (if (or (not (stringp message-id)) ! (zerop (length message-id))) ! () ! ;; Construct the correct Message-ID if necessary. ! ;; Suggested by tale@pawl.rpi.edu. ! (or (string-match "^<" message-id) ! (setq message-id (concat "<" message-id))) ! (or (string-match ">$" message-id) ! (setq message-id (concat message-id ">"))) ! (let ((header (car (gnus-gethash (downcase message-id) ! gnus-newsgroup-dependencies)))) ! (if header ! (or (gnus-summary-goto-article (header-number header)) ! ;; The header has been read, but the article had been ! ;; expunged, so we insert it again. ! (let ((beg (point))) ! (gnus-summary-insert-line ! nil header 0 nil gnus-read-mark nil nil ! (header-subject header)) ! (save-excursion ! (goto-char beg) ! (remove-text-properties ! (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) ! '(gnus-number nil gnus-mark nil gnus-level nil))) ! (forward-line -1) ! (header-number header))) ! (let ((gnus-override-method gnus-refer-article-method) ! (gnus-ancient-mark gnus-read-mark) ! (tmp-buf (get-buffer-create " *gnus refer")) ! (tmp-point (window-start ! (get-buffer-window gnus-article-buffer))) ! number) ! (and gnus-refer-article-method ! (or (gnus-server-opened gnus-refer-article-method) ! (gnus-open-server gnus-refer-article-method))) ! ;; Save the old article buffer. (save-excursion ! (set-buffer tmp-buf) ! (buffer-disable-undo (current-buffer)) ! (insert-buffer-substring gnus-article-buffer)) ! (prog1 ! (if (gnus-article-prepare ! message-id nil (gnus-read-header message-id)) ! (progn ! (setq number (header-number gnus-current-headers)) ! (gnus-rebuild-thread message-id) ! (gnus-summary-goto-subject number) ! (gnus-summary-recenter) ! (gnus-article-set-window-start ! (cdr (assq number gnus-newsgroup-bookmarks))) ! message-id) ! ;; We restore the old article buffer. ! (save-excursion ! (set-buffer gnus-article-buffer) ! (let ((buffer-read-only nil)) ! (insert-buffer-substring tmp-buf) ! (and tmp-point ! (set-window-start (get-buffer-window (current-buffer)) ! tmp-point)))) ! nil) ! (kill-buffer tmp-buf))))))) ! ! (defun gnus-summary-insert-pseudos-xemacs (pslist &optional not-view) ! (let ((buffer-read-only nil) ! (article (gnus-summary-article-number)) ! b) ! (or (gnus-summary-goto-subject article) ! (error (format "No such article: %d" article))) ! (or gnus-newsgroup-headers-hashtb-by-number ! (gnus-make-headers-hashtable-by-number)) ! (gnus-summary-position-cursor) ! ;; If all commands are to be bunched up on one line, we collect ! ;; them here. ! (if gnus-view-pseudos-separately ! () ! (let ((ps (setq pslist (sort pslist 'gnus-pseudos<))) ! files action) ! (while ps ! (setq action (cdr (assq 'action (car ps)))) ! (setq files (list (cdr (assq 'name (car ps))))) ! (while (and ps (cdr ps) ! (string= (or action "1") ! (or (cdr (assq 'action (car (cdr ps)))) "2"))) ! (setq files (cons (cdr (assq 'name (car (cdr ps)))) files)) ! (setcdr ps (cdr (cdr ps)))) ! (if (not files) ! () ! (if (not (string-match "%s" action)) ! (setq files (cons " " files))) ! (setq files (cons " " files)) ! (and (assq 'execute (car ps)) ! (setcdr (assq 'execute (car ps)) ! (funcall (if (string-match "%s" action) ! 'format 'concat) ! action ! (mapconcat (lambda (f) f) files " "))))) ! (setq ps (cdr ps))))) ! (if (and gnus-view-pseudos (not not-view)) ! (while pslist ! (and (assq 'execute (car pslist)) ! (gnus-execute-command (cdr (assq 'execute (car pslist))) ! (eq gnus-view-pseudos 'not-confirm))) ! (setq pslist (cdr pslist))) ! (save-excursion ! (while pslist ! (gnus-summary-goto-subject (or (cdr (assq 'article (car pslist))) ! (gnus-summary-article-number))) ! (forward-line 1) ! (setq b (point)) ! (insert " " ! (file-name-nondirectory (cdr (assq 'name (car pslist)))) ! ": " (or (cdr (assq 'execute (car pslist))) "") "\n") ! (add-text-properties ! b (1+ b) (list 'gnus-number gnus-reffed-article-number ! 'gnus-mark gnus-unread-mark ! 'gnus-level 0 ! 'gnus-pseudo (car pslist))) ! ;; Fucking XEmacs redisplay bug with truncated lines. ! (goto-char b) ! (sit-for 0) ! ;; Grumble.. Fucking XEmacs stickyness of text properties. ! (remove-text-properties ! (1+ b) (1+ (gnus-point-at-eol)) ! '(gnus-number nil gnus-mark nil gnus-level nil)) ! (forward-line -1) ! (gnus-sethash (int-to-string gnus-reffed-article-number) ! (car pslist) gnus-newsgroup-headers-hashtb-by-number) ! (setq gnus-reffed-article-number (1- gnus-reffed-article-number)) ! (setq pslist (cdr pslist))))))) ! ! ! (defun gnus-copy-article-buffer-xemacs (&optional article-buffer) ! (setq gnus-article-copy (get-buffer-create " *gnus article copy*")) ! (buffer-disable-undo gnus-article-copy) ! (or (memq gnus-article-copy gnus-buffer-list) ! (setq gnus-buffer-list (cons gnus-article-copy gnus-buffer-list))) ! (let ((article-buffer (or article-buffer gnus-article-buffer)) ! buf) ! (if (and (get-buffer article-buffer) ! (buffer-name (get-buffer article-buffer))) ! (save-excursion ! (set-buffer article-buffer) ! (widen) ! (setq buf (buffer-substring (point-min) (point-max))) ! (set-buffer gnus-article-copy) ! (erase-buffer) ! (insert (format "%s" buf)))))) ! (defun gnus-article-push-button-xemacs (event) ! "Check text under the mouse pointer for a callback function. If the text under the mouse pointer has a `gnus-callback' property, call it with the value of the `gnus-data' text property." ! (interactive "e") ! (set-buffer (window-buffer (event-window event))) ! (let* ((pos (event-closest-point event)) ! (data (get-text-property pos 'gnus-data)) ! (fun (get-text-property pos 'gnus-callback))) ! (if fun (funcall fun data)))) ! ! ;; Re-build the thread containing ID. ! (defun gnus-rebuild-thread-xemacs (id) ! (let ((dep gnus-newsgroup-dependencies) ! (buffer-read-only nil) ! parent headers refs thread art) ! (while (and id (setq headers ! (car (setq art (gnus-gethash (downcase id) ! dep))))) ! (setq parent art) ! (setq id (and (setq refs (header-references headers)) ! (string-match "\\(<[^>]+>\\) *$" refs) ! (substring refs (match-beginning 1) (match-end 1))))) ! (setq thread (gnus-make-sub-thread (car parent))) ! (gnus-rebuild-remove-articles thread) ! (let ((beg (point))) ! (gnus-summary-prepare-threads (list thread) 0) ! (save-excursion ! (while (and (>= (point) beg) ! (not (eobp))) ! (remove-text-properties ! (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) ! '(gnus-number nil gnus-mark nil gnus-level nil)) ! (forward-line -1))) ! (gnus-summary-update-lines beg (point))))) ! ! ! ;; Fixed by Christopher Davis . ! (defun gnus-article-add-button-xemacs (from to fun &optional data) ! "Create a button between FROM and TO with callback FUN and data DATA." ! (and gnus-article-button-face ! (gnus-overlay-put (gnus-make-overlay from to) 'face gnus-article-button-face)) ! (add-text-properties from to ! (append ! (and gnus-article-mouse-face ! (list 'mouse-face gnus-article-mouse-face)) ! (list 'gnus-callback fun) ! (and data (list 'gnus-data data)) ! (list 'highlight t)))) ! ! ! (defun gnus-ems-redefine () ! (cond ! ((string-match "XEmacs\\|Lucid" emacs-version) ! ;; XEmacs definitions. ! (fset 'gnus-mouse-face-function 'identity) ! (fset 'gnus-summary-make-display-table (lambda () nil)) ! (fset 'gnus-visual-turn-off-edit-menu 'identity) ! (fset 'gnus-highlight-selected-summary ! 'gnus-highlight-selected-summary-xemacs) ! (fset 'gnus-summary-recenter 'gnus-summary-recenter-xemacs) ! (fset 'gnus-group-insert-group-line-info ! 'gnus-group-insert-group-line-info-xemacs) ! (fset 'gnus-copy-article-buffer 'gnus-copy-article-buffer-xemacs) ! (fset 'gnus-summary-refer-article 'gnus-summary-refer-article-xemacs) ! (fset 'gnus-summary-insert-pseudos 'gnus-summary-insert-pseudos-xemacs) ! (fset 'gnus-article-push-button 'gnus-article-push-button-xemacs) ! (fset 'gnus-rebuild-thread 'gnus-rebuild-thread-xemacs) ! (fset 'gnus-article-add-button 'gnus-article-add-button-xemacs) (if (not gnus-visual) () *** pub/dgnus/lisp/gnus.el Mon Aug 7 04:08:41 1995 --- dgnus/lisp/gnus.el Tue Aug 8 10:45:03 1995 *************** *** 771,778 **** "*Function used for sorting the group buffer. This function will be called with group info entries as the arguments for the groups to be sorted. Pre-made functions include ! `gnus-sort-by-alphabet', `gnus-sort-by-unread' and ! `gnus-sort-by-level'") ;; Mark variables suggested by Thomas Michanek ;; . --- 771,778 ---- "*Function used for sorting the group buffer. This function will be called with group info entries as the arguments for the groups to be sorted. Pre-made functions include ! `gnus-group-sort-by-alphabet', `gnus-group-sort-by-unread' and ! `gnus-group-sort-by-level'") ;; Mark variables suggested by Thomas Michanek ;; . *************** *** 1308,1314 **** (defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "(ding) Gnus v0.99.7" "Version number for this version of Gnus.") (defvar gnus-info-nodes --- 1308,1314 ---- (defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "(ding) Gnus v0.99.8" "Version number for this version of Gnus.") (defvar gnus-info-nodes *************** *** 1868,1873 **** --- 1868,1874 ---- (delq (car formats) gnus-old-specs))) (setq formats (cdr formats)))) + (gnus-update-group-mark-positions) (gnus-update-summary-mark-positions) (if (and (string-match "%D" gnus-group-line-format) *************** *** 3283,3289 **** listed." (interactive (list (if current-prefix-arg (prefix-numeric-value current-prefix-arg) ! gnus-level-subscribed))) (or level (setq level (car gnus-group-list-mode) unread (cdr gnus-group-list-mode))) --- 3284,3292 ---- listed." (interactive (list (if current-prefix-arg (prefix-numeric-value current-prefix-arg) ! (or ! (gnus-group-default-level nil t) ! gnus-level-subscribed)))) (or level (setq level (car gnus-group-list-mode) unread (cdr gnus-group-list-mode))) *************** *** 4522,4528 **** (interactive) (if (not gnus-killed-list) (gnus-message 6 "No killed groups") ! (funcall gnus-group-prepare-function gnus-level-killed t gnus-level-killed) (goto-char (point-min))) (gnus-group-position-cursor)) --- 4525,4533 ---- (interactive) (if (not gnus-killed-list) (gnus-message 6 "No killed groups") ! (let (gnus-group-list-mode) ! (funcall gnus-group-prepare-function ! gnus-level-killed t gnus-level-killed)) (goto-char (point-min))) (gnus-group-position-cursor)) *************** *** 4531,4537 **** (interactive) (if (not gnus-zombie-list) (gnus-message 6 "No zombie groups") ! (funcall gnus-group-prepare-function gnus-level-zombie t gnus-level-zombie) (goto-char (point-min))) (gnus-group-position-cursor)) --- 4536,4544 ---- (interactive) (if (not gnus-zombie-list) (gnus-message 6 "No zombie groups") ! (let (gnus-group-list-mode) ! (funcall gnus-group-prepare-function ! gnus-level-zombie t gnus-level-zombie)) (goto-char (point-min))) (gnus-group-position-cursor)) *************** *** 4550,4556 **** (gnus-have-read-active-file (and (not arg) gnus-have-read-active-file))) (gnus-get-unread-articles (or arg (1+ gnus-level-subscribed))))) ! (gnus-group-list-groups arg)) (defun gnus-group-get-new-news-this-group (&optional n) "Check for newly arrived news in the current group (and the N-1 next groups). --- 4557,4563 ---- (gnus-have-read-active-file (and (not arg) gnus-have-read-active-file))) (gnus-get-unread-articles (or arg (1+ gnus-level-subscribed))))) ! (gnus-group-list-groups)) (defun gnus-group-get-new-news-this-group (&optional n) "Check for newly arrived news in the current group (and the N-1 next groups). *************** *** 8931,8947 **** (use-local-map gnus-article-mode-map) (setq buffer-read-only t) (buffer-disable-undo (current-buffer)) ! (run-hooks 'gnus-visual-mark-article-hook) (gnus-configure-windows 'summary)))) ! (defun gnus-summary-edit-article-abort () ! "Abort changes to the current article." (interactive) (gnus-article-mode) (use-local-map gnus-article-mode-map) (setq buffer-read-only t) (buffer-disable-undo (current-buffer)) ! (run-hooks 'gnus-visual-mark-article-hook) (gnus-configure-windows 'summary)) (defun gnus-summary-fancy-query () --- 8938,8954 ---- (use-local-map gnus-article-mode-map) (setq buffer-read-only t) (buffer-disable-undo (current-buffer)) ! (and gnus-visual (run-hooks 'gnus-visual-mark-article-hook)) (gnus-configure-windows 'summary)))) ! (defun gnus-summary-edit-article-postpone () ! "Postpone changes to the current article." (interactive) (gnus-article-mode) (use-local-map gnus-article-mode-map) (setq buffer-read-only t) (buffer-disable-undo (current-buffer)) ! (and gnus-visual (run-hooks 'gnus-visual-mark-article-hook)) (gnus-configure-windows 'summary)) (defun gnus-summary-fancy-query () *** pub/dgnus/lisp/nnheader.el Mon Aug 7 04:08:41 1995 --- dgnus/lisp/nnheader.el Tue Aug 8 08:08:35 1995 *************** *** 244,250 **** (truename (abbreviate-file-name (file-truename filename))) (number (nthcdr 10 (file-attributes truename))) ;; Find any buffer for a file which has same truename. ! (other (and (not buf) (find-buffer-visiting filename))) error) ;; Let user know if there is a buffer with the same truename. (if other --- 244,253 ---- (truename (abbreviate-file-name (file-truename filename))) (number (nthcdr 10 (file-attributes truename))) ;; Find any buffer for a file which has same truename. ! (other (and (not buf) ! (if (fboundp 'find-buffer-visiting) ! (find-buffer-visiting filename) ! (get-file-buffer filename)))) error) ;; Let user know if there is a buffer with the same truename. (if other *************** *** 254,260 **** (message "%s and %s are the same file" filename (buffer-file-name other))) ;; Optionally also find that buffer. ! (if (or find-file-existing-other-name find-file-visit-truename) (setq buf other)))) (if buf (or nowarn --- 257,265 ---- (message "%s and %s are the same file" filename (buffer-file-name other))) ;; Optionally also find that buffer. ! (if (or (and (boundp 'find-file-existing-other-name) ! find-file-existing-other-name) ! find-file-visit-truename) (setq buf other)))) (if buf (or nowarn *** pub/dgnus/lisp/nntp.el Mon Aug 7 04:08:41 1995 --- dgnus/lisp/nntp.el Tue Aug 8 08:16:15 1995 *************** *** 511,517 **** (nntp-async-open-server))) (progn (message "Can't open second connection to %s" nntp-address) - ; (debug) (ding) (setq nntp-async-articles nil) (sit-for 2)) --- 511,516 ---- *************** *** 874,881 **** ;; We don't care about gaps. ((not nntp-nov-gap) ! (nntp-send-xover-command (car sequence) (nntp-last-element sequence) ! 'wait)) ;; 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 --- 873,890 ---- ;; We don't care about gaps. ((not nntp-nov-gap) ! (nntp-send-xover-command ! (car sequence) (nntp-last-element sequence) 'wait) ! ! (goto-char (point-min)) ! (if (looking-at "[1-5][0-9][0-9] ") ! (delete-region (point) (progn (forward-line 1) (point)))) ! (while (search-forward "\r" nil t) ! (replace-match "" t t)) ! (goto-char (point-max)) ! (forward-line -1) ! (if (looking-at "\\.") ! (delete-region (point) (progn (forward-line 1) (point))))) ;; 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 *************** *** 935,943 **** (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 &optional wait-for-reply) (let ((range (format "%d-%d" beg end))) --- 944,952 ---- (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 &optional wait-for-reply) (let ((range (format "%d-%d" beg end))) *** pub/dgnus/lisp/ChangeLog Mon Aug 7 04:08:42 1995 --- dgnus/lisp/ChangeLog Tue Aug 8 09:58:40 1995 *************** *** 1,3 **** --- 1,27 ---- + Tue Aug 8 09:58:27 1995 Lars Magne Ingebrigtsen + + * gnus-ems.el (gnus-summary-insert-pseudos-xemacs): Would bug out + on the end of the buffer. + + Tue Aug 8 07:22:17 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-list-groups): Did not properly respect + permanent levels. + + * nnheader.el (nnheader-find-file-noselect): Didn't work on + XEmacs. + + * gnus.el (gnus-group-get-new-news): Would do the wrong thing + without permanent levels. + (gnus-update-format-specifications): Did not update group mark + pos. + + * nntp.el (nntp-retrieve-headers-with-xover): Did not remove nntp + server gruft. + + * gnus-cache.el (gnus-cache-save-buffers): Did not write .overview + file. + Mon Aug 7 02:32:03 1995 Lars Magne Ingebrigtsen * gnus.el (gnus-group-list-mode): New variable.