2001-12-19 00:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
authorShengHuo ZHU <zsh@cs.rochester.edu>
Wed, 19 Dec 2001 05:52:12 +0000 (05:52 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Wed, 19 Dec 2001 05:52:12 +0000 (05:52 +0000)
* nnwarchive.el (nnwarchive-mail-archive-xover): Fix the regexp.

2001-12-18 11:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>

* gnus-win.el (gnus-get-buffer-window): Use gnus-delete-if.

2001-12-18 11:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
   From Harald Meland <Harald.Meland@usit.uio.no>

* gnus-win.el (gnus-get-buffer-window): New function.
(gnus-all-windows-visible-p): Use it.

* gnus-util.el (gnus-horizontal-recenter)
(gnus-horizontal-recenter, gnus-horizontal-recenter)
(gnus-horizontal-recenter, gnus-set-window-start): Use it.

* gnus-score.el (gnus-score-insert-help): Use it.

* gnus-salt.el (gnus-tree-recenter, gnus-generate-tree)
(gnus-generate-tree, gnus-highlight-selected-tree)
(gnus-highlight-selected-tree, gnus-tree-highlight-article): Use
it.

* gnus-art.el (gnus-article-set-window-start)
(gnus-mm-display-part, gnus-request-article-this-buffer)
(gnus-button-next-page, gnus-button-prev-page)
(gnus-article-button-next-page, gnus-article-button-prev-page):
Use it.

lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-salt.el
lisp/gnus-score.el
lisp/gnus-util.el
lisp/gnus-win.el
lisp/nnwarchive.el

index e5eaff1..af9717a 100644 (file)
@@ -1,3 +1,34 @@
+2001-12-19 00:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnwarchive.el (nnwarchive-mail-archive-xover): Fix the regexp.
+
+2001-12-18 11:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-win.el (gnus-get-buffer-window): Use gnus-delete-if.
+       
+2001-12-18 11:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+          From Harald Meland <Harald.Meland@usit.uio.no>
+
+       * gnus-win.el (gnus-get-buffer-window): New function.
+       (gnus-all-windows-visible-p): Use it.
+
+       * gnus-util.el (gnus-horizontal-recenter) 
+       (gnus-horizontal-recenter, gnus-horizontal-recenter) 
+       (gnus-horizontal-recenter, gnus-set-window-start): Use it.
+
+       * gnus-score.el (gnus-score-insert-help): Use it.
+
+       * gnus-salt.el (gnus-tree-recenter, gnus-generate-tree)
+       (gnus-generate-tree, gnus-highlight-selected-tree)
+       (gnus-highlight-selected-tree, gnus-tree-highlight-article): Use
+       it.
+
+       * gnus-art.el (gnus-article-set-window-start)
+       (gnus-mm-display-part, gnus-request-article-this-buffer)
+       (gnus-button-next-page, gnus-button-prev-page)
+       (gnus-article-button-next-page, gnus-article-button-prev-page):
+       Use it.
+
 2001-12-18  Josh Huber  <huber@alum.wpi.edu>
 
        * ChangeLog, ChangeLog.1, nnwfm.el, smiley.el:
index 1b3cf01..77a1310 100644 (file)
@@ -32,6 +32,7 @@
 (require 'gnus-sum)
 (require 'gnus-spec)
 (require 'gnus-int)
+(require 'gnus-win)
 (require 'mm-bodies)
 (require 'mail-parse)
 (require 'mm-decode)
@@ -237,7 +238,7 @@ display -")))
 If it is a string, the command will be executed in a sub-shell
 asynchronously.         The compressed face will be piped to this command."
   :type `(choice string
-                (function-item 
+                (function-item
                  ,(if (featurep 'xemacs)
                       'gnus-xmas-article-display-xface
                     'gnus-article-display-xface))
@@ -3142,7 +3143,7 @@ commands:
 ;; from the head of the article.
 (defun gnus-article-set-window-start (&optional line)
   (set-window-start
-   (get-buffer-window gnus-article-buffer t)
+   (gnus-get-buffer-window gnus-article-buffer t)
    (save-excursion
      (set-buffer gnus-article-buffer)
      (goto-char (point-min))
@@ -3710,7 +3711,7 @@ If no internal viewer is available, use an external viewer."
                               gnus-newsgroup-ignored-charsets)))
          (save-excursion
            (unwind-protect
-               (let ((win (get-buffer-window (current-buffer) t))
+               (let ((win (gnus-get-buffer-window (current-buffer) t))
                      (beg (point)))
                  (when win
                    (select-window win))
@@ -3720,7 +3721,7 @@ If no internal viewer is available, use an external viewer."
                      ;; This will remove the part.
                      (mm-display-part handle)
                    (save-restriction
-                     (narrow-to-region (point) 
+                     (narrow-to-region (point)
                                        (if (eobp) (point) (1+ (point))))
                      (mm-display-part handle)
                      ;; We narrow to the part itself and
@@ -4099,11 +4100,11 @@ If no internal viewer is available, use an external viewer."
       (goto-char point))))
 
 (defconst gnus-article-wash-status-strings
-  (let ((alist '((cite "c" "Possible hidden citation text" 
+  (let ((alist '((cite "c" "Possible hidden citation text"
                       " " "All citation text visible")
                 (headers "h" "Hidden headers"
                          " " "All headers visible.")
-                (pgp "p" "Encrypted or signed message status hidden" 
+                (pgp "p" "Encrypted or signed message status hidden"
                      " " "No hidden encryption nor digital signature status")
                 (signature "s" "Signature has been hidden"
                            " " "Signature is visible")
@@ -4126,7 +4127,7 @@ Each entry has the form (KEY ON OF), where the KEY is a symbol
 representing the particular washing function, ON is the string to use
 in the article mode line when the washing function is active, and OFF
 is the string to use when it is inactive.")
-      
+
 (defun gnus-gnus-article-wash-status-entry (key value)
   (let ((entry (assoc key gnus-article-wash-status-strings)))
     (if value (nth 1 entry) (nth 2 entry))))
@@ -4146,9 +4147,9 @@ is the string to use when it is inactive.")
          (overstrike (memq 'overstrike gnus-article-wash-types))
          (emphasis (memq 'emphasis gnus-article-wash-types)))
       (concat (gnus-gnus-article-wash-status-entry 'cite cite)
-             (gnus-gnus-article-wash-status-entry 'headers 
+             (gnus-gnus-article-wash-status-entry 'headers
                                                   (or headers boring))
-             (gnus-gnus-article-wash-status-entry 
+             (gnus-gnus-article-wash-status-entry
               'pgp (or pgp pem signed encrypted))
              (gnus-gnus-article-wash-status-entry 'signature signature)
              (gnus-gnus-article-wash-status-entry 'overstrike overstrike)
@@ -4642,7 +4643,7 @@ If given a prefix, show the hidden text instead."
          (set-buffer gnus-summary-buffer)
          (gnus-summary-update-article do-update-line sparse-header)
          (gnus-summary-goto-subject do-update-line nil t)
-         (set-window-point (get-buffer-window (current-buffer) t)
+         (set-window-point (gnus-get-buffer-window (current-buffer) t)
                            (point))
          (set-buffer buf))))))
 
@@ -5193,13 +5194,13 @@ specified by `gnus-button-alist'."
 
 (defun gnus-button-handle-info (url)
   "Fetch an info URL."
-  (if (string-match 
+  (if (string-match
        "^\\([^:/]+\\)?/\\(.*\\)"
        url)
       (gnus-info-find-node
        (concat "(" (or (gnus-url-unhex-string (match-string 1 url))
-                      "Gnus") 
-              ")" 
+                      "Gnus")
+              ")"
               (gnus-url-unhex-string (match-string 2 url))))
     (error "Can't parse %s" url)))
 
@@ -5214,8 +5215,8 @@ specified by `gnus-button-alist'."
   (if (not (string-match "[:/]" address))
       ;; This is just a simple group url.
       (gnus-group-read-ephemeral-group address gnus-select-method)
-    (if (not 
-        (string-match 
+    (if (not
+        (string-match
          "^\\([^:/]+\\)\\(:\\([^/]+\\)\\)?/\\([^/]+\\)\\(/\\([0-9]+\\)\\)?"
          address))
        (error "Can't parse %s" address)
@@ -5305,7 +5306,7 @@ specified by `gnus-button-alist'."
   "Go to the next page."
   (interactive)
   (let ((win (selected-window)))
-    (select-window (get-buffer-window gnus-article-buffer t))
+    (select-window (gnus-get-buffer-window gnus-article-buffer t))
     (gnus-article-next-page)
     (select-window win)))
 
@@ -5313,7 +5314,7 @@ specified by `gnus-button-alist'."
   "Go to the prev page."
   (interactive)
   (let ((win (selected-window)))
-    (select-window (get-buffer-window gnus-article-buffer t))
+    (select-window (gnus-get-buffer-window gnus-article-buffer t))
     (gnus-article-prev-page)
     (select-window win)))
 
@@ -5329,7 +5330,7 @@ specified by `gnus-button-alist'."
   "Go to the next page."
   (interactive "P")
   (let ((win (selected-window)))
-    (select-window (get-buffer-window gnus-article-buffer t))
+    (select-window (gnus-get-buffer-window gnus-article-buffer t))
     (gnus-article-next-page)
     (select-window win)))
 
@@ -5337,7 +5338,7 @@ specified by `gnus-button-alist'."
   "Go to the prev page."
   (interactive "P")
   (let ((win (selected-window)))
-    (select-window (get-buffer-window gnus-article-buffer t))
+    (select-window (gnus-get-buffer-window gnus-article-buffer t))
     (gnus-article-prev-page)
     (select-window win)))
 
index f1b223a..df58313 100644 (file)
@@ -31,6 +31,7 @@
 
 (require 'gnus)
 (require 'gnus-sum)
+(require 'gnus-win)
 
 ;;;
 ;;; gnus-pick-mode
@@ -554,7 +555,7 @@ Two predefined functions are available:
 (defun gnus-tree-recenter ()
   "Center point in the tree window."
   (let ((selected (selected-window))
-       (tree-window (get-buffer-window gnus-tree-buffer t)))
+       (tree-window (gnus-get-buffer-window gnus-tree-buffer t)))
     (when tree-window
       (select-window tree-window)
       (when gnus-selected-tree-overlay
@@ -699,8 +700,8 @@ Two predefined functions are available:
       (gnus-tree-minimize)
       (gnus-tree-recenter)
       (let ((selected (selected-window)))
-       (when (get-buffer-window (set-buffer gnus-tree-buffer) t)
-         (select-window (get-buffer-window (set-buffer gnus-tree-buffer) t))
+       (when (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t)
+         (select-window (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t))
          (gnus-horizontal-recenter)
          (select-window selected))))))
 
@@ -856,8 +857,8 @@ Two predefined functions are available:
       (gnus-tree-minimize)
       (gnus-tree-recenter)
       (let ((selected (selected-window)))
-       (when (get-buffer-window (set-buffer gnus-tree-buffer) t)
-         (select-window (get-buffer-window (set-buffer gnus-tree-buffer) t))
+       (when (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t)
+         (select-window (gnus-get-buffer-window (set-buffer gnus-tree-buffer) t))
          (gnus-horizontal-recenter)
          (select-window selected))))
 ;; If we remove this save-excursion, it updates the wrong mode lines?!?
@@ -873,7 +874,7 @@ Two predefined functions are available:
       (when (setq region (gnus-tree-article-region article))
        (gnus-put-text-property (car region) (cdr region) 'face face)
        (set-window-point
-        (get-buffer-window (current-buffer) t) (cdr region))))))
+        (gnus-get-buffer-window (current-buffer) t) (cdr region))))))
 
 ;;;
 ;;; gnus-carpal
index 8c94611..fe7db38 100644 (file)
@@ -32,6 +32,7 @@
 (require 'gnus)
 (require 'gnus-sum)
 (require 'gnus-range)
+(require 'gnus-win)
 (require 'message)
 (require 'score-mode)
 
@@ -740,7 +741,7 @@ used as score."
     (pop-to-buffer "*Score Help*")
     (let ((window-min-height 1))
       (shrink-window-if-larger-than-buffer))
-    (select-window (get-buffer-window gnus-summary-buffer t))))
+    (select-window (gnus-get-buffer-window gnus-summary-buffer t))))
 
 (defun gnus-summary-header (header &optional no-err extra)
   ;; Return HEADER for current articles, or error.
index cc4cbe0..a8d8c78 100644 (file)
@@ -41,6 +41,7 @@
 
 (eval-and-compile
   (autoload 'message-fetch-field "message")
+  (autoload 'gnus-get-buffer-window "gnus-win")
   (autoload 'rmail-insert-rmail-file-header "rmail")
   (autoload 'rmail-count-new-messages "rmail")
   (autoload 'rmail-show-message "rmail"))
@@ -73,7 +74,7 @@
        (buf (make-symbol "buf")))
     `(let* ((,tempvar (selected-window))
            (,buf ,buffer)
-           (,w (get-buffer-window ,buf 'visible)))
+           (,w (gnus-get-buffer-window ,buf 'visible)))
        (unwind-protect
           (progn
             (if ,w
 (defun gnus-seconds-month ()
   "Returns the number of seconds passed this month"
   (let ((now (decode-time (current-time))))
-    (+ (car now) (* (car (cdr now)) 60) (* (car (nthcdr 2 now)) 3600) 
+    (+ (car now) (* (car (cdr now)) 60) (* (car (nthcdr 2 now)) 3600)
        (* (- (car (nthcdr 3 now)) 1) 3600 24))))
 
 (defun gnus-seconds-year ()
   "Returns the number of seconds passed this year"
   (let ((now (decode-time (current-time)))
        (days (format-time-string "%j" (current-time))))
-    (+ (car now) (* (car (cdr now)) 60) (* (car (nthcdr 2 now)) 3600) 
+    (+ (car now) (* (car (cdr now)) 60) (* (car (nthcdr 2 now)) 3600)
        (* (- (string-to-number days) 1) 3600 24))))
 
 (defvar gnus-user-date-format-alist
@@ -361,11 +362,11 @@ Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"."
       (let* ((messy-date (safe-date-to-time messy-date))
             (now (current-time))
             ;;If we don't find something suitable we'll use this one
-            (my-format "%b %m '%y") 
+            (my-format "%b %m '%y")
             (high (lsh (- (car now) (car messy-date)) 16)))
-       (if (and (> high -1) (= (logand high 65535) 0))  
+       (if (and (> high -1) (= (logand high 65535) 0))
            ;;overflow and bad input
-           (let* ((difference (+ high (- (car (cdr now)) 
+           (let* ((difference (+ high (- (car (cdr now))
                                          (car (cdr messy-date)))))
                   (templist gnus-user-date-format-alist)
                   (top (eval (caar templist))))
@@ -490,9 +491,9 @@ If N, return the Nth ancestor instead."
 (defun gnus-horizontal-recenter ()
   "Recenter the current buffer horizontally."
   (if (< (current-column) (/ (window-width) 2))
-      (set-window-hscroll (get-buffer-window (current-buffer) t) 0)
+      (set-window-hscroll (gnus-get-buffer-window (current-buffer) t) 0)
     (let* ((orig (point))
-          (end (window-end (get-buffer-window (current-buffer) t)))
+          (end (window-end (gnus-get-buffer-window (current-buffer) t)))
           (max 0))
       (when end
        ;; Find the longest line currently displayed in the window.
@@ -506,10 +507,10 @@ If N, return the Nth ancestor instead."
        ;; Scroll horizontally to center (sort of) the point.
        (if (> max (window-width))
            (set-window-hscroll
-            (get-buffer-window (current-buffer) t)
+            (gnus-get-buffer-window (current-buffer) t)
             (min (- (current-column) (/ (window-width) 3))
                  (+ 2 (- max (window-width)))))
-         (set-window-hscroll (get-buffer-window (current-buffer) t) 0))
+         (set-window-hscroll (gnus-get-buffer-window (current-buffer) t) 0))
        max))))
 
 (defun gnus-read-event-char ()
@@ -1020,7 +1021,7 @@ Return the modified alist."
 
 (defun gnus-set-window-start (&optional point)
   "Set the window start to POINT, or (point) if nil."
-  (let ((win (get-buffer-window (current-buffer) t)))
+  (let ((win (gnus-get-buffer-window (current-buffer) t)))
     (when win
       (set-window-start win (or point (point))))))
 
index 208a8d1..402fc87 100644 (file)
@@ -29,6 +29,7 @@
 (eval-when-compile (require 'cl))
 
 (require 'gnus)
+(require 'gnus-util)
 
 (defgroup gnus-windows nil
   "Window configuration."
   :group 'gnus-windows
   :type 'boolean)
 
+(defcustom gnus-use-frames-on-any-display nil
+  "*If non-nil, frames on all displays will be considered useable by Gnus.
+When nil, only frames on the same display as the selected frame will be
+used to display Gnus windows."
+  :group 'gnus-windows
+  :type 'boolean)
+
 (defvar gnus-buffer-configuration
   '((group
      (vertical 1.0
@@ -519,7 +527,7 @@ should have point."
        (unless buffer
          (error "Invalid buffer type: %s" type))
        (if (and (setq buf (get-buffer (gnus-window-to-buffer-helper buffer)))
-                (setq win (get-buffer-window buf t)))
+                (setq win (gnus-get-buffer-window buf t)))
            (if (memq 'point split)
                (setq all-visible win))
          (setq all-visible nil)))
@@ -554,6 +562,16 @@ should have point."
       (mapcar (lambda (b) (delete-windows-on b t))
              (delq lowest-buf bufs)))))
 
+(defun gnus-get-buffer-window (buffer &optional frame)
+  (cond ((and (null gnus-use-frames-on-any-display)
+             (memq frame '(t 0 visible)))
+        (car (gnus-delete-if (lambda (win) 
+                               (not (member (window-frame win)
+                                            (frames-on-display-list))))
+                             (get-buffer-window-list buffer nil frame))))
+       (t
+        (get-buffer-window buffer frame))))
+
 (provide 'gnus-win)
 
 ;;; gnus-win.el ends here
index c8f2449..e7134fd 100644 (file)
            subject (match-string 2))
       (forward-line 1)
       (unless (assq article nnwarchive-headers)
-       (if (looking-at "<UL><LI><EM>From</EM>:\\([^&]+\\)<\\([^&]+\\)>")
+       (if (looking-at "<UL><LI><EM>From</EM>: *\\([^<]*[^< ]\\) *&lt;\\([^&]+\\)&gt;")
            (progn
              (setq from (match-string 1)
                    date (identity (match-string 2))))