* 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-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:
(require 'gnus-sum)
(require 'gnus-spec)
(require 'gnus-int)
+(require 'gnus-win)
(require 'mm-bodies)
(require 'mail-parse)
(require 'mm-decode)
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))
;; 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))
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))
;; 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
(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")
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))))
(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)
(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))))))
(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)))
(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)
"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)))
"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)))
"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)))
"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)))
(require 'gnus)
(require 'gnus-sum)
+(require 'gnus-win)
;;;
;;; gnus-pick-mode
(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
(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))))))
(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?!?
(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
(require 'gnus)
(require 'gnus-sum)
(require 'gnus-range)
+(require 'gnus-win)
(require 'message)
(require 'score-mode)
(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.
(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"))
(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
(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))))
(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.
;; 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 ()
(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))))))
(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
(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)))
(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
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>: *\\([^<]*[^< ]\\) *<\\([^&]+\\)>")
(progn
(setq from (match-string 1)
date (identity (match-string 2))))