Merge Gnus' changes.

gnus.texi (Listing Groups): Document gnus-group-list-ticked.
gssapi.el (open-gssapi-stream): Remove the last mentions of the IMAP stuff.
gnus-score.el (gnus-score-string): Fix calling convention of `gnus-simplify-buffer-fuzzy' after last patches.
gnus-sum.el (gnus-update-marks): Don't send any marks updates to the server for articles we didn't get any headers for.  This is a sanity check.
nnimap.el (nnimap-open-connection-1): Is the login responds with a new CAPABILITY, use it.
gnus-agent.el (gnus-agent-fetch-headers): Don't message if we're not downloading anything.
gnus.el (gnus-splash-svg-color-symbols): Removed superfluous `and'.
gnus.el (gnus-group-startup-message): Prefer svg file and replace colors.
 (gnus-splash-svg-color-symbols): New function.
gnus-sum.el (gnus-simplify-buffer-fuzzy): Take the regexp explicitly instead of using the global gnus-simplify-subject-fuzzy-regexp.
 (gnus-simplify-subject-fuzzy): Use the local gnus-simplify-subject-fuzzy-regex instead of the global one.  This makes using this variable in group parameters work.
gnus-registry.el (gnus-registry-unfollowed-groups): Add "archive:sent" to the unfollowed group regex (for the recent Gnus archive:sent-YYYY-MM-DD groups).
 (gnus-registry-split-fancy-with-parent): Bail out early in sender tracking if there are more than `gnus-registry-max-track-groups' matches.
message.el (message--yank-original-internal): New function to do the insertion cleanly inside eval in `message-yank-original'.
 (message-yank-original): Use it.
This commit is contained in:
Gnus developers 2011-03-30 14:59:42 +00:00 committed by Katsumi Yamaoka
parent 888adce96c
commit a5954fa5c8
11 changed files with 174 additions and 73 deletions

View file

@ -1,3 +1,7 @@
2011-03-19 Antoine Levitt <antoine.levitt@gmail.com>
* gnus.texi (Listing Groups): Document gnus-group-list-ticked
2011-03-17 Jay Belanger <jay.p.belanger@gmail.com>
* calc.texi (Logarithmic Units): Update the function names.

View file

@ -3320,6 +3320,11 @@ List all groups with cached articles (@code{gnus-group-list-cached}).
@findex gnus-group-list-dormant
List all groups with dormant articles (@code{gnus-group-list-dormant}).
@item A !
@kindex A ! (Group)
@findex gnus-group-list-ticked
List all groups with ticked articles (@code{gnus-group-list-ticked}).
@item A /
@kindex A / (Group)
@findex gnus-group-list-limit

View file

@ -15,6 +15,59 @@
nntp-open-plain-stream value.
(nntp-open-connection): Recognize that value.
2011-03-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gssapi.el (open-gssapi-stream): Remove the last mentions of the IMAP
stuff.
* gnus-score.el (gnus-score-string): Fix calling convention of
`gnus-simplify-buffer-fuzzy' after last patches.
* gnus-sum.el (gnus-update-marks): Don't send any marks updates to the
server for articles we didn't get any headers for. This is a sanity
check.
2011-03-29 Michael Welsh Duggan <md5i@md5i.com>
* nnimap.el (nnimap-open-connection-1): Is the login responds with a
new CAPABILITY, use it.
2011-03-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-agent.el (gnus-agent-fetch-headers): Don't message if we're not
downloading anything.
* gnus.el (gnus-splash-svg-color-symbols): Removed superfluous `and'.
2011-03-29 Adam Sjøgren <asjo@koldfront.dk>
* gnus.el (gnus-group-startup-message): Prefer svg file and replace
colors.
(gnus-splash-svg-color-symbols): New function.
2011-03-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-sum.el (gnus-simplify-buffer-fuzzy): Take the regexp explicitly
instead of using the global gnus-simplify-subject-fuzzy-regexp.
(gnus-simplify-subject-fuzzy): Use the local
gnus-simplify-subject-fuzzy-regex instead of the global one. This
makes using this variable in group parameters work.
2011-03-29 Teodor Zlatanov <tzz@lifelogs.com>
* gnus-registry.el (gnus-registry-unfollowed-groups): Add
"archive:sent" to the unfollowed group regex (for the recent Gnus
archive:sent-YYYY-MM-DD groups).
(gnus-registry-split-fancy-with-parent): Bail out early in sender
tracking if there are more than `gnus-registry-max-track-groups'
matches.
2011-03-29 Stefan Monnier <monnier@iro.umontreal.ca>
* message.el (message--yank-original-internal): New function to do the
insertion cleanly inside eval in `message-yank-original'.
(message-yank-original): Use it.
2011-03-29 Julien Danjou <julien@danjou.info>
* mm-view.el (mm-display-inline-fontify): Use `set-normal-mode' with

View file

@ -1925,9 +1925,10 @@ article numbers will be returned."
(setq articles (gnus-list-range-intersection
articles (list (cons low high)))))))
(gnus-message
10 "gnus-agent-fetch-headers: undownloaded articles are '%s'"
(gnus-compress-sequence articles t))
(when articles
(gnus-message
10 "gnus-agent-fetch-headers: undownloaded articles are '%s'"
(gnus-compress-sequence articles t)))
(with-current-buffer nntp-server-buffer
(if articles

View file

@ -124,7 +124,7 @@ display."
:type 'symbol)
(defcustom gnus-registry-unfollowed-groups
'("delayed$" "drafts$" "queue$" "INBOX$" "^nnmairix:")
'("delayed$" "drafts$" "queue$" "INBOX$" "^nnmairix:" "archive")
"List of groups that gnus-registry-split-fancy-with-parent won't return.
The group names are matched, they don't have to be fully
qualified. This parameter tells the Registry 'never split a
@ -541,24 +541,26 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
user-mail-address)))
(maphash
(lambda (key value)
(let ((this-sender (cdr
(gnus-registry-fetch-extra key 'sender)))
matches)
(when (and this-sender
(equal sender this-sender))
(let ((groups (gnus-registry-fetch-groups
key
gnus-registry-max-track-groups)))
(dolist (group groups)
(when (and group (gnus-registry-follow-group-p group))
(push group found-full)
(setq found (append (list group) (delete group found))))))
(push key matches)
(gnus-message
;; raise level of messaging if gnus-registry-track-extra
(if gnus-registry-track-extra 7 9)
"%s (extra tracking) traced sender %s to groups %s (keys %s)"
log-agent sender found matches))))
;; don't use more than gnus-registry-max-track-groups
(when (< (length found-full) gnus-registry-max-track-groups)
(let ((this-sender
(cdr (gnus-registry-fetch-extra key 'sender)))
matches)
(when (and this-sender
(equal sender this-sender))
(let ((groups (gnus-registry-fetch-groups
key
gnus-registry-max-track-groups)))
(dolist (group groups)
(when (and group (gnus-registry-follow-group-p group))
(push group found-full)
(setq found (append (list group) (delete group found))))))
(push key matches)
(gnus-message
;; raise level of messaging if gnus-registry-track-extra
(if gnus-registry-track-extra 7 9)
"%s (extra tracking) traced sender %s to groups %s (keys %s)"
log-agent sender found matches)))))
gnus-registry-hashtb)
;; filter the found groups and return them
;; the found groups are NOT the full groups

View file

@ -2151,7 +2151,7 @@ score in `gnus-newsgroup-scored' by SCORE."
;; Find fuzzy matches.
(when fuzzies
;; Simplify the entire buffer for easy matching.
(gnus-simplify-buffer-fuzzy)
(gnus-simplify-buffer-fuzzy gnus-simplify-subject-fuzzy-regexp)
(while (setq kill (cadaar fuzzies))
(let* ((match (nth 0 kill))
(type (nth 3 kill))

View file

@ -1734,7 +1734,7 @@ If RE-ONLY is non-nil, strip leading `Re:'s only."
(while (re-search-forward regexp nil t)
(replace-match (or newtext ""))))
(defun gnus-simplify-buffer-fuzzy ()
(defun gnus-simplify-buffer-fuzzy (regexp)
"Simplify string in the buffer fuzzily.
The string in the accessible portion of the current buffer is simplified.
It is assumed to be a single-line subject.
@ -1748,11 +1748,10 @@ matter is removed. Additional things can be deleted by setting
(while (not (eq modified-tick (buffer-modified-tick)))
(setq modified-tick (buffer-modified-tick))
(cond
((listp gnus-simplify-subject-fuzzy-regexp)
(mapc 'gnus-simplify-buffer-fuzzy-step
gnus-simplify-subject-fuzzy-regexp))
(gnus-simplify-subject-fuzzy-regexp
(gnus-simplify-buffer-fuzzy-step gnus-simplify-subject-fuzzy-regexp)))
((listp regexp)
(mapc 'gnus-simplify-buffer-fuzzy-step regexp))
(regexp
(gnus-simplify-buffer-fuzzy-step regexp)))
(gnus-simplify-buffer-fuzzy-step "^ *\\[[-+?*!][-+?*!]\\] *")
(gnus-simplify-buffer-fuzzy-step
"^ *\\(re\\|fw\\|fwd\\)[[{(^0-9]*[])}]?[:;] *")
@ -1767,15 +1766,16 @@ matter is removed. Additional things can be deleted by setting
"Simplify a subject string fuzzily.
See `gnus-simplify-buffer-fuzzy' for details."
(save-excursion
(gnus-set-work-buffer)
(let ((case-fold-search t))
;; Remove uninteresting prefixes.
(when (and gnus-simplify-ignored-prefixes
(string-match gnus-simplify-ignored-prefixes subject))
(setq subject (substring subject (match-end 0))))
(insert subject)
(inline (gnus-simplify-buffer-fuzzy))
(buffer-string))))
(let ((regexp gnus-simplify-subject-fuzzy-regexp))
(gnus-set-work-buffer)
(let ((case-fold-search t))
;; Remove uninteresting prefixes.
(when (and gnus-simplify-ignored-prefixes
(string-match gnus-simplify-ignored-prefixes subject))
(setq subject (substring subject (match-end 0))))
(insert subject)
(inline (gnus-simplify-buffer-fuzzy regexp))
(buffer-string)))))
(defsubst gnus-simplify-subject-fully (subject)
"Simplify a subject string according to `gnus-summary-gather-subject-limit'."
@ -6068,14 +6068,23 @@ If SELECT-ARTICLES, only select those articles from GROUP."
'request-set-mark gnus-newsgroup-name)
(not (gnus-article-unpropagatable-p (cdr type))))
(let* ((old (cdr (assq (cdr type) (gnus-info-marks info))))
(del (gnus-remove-from-range (gnus-copy-sequence old) list))
(add (gnus-remove-from-range
(gnus-copy-sequence list) old)))
;; Don't do anything about marks for articles we
;; didn't actually get any headers for.
(existing (gnus-compress-sequence gnus-newsgroup-articles))
(del
(gnus-sorted-range-intersection
existing
(gnus-remove-from-range (gnus-copy-sequence old) list)))
(add
(gnus-sorted-range-intersection
existing
(gnus-remove-from-range
(gnus-copy-sequence list) old))))
(when add
(push (list add 'add (list (cdr type))) delta-marks))
(when del
;; Don't delete marks from outside the active range. This
;; shouldn't happen, but is a sanity check.
;; Don't delete marks from outside the active range.
;; This shouldn't happen, but is a sanity check.
(setq del (gnus-sorted-range-intersection
(gnus-active gnus-newsgroup-name) del))
(push (list del 'del (list (cdr type))) delta-marks))))

View file

@ -1043,12 +1043,15 @@ be set in `.emacs' instead."
((boundp 'image-load-path)
(symbol-value 'image-load-path))
(t load-path)))
(image (find-image
`((:type xpm :file "gnus.xpm"
(image (gnus-splash-svg-color-symbols (find-image
`((:type svg :file "gnus.svg"
:color-symbols
(("#bf9900" . ,(car gnus-logo-colors))
("#ffcc00" . ,(cadr gnus-logo-colors))))
(:type xpm :file "gnus.xpm"
:color-symbols
(("thing" . ,(car gnus-logo-colors))
("shadow" . ,(cadr gnus-logo-colors))))
(:type svg :file "gnus.svg")
(:type png :file "gnus.png")
(:type pbm :file "gnus.pbm"
;; Account for the pbm's background.
@ -1057,7 +1060,7 @@ be set in `.emacs' instead."
(:type xbm :file "gnus.xbm"
;; Account for the xbm's background.
:background ,(face-foreground 'gnus-splash)
:foreground ,(face-background 'default))))))
:foreground ,(face-background 'default)))))))
(when image
(let ((size (image-size image)))
(insert-char ?\n (max 0 (round (- (window-height)
@ -1103,6 +1106,20 @@ be set in `.emacs' instead."
(setq mode-line-buffer-identification (concat " " gnus-version))
(set-buffer-modified-p t)))
(defun gnus-splash-svg-color-symbols (list)
"Do color-symbol search-and-replace in svg file"
(let ((type (plist-get (cdr list) :type))
(file (plist-get (cdr list) :file))
(color-symbols (plist-get (cdr list) :color-symbols)))
(if (string= type "svg")
(let ((data (with-temp-buffer (insert-file file) (buffer-string))))
(mapc (lambda (rule)
(setq data (replace-regexp-in-string
(concat "fill:" (car rule))
(concat "fill:" (cdr rule)) data))) color-symbols)
(cons (car list) (list :type type :data data)))
list)))
(eval-when (load)
(let ((command (format "%s" this-command)))
(when (string-match "gnus" command)

View file

@ -33,14 +33,14 @@
"--authentication-id %l")
"imtest -m gssapi -u %l -p %p %s")
"List of strings containing commands for GSSAPI (krb5) authentication.
%s is replaced with server hostname, %p with port to connect to, and
%l with the value of `imap-default-user'. The program should accept
IMAP commands on stdin and return responses to stdout. Each entry in
the list is tried until a successful connection is made."
%s is replaced with server hostname, %p with port to connect to,
and %l with the user name. The program should accept commands on
stdin and return responses to stdout. Each entry in the list is
tried until a successful connection is made."
:group 'network
:type '(repeat string))
(defun open-gssapi-stream (name buffer server port)
(defun open-gssapi-stream (name buffer server port user)
(let ((cmds gssapi-program)
cmd done)
(with-current-buffer buffer
@ -57,7 +57,7 @@ the list is tried until a successful connection is made."
(format-spec-make
?s server
?p (number-to-string port)
?l imap-default-user))))
?l user))))
response)
(when process
(while (and (memq (process-status process) '(open run))
@ -92,7 +92,7 @@ the list is tried until a successful connection is made."
(accept-process-output process 1)
(sit-for 1))
(erase-buffer)
(message "GSSAPI IMAP connection: %s" (or response "failed"))
(message "GSSAPI connection: %s" (or response "failed"))
(if (and response (let ((case-fold-search nil))
(not (string-match "failed" response))))
(setq done process)

View file

@ -3712,22 +3712,9 @@ To use this automatically, you may add this function to
(while (re-search-forward citexp nil t)
(replace-match (if remove "" "\n"))))))
(defun message-yank-original (&optional arg)
"Insert the message being replied to, if any.
Puts point before the text and mark after.
Normally indents each nonblank line ARG spaces (default 3). However,
if `message-yank-prefix' is non-nil, insert that prefix on each line.
This function uses `message-cite-function' to do the actual citing.
Just \\[universal-argument] as argument means don't indent, insert no
prefix, and don't delete any headers."
(interactive "P")
(defun message--yank-original-internal (arg)
(let ((modified (buffer-modified-p))
body-text)
;; eval the let forms contained in message-cite-style
(eval
`(let ,message-cite-style
(when (and message-reply-buffer
message-cite-function)
(when (equal message-cite-reply-position 'above)
@ -3767,7 +3754,23 @@ prefix, and don't delete any headers."
;; Add a `message-setup-very-last-hook' here?
;; Add `gnus-article-highlight-citation' here?
(unless modified
(setq message-checksum (message-checksum))))))))
(setq message-checksum (message-checksum))))))
(defun message-yank-original (&optional arg)
"Insert the message being replied to, if any.
Puts point before the text and mark after.
Normally indents each nonblank line ARG spaces (default 3). However,
if `message-yank-prefix' is non-nil, insert that prefix on each line.
This function uses `message-cite-function' to do the actual citing.
Just \\[universal-argument] as argument means don't indent, insert no
prefix, and don't delete any headers."
(interactive "P")
;; eval the let forms contained in message-cite-style
(eval
`(let ,message-cite-style
(message--yank-original-internal ',arg))))
(defun message-yank-buffer (buffer)
"Insert BUFFER into the current buffer and quote it."

View file

@ -410,11 +410,18 @@ textual parts.")
(setq login-result
(nnimap-login (car credentials) (cadr credentials))))
(if (car login-result)
;; save the credentials if a save function exists
(progn
;; Save the credentials if a save function exists
;; (such a function will only be passed if a new
;; token was created)
(when (functionp (nth 2 credentials))
(funcall (nth 2 credentials)))
;; token was created).
(when (functionp (nth 2 credentials))
(funcall (nth 2 credentials)))
;; See if CAPABILITY is set as part of login
;; response.
(dolist (response (cddr login-result))
(when (string= "CAPABILITY" (upcase (car response)))
(setf (nnimap-capabilities nnimap-object)
(mapcar #'upcase (cdr response))))))
;; If the login failed, then forget the credentials
;; that are now possibly cached.
(dolist (host (list (nnoo-current-server 'nnimap)