diff options
| author | Paul Eggert | 2011-07-20 09:32:42 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-07-20 09:32:42 -0700 |
| commit | 49b602e24ecb3fe085d45ac385e1bfda82252090 (patch) | |
| tree | a8b33aacdb64b4394ff213f15a77d90d84d3d8fd | |
| parent | 0d8de0fd0a5a63cc9558b5c99f9c7f1ddcaf338a (diff) | |
| parent | 59f1b8949499f35fbdf3761acc8dd651fa69d335 (diff) | |
| download | emacs-49b602e24ecb3fe085d45ac385e1bfda82252090.tar.gz emacs-49b602e24ecb3fe085d45ac385e1bfda82252090.zip | |
Merge from trunk.
| -rw-r--r-- | lisp/ChangeLog | 15 | ||||
| -rw-r--r-- | lisp/gnus/ChangeLog | 48 | ||||
| -rw-r--r-- | lisp/gnus/gnus-art.el | 15 | ||||
| -rw-r--r-- | lisp/gnus/gnus-group.el | 13 | ||||
| -rw-r--r-- | lisp/gnus/gnus-html.el | 1 | ||||
| -rw-r--r-- | lisp/gnus/gnus-sum.el | 74 | ||||
| -rw-r--r-- | lisp/gnus/gnus.el | 1 | ||||
| -rw-r--r-- | lisp/gnus/message.el | 8 | ||||
| -rw-r--r-- | lisp/gnus/nnimap.el | 42 | ||||
| -rw-r--r-- | lisp/gnus/nnir.el | 24 | ||||
| -rw-r--r-- | lisp/proced.el | 4 |
11 files changed, 179 insertions, 66 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0699a93ac9b..b138d78a070 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,18 @@ | |||
| 1 | 2011-07-20 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * proced.el (proced-update): Revert yesterday's bug#1779 patch, | ||
| 4 | which apparently didn't work. | ||
| 5 | |||
| 6 | 2011-07-19 Roland Winkler <winkler@gnu.org> | ||
| 7 | |||
| 8 | * proced.el (proced-send-signal): For *Marked Processes* buffer | ||
| 9 | put point at beginning of buffer. | ||
| 10 | |||
| 11 | 2011-07-19 Stephen Berman <stephen.berman@gmx.net> | ||
| 12 | |||
| 13 | * proced.el (proced-format): Make header lines align with the text | ||
| 14 | (bug#1779). | ||
| 15 | |||
| 1 | 2011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org> | 16 | 2011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 17 | ||
| 3 | * view.el (view-buffer): Allow running in `special' modes if we're | 18 | * view.el (view-buffer): Allow running in `special' modes if we're |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 32f5b702c6f..a1cb003a8ff 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,51 @@ | |||
| 1 | 2011-07-20 Andrew Cohen <cohen@andy.bu.edu> | ||
| 2 | |||
| 3 | * nnir.el (gnus-group-make-nnir-group): Allow optional search query | ||
| 4 | argument. | ||
| 5 | (gnus-group-make-nnir-group, nnir-request-group, nnir-run-query): Use | ||
| 6 | `nnir-address' to handle server info rather than passing an arg. | ||
| 7 | |||
| 8 | * nnimap.el (nnimap-make-thread-query): New utility function to format | ||
| 9 | an imap thread search query. | ||
| 10 | (nnimap-request-thread): Use it. | ||
| 11 | |||
| 12 | * gnus-sum.el (gnus-handle-ephemeral-exit): Ensure we are setting the | ||
| 13 | right select-method if we are not going back to the group buffer. | ||
| 14 | |||
| 15 | 2011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 16 | |||
| 17 | * gnus-group.el (gnus-group-read-ephemeral-group): Make sure we don't | ||
| 18 | enter invalid buffer configurations into the quit form (bug#9107). | ||
| 19 | (gnus-group-tool-bar-gnome): Replace connect/disconnect with | ||
| 20 | unplugged/plugged. | ||
| 21 | |||
| 22 | * gnus-sum.el (gnus-summary-refer-thread): When inserting new headers, | ||
| 23 | keep track of which ones are unread (bug#9061). | ||
| 24 | |||
| 25 | * gnus.el (gnus-refer-article-method): Allow entering any sexp | ||
| 26 | (bug#9055). | ||
| 27 | |||
| 28 | * gnus-art.el (gnus-article-show-images): Allow working if using w3m | ||
| 29 | (bug#9041). | ||
| 30 | |||
| 31 | * gnus-html.el (mm-util): Require (bug#9073). | ||
| 32 | |||
| 33 | * gnus-sum.el (gnus-delete-duplicate-headers): New function. | ||
| 34 | (gnus-summary-refer-thread): Use it to remove duplicates in the | ||
| 35 | un-threaded view (bug#9053). | ||
| 36 | (gnus-summary-insert-subject): Document USE-OLD-HEADER (bug#9070). | ||
| 37 | |||
| 38 | 2011-07-07 Kan-Ru Chen <kanru@kanru.info> | ||
| 39 | |||
| 40 | * nnir.el (nnir-read-server-parm): Use default value from global | ||
| 41 | variable. Without this the default search engine parameters aren't | ||
| 42 | used at all. | ||
| 43 | |||
| 44 | 2011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 45 | |||
| 46 | * message.el (message-unique-id): Don't use the undocumented return | ||
| 47 | value from (random t) (bug#9118). | ||
| 48 | |||
| 1 | 2011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org> | 49 | 2011-07-16 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 50 | ||
| 3 | * message.el (message-auto-save-directory): If the ~/Mail directory | 51 | * message.el (message-auto-save-directory): If the ~/Mail directory |
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 7255be416eb..c29000f4691 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -2267,6 +2267,8 @@ unfolded." | |||
| 2267 | (dolist (elem gnus-article-image-alist) | 2267 | (dolist (elem gnus-article-image-alist) |
| 2268 | (gnus-delete-images (car elem)))))) | 2268 | (gnus-delete-images (car elem)))))) |
| 2269 | 2269 | ||
| 2270 | (autoload 'w3m-toggle-inline-images "w3m") | ||
| 2271 | |||
| 2270 | (defun gnus-article-show-images () | 2272 | (defun gnus-article-show-images () |
| 2271 | "Show any images that are in the HTML-rendered article buffer. | 2273 | "Show any images that are in the HTML-rendered article buffer. |
| 2272 | This only works if the article in question is HTML." | 2274 | This only works if the article in question is HTML." |
| @@ -2274,11 +2276,14 @@ This only works if the article in question is HTML." | |||
| 2274 | (gnus-with-article-buffer | 2276 | (gnus-with-article-buffer |
| 2275 | (save-restriction | 2277 | (save-restriction |
| 2276 | (widen) | 2278 | (widen) |
| 2277 | (dolist (region (gnus-find-text-property-region (point-min) (point-max) | 2279 | (if (eq mm-text-html-renderer 'w3m) |
| 2278 | 'image-displayer)) | 2280 | (let ((mm-inline-text-html-with-images nil)) |
| 2279 | (destructuring-bind (start end function) region | 2281 | (w3m-toggle-inline-images)) |
| 2280 | (funcall function (get-text-property start 'image-url) | 2282 | (dolist (region (gnus-find-text-property-region (point-min) (point-max) |
| 2281 | start end)))))) | 2283 | 'image-displayer)) |
| 2284 | (destructuring-bind (start end function) region | ||
| 2285 | (funcall function (get-text-property start 'image-url) | ||
| 2286 | start end))))))) | ||
| 2282 | 2287 | ||
| 2283 | (defun gnus-article-treat-fold-newsgroups () | 2288 | (defun gnus-article-treat-fold-newsgroups () |
| 2284 | "Unfold folded message headers. | 2289 | "Unfold folded message headers. |
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index b4dca3e1fc4..2a31ccd34f0 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -1008,10 +1008,10 @@ Pre-defined symbols include `gnus-group-tool-bar-gnome' and | |||
| 1008 | '((gnus-group-post-news "mail/compose") | 1008 | '((gnus-group-post-news "mail/compose") |
| 1009 | ;; Some useful agent icons? I don't use the agent so agent users should | 1009 | ;; Some useful agent icons? I don't use the agent so agent users should |
| 1010 | ;; suggest useful commands: | 1010 | ;; suggest useful commands: |
| 1011 | (gnus-agent-toggle-plugged "disconnect" t | 1011 | (gnus-agent-toggle-plugged "unplugged" t |
| 1012 | :help "Gnus is currently unplugged. Click to work online." | 1012 | :help "Gnus is currently unplugged. Click to work online." |
| 1013 | :visible (and gnus-agent (not gnus-plugged))) | 1013 | :visible (and gnus-agent (not gnus-plugged))) |
| 1014 | (gnus-agent-toggle-plugged "connect" t | 1014 | (gnus-agent-toggle-plugged "plugged" t |
| 1015 | :help "Gnus is currently plugged. Click to work offline." | 1015 | :help "Gnus is currently plugged. Click to work offline." |
| 1016 | :visible (and gnus-agent gnus-plugged)) | 1016 | :visible (and gnus-agent gnus-plugged)) |
| 1017 | ;; FIXME: gnus-agent-toggle-plugged (in gnus-agent-group-make-menu-bar) | 1017 | ;; FIXME: gnus-agent-toggle-plugged (in gnus-agent-group-make-menu-bar) |
| @@ -2298,11 +2298,14 @@ Return the name of the group if selection was successful." | |||
| 2298 | `(-1 nil (,group | 2298 | `(-1 nil (,group |
| 2299 | ,gnus-level-default-subscribed nil nil ,method | 2299 | ,gnus-level-default-subscribed nil nil ,method |
| 2300 | ,(cons | 2300 | ,(cons |
| 2301 | (if quit-config | 2301 | (cond |
| 2302 | (cons 'quit-config quit-config) | 2302 | (quit-config |
| 2303 | (cons 'quit-config quit-config)) | ||
| 2304 | ((assq gnus-current-window-configuration | ||
| 2305 | gnus-buffer-configuration) | ||
| 2303 | (cons 'quit-config | 2306 | (cons 'quit-config |
| 2304 | (cons gnus-summary-buffer | 2307 | (cons gnus-summary-buffer |
| 2305 | gnus-current-window-configuration))) | 2308 | gnus-current-window-configuration)))) |
| 2306 | parameters))) | 2309 | parameters))) |
| 2307 | gnus-newsrc-hashtb) | 2310 | gnus-newsrc-hashtb) |
| 2308 | (push method gnus-ephemeral-servers) | 2311 | (push method gnus-ephemeral-servers) |
diff --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el index 6ca3c8b7945..d3da6aab1b7 100644 --- a/lisp/gnus/gnus-html.el +++ b/lisp/gnus/gnus-html.el | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | (require 'url-cache) | 38 | (require 'url-cache) |
| 39 | (require 'xml) | 39 | (require 'xml) |
| 40 | (require 'browse-url) | 40 | (require 'browse-url) |
| 41 | (require 'mm-util) | ||
| 41 | (eval-and-compile (unless (featurep 'xemacs) (require 'help-fns))) | 42 | (eval-and-compile (unless (featurep 'xemacs) (require 'help-fns))) |
| 42 | 43 | ||
| 43 | (defcustom gnus-html-image-cache-ttl (days-to-time 7) | 44 | (defcustom gnus-html-image-cache-ttl (days-to-time 7) |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 5a817e12104..6e8fc63d79f 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -6562,7 +6562,10 @@ This is meant to be called in `gnus-article-internal-prepare-hook'." | |||
| 6562 | (defun gnus-summary-insert-subject (id &optional old-header use-old-header) | 6562 | (defun gnus-summary-insert-subject (id &optional old-header use-old-header) |
| 6563 | "Find article ID and insert the summary line for that article. | 6563 | "Find article ID and insert the summary line for that article. |
| 6564 | OLD-HEADER can either be a header or a line number to insert | 6564 | OLD-HEADER can either be a header or a line number to insert |
| 6565 | the subject line on." | 6565 | the subject line on. |
| 6566 | If USE-OLD-HEADER is non-nil, then OLD-HEADER should be a header, | ||
| 6567 | and OLD-HEADER will be used when the summary line is inserted, | ||
| 6568 | too, instead of trying to fetch new headers." | ||
| 6566 | (let* ((line (and (numberp old-header) old-header)) | 6569 | (let* ((line (and (numberp old-header) old-header)) |
| 6567 | (old-header (and (vectorp old-header) old-header)) | 6570 | (old-header (and (vectorp old-header) old-header)) |
| 6568 | (header (cond ((and old-header use-old-header) | 6571 | (header (cond ((and old-header use-old-header) |
| @@ -7336,6 +7339,9 @@ The state which existed when entering the ephemeral is reset." | |||
| 7336 | (if (not (buffer-name (car quit-config))) | 7339 | (if (not (buffer-name (car quit-config))) |
| 7337 | (gnus-configure-windows 'group 'force) | 7340 | (gnus-configure-windows 'group 'force) |
| 7338 | (set-buffer (car quit-config)) | 7341 | (set-buffer (car quit-config)) |
| 7342 | (unless (eq (cdr quit-config) 'group) | ||
| 7343 | (setq gnus-current-select-method | ||
| 7344 | (gnus-find-method-for-group gnus-newsgroup-name))) | ||
| 7339 | (cond ((eq major-mode 'gnus-summary-mode) | 7345 | (cond ((eq major-mode 'gnus-summary-mode) |
| 7340 | (gnus-set-global-variables)) | 7346 | (gnus-set-global-variables)) |
| 7341 | ((eq major-mode 'gnus-article-mode) | 7347 | ((eq major-mode 'gnus-article-mode) |
| @@ -8950,6 +8956,21 @@ Return the number of articles fetched." | |||
| 8950 | (gnus-summary-position-point) | 8956 | (gnus-summary-position-point) |
| 8951 | n))) | 8957 | n))) |
| 8952 | 8958 | ||
| 8959 | (defun gnus-delete-duplicate-headers (headers) | ||
| 8960 | ;; First remove leading duplicates. | ||
| 8961 | (while (and (> (length headers) 1) | ||
| 8962 | (= (mail-header-number (car headers)) | ||
| 8963 | (mail-header-number (cadr headers)))) | ||
| 8964 | (pop headers)) | ||
| 8965 | ;; Then the rest. | ||
| 8966 | (let ((result headers)) | ||
| 8967 | (while (> (length headers) 1) | ||
| 8968 | (if (= (mail-header-number (car headers)) | ||
| 8969 | (mail-header-number (cadr headers))) | ||
| 8970 | (setcdr headers (cddr headers)) | ||
| 8971 | (pop headers))) | ||
| 8972 | result)) | ||
| 8973 | |||
| 8953 | (defun gnus-summary-refer-thread (&optional limit) | 8974 | (defun gnus-summary-refer-thread (&optional limit) |
| 8954 | "Fetch all articles in the current thread. | 8975 | "Fetch all articles in the current thread. |
| 8955 | If no backend-specific 'request-thread function is available | 8976 | If no backend-specific 'request-thread function is available |
| @@ -8964,29 +8985,36 @@ variable." | |||
| 8964 | (gnus-summary-ignore-duplicates t) | 8985 | (gnus-summary-ignore-duplicates t) |
| 8965 | (gnus-read-all-available-headers t) | 8986 | (gnus-read-all-available-headers t) |
| 8966 | (limit (if limit (prefix-numeric-value limit) | 8987 | (limit (if limit (prefix-numeric-value limit) |
| 8967 | gnus-refer-thread-limit))) | 8988 | gnus-refer-thread-limit)) |
| 8989 | (new-headers | ||
| 8990 | (if (gnus-check-backend-function | ||
| 8991 | 'request-thread gnus-newsgroup-name) | ||
| 8992 | (gnus-request-thread header gnus-newsgroup-name) | ||
| 8993 | (let* ((last (if (numberp limit) | ||
| 8994 | (min (+ (mail-header-number header) | ||
| 8995 | limit) | ||
| 8996 | gnus-newsgroup-highest) | ||
| 8997 | gnus-newsgroup-highest)) | ||
| 8998 | (subject (gnus-simplify-subject | ||
| 8999 | (mail-header-subject header))) | ||
| 9000 | (refs (split-string (or (mail-header-references header) | ||
| 9001 | ""))) | ||
| 9002 | (gnus-parse-headers-hook | ||
| 9003 | (lambda () (goto-char (point-min)) | ||
| 9004 | (keep-lines | ||
| 9005 | (regexp-opt (append refs (list id subject))))))) | ||
| 9006 | (gnus-fetch-headers (list last) (if (numberp limit) | ||
| 9007 | (* 2 limit) limit) t))))) | ||
| 9008 | (dolist (header new-headers) | ||
| 9009 | (when (member (mail-header-number header) gnus-newsgroup-unselected) | ||
| 9010 | (push (mail-header-number header) gnus-newsgroup-unreads) | ||
| 9011 | (setq gnus-newsgroup-unselected | ||
| 9012 | (delete (mail-header-number header) gnus-newsgroup-unselected)))) | ||
| 8968 | (setq gnus-newsgroup-headers | 9013 | (setq gnus-newsgroup-headers |
| 8969 | (gnus-merge | 9014 | (gnus-delete-duplicate-headers |
| 8970 | 'list gnus-newsgroup-headers | 9015 | (gnus-merge |
| 8971 | (if (gnus-check-backend-function | 9016 | 'list gnus-newsgroup-headers new-headers |
| 8972 | 'request-thread gnus-newsgroup-name) | 9017 | 'gnus-article-sort-by-number))) |
| 8973 | (gnus-request-thread header gnus-newsgroup-name) | ||
| 8974 | (let* ((last (if (numberp limit) | ||
| 8975 | (min (+ (mail-header-number header) | ||
| 8976 | limit) | ||
| 8977 | gnus-newsgroup-highest) | ||
| 8978 | gnus-newsgroup-highest)) | ||
| 8979 | (subject (gnus-simplify-subject | ||
| 8980 | (mail-header-subject header))) | ||
| 8981 | (refs (split-string (or (mail-header-references header) | ||
| 8982 | ""))) | ||
| 8983 | (gnus-parse-headers-hook | ||
| 8984 | (lambda () (goto-char (point-min)) | ||
| 8985 | (keep-lines | ||
| 8986 | (regexp-opt (append refs (list id subject))))))) | ||
| 8987 | (gnus-fetch-headers (list last) (if (numberp limit) | ||
| 8988 | (* 2 limit) limit) t))) | ||
| 8989 | 'gnus-article-sort-by-number)) | ||
| 8990 | (gnus-summary-limit-include-thread id))) | 9018 | (gnus-summary-limit-include-thread id))) |
| 8991 | 9019 | ||
| 8992 | (defun gnus-summary-refer-article (message-id) | 9020 | (defun gnus-summary-refer-article (message-id) |
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index b66d5f22474..7ff90f583cf 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el | |||
| @@ -1435,6 +1435,7 @@ list, Gnus will try all the methods in the list until it finds a match." | |||
| 1435 | (const current) | 1435 | (const current) |
| 1436 | (const :tag "Google" (nnweb "refer" (nnweb-type google))) | 1436 | (const :tag "Google" (nnweb "refer" (nnweb-type google))) |
| 1437 | gnus-select-method | 1437 | gnus-select-method |
| 1438 | sexp | ||
| 1438 | (repeat :menu-tag "Try multiple" | 1439 | (repeat :menu-tag "Try multiple" |
| 1439 | :tag "Multiple" | 1440 | :tag "Multiple" |
| 1440 | :value (current (nnweb "refer" (nnweb-type google))) | 1441 | :value (current (nnweb "refer" (nnweb-type google))) |
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index ff013e5b291..47c4de0aedc 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el | |||
| @@ -4785,7 +4785,9 @@ Do not use this for anything important, it is cryptographically weak." | |||
| 4785 | (require 'sha1) | 4785 | (require 'sha1) |
| 4786 | (let (sha1-maximum-internal-length) | 4786 | (let (sha1-maximum-internal-length) |
| 4787 | (sha1 (concat (message-unique-id) | 4787 | (sha1 (concat (message-unique-id) |
| 4788 | (format "%x%x%x" (random) (random t) (random)) | 4788 | (format "%x%x%x" (random) |
| 4789 | (progn (random t) (random)) | ||
| 4790 | (random)) | ||
| 4789 | (prin1-to-string (recent-keys)) | 4791 | (prin1-to-string (recent-keys)) |
| 4790 | (prin1-to-string (garbage-collect)))))) | 4792 | (prin1-to-string (garbage-collect)))))) |
| 4791 | 4793 | ||
| @@ -5488,10 +5490,12 @@ In posting styles use `(\"Expires\" (make-expires-date 30))'." | |||
| 5488 | ;; You might for example insert a "." somewhere (not next to another dot | 5490 | ;; You might for example insert a "." somewhere (not next to another dot |
| 5489 | ;; or string boundary), or modify the "fsf" string. | 5491 | ;; or string boundary), or modify the "fsf" string. |
| 5490 | (defun message-unique-id () | 5492 | (defun message-unique-id () |
| 5493 | (random t) | ||
| 5491 | ;; Don't use microseconds from (current-time), they may be unsupported. | 5494 | ;; Don't use microseconds from (current-time), they may be unsupported. |
| 5492 | ;; Instead we use this randomly inited counter. | 5495 | ;; Instead we use this randomly inited counter. |
| 5493 | (setq message-unique-id-char | 5496 | (setq message-unique-id-char |
| 5494 | (% (1+ (or message-unique-id-char (logand (random t) (1- (lsh 1 20))))) | 5497 | (% (1+ (or message-unique-id-char |
| 5498 | (logand (random most-positive-fixnum) (1- (lsh 1 20))))) | ||
| 5495 | ;; (current-time) returns 16-bit ints, | 5499 | ;; (current-time) returns 16-bit ints, |
| 5496 | ;; and 2^16*25 just fits into 4 digits i base 36. | 5500 | ;; and 2^16*25 just fits into 4 digits i base 36. |
| 5497 | (* 25 25))) | 5501 | (* 25 25))) |
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index ef5bee71629..385522759b6 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el | |||
| @@ -1567,25 +1567,14 @@ textual parts.") | |||
| 1567 | 1567 | ||
| 1568 | (deffoo nnimap-request-thread (header &optional group server) | 1568 | (deffoo nnimap-request-thread (header &optional group server) |
| 1569 | (when (nnimap-possibly-change-group group server) | 1569 | (when (nnimap-possibly-change-group group server) |
| 1570 | (let* ((id (mail-header-id header)) | 1570 | (let* ((cmd (nnimap-make-thread-query header)) |
| 1571 | (refs (split-string | 1571 | (result (with-current-buffer (nnimap-buffer) |
| 1572 | (or (mail-header-references header) | 1572 | (nnimap-command "UID SEARCH %s" cmd)))) |
| 1573 | ""))) | 1573 | (when result |
| 1574 | (cmd (let ((value | 1574 | (gnus-fetch-headers |
| 1575 | (format | 1575 | (and (car result) (delete 0 (mapcar #'string-to-number |
| 1576 | "(OR HEADER REFERENCES %s HEADER Message-Id %s)" | 1576 | (cdr (assoc "SEARCH" (cdr result)))))) |
| 1577 | id id))) | 1577 | nil t))))) |
| 1578 | (dolist (refid refs value) | ||
| 1579 | (setq value (format | ||
| 1580 | "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)" | ||
| 1581 | refid refid value))))) | ||
| 1582 | (result (with-current-buffer (nnimap-buffer) | ||
| 1583 | (nnimap-command "UID SEARCH %s" cmd)))) | ||
| 1584 | (when result | ||
| 1585 | (gnus-fetch-headers | ||
| 1586 | (and (car result) (delete 0 (mapcar #'string-to-number | ||
| 1587 | (cdr (assoc "SEARCH" (cdr result)))))) | ||
| 1588 | nil t))))) | ||
| 1589 | 1578 | ||
| 1590 | (defun nnimap-possibly-change-group (group server) | 1579 | (defun nnimap-possibly-change-group (group server) |
| 1591 | (let ((open-result t)) | 1580 | (let ((open-result t)) |
| @@ -1951,6 +1940,21 @@ textual parts.") | |||
| 1951 | group-art)) | 1940 | group-art)) |
| 1952 | nnimap-incoming-split-list))) | 1941 | nnimap-incoming-split-list))) |
| 1953 | 1942 | ||
| 1943 | (defun nnimap-make-thread-query (header) | ||
| 1944 | (let* ((id (mail-header-id header)) | ||
| 1945 | (refs (split-string | ||
| 1946 | (or (mail-header-references header) | ||
| 1947 | ""))) | ||
| 1948 | (value | ||
| 1949 | (format | ||
| 1950 | "(OR HEADER REFERENCES %s HEADER Message-Id %s)" | ||
| 1951 | id id))) | ||
| 1952 | (dolist (refid refs value) | ||
| 1953 | (setq value (format | ||
| 1954 | "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)" | ||
| 1955 | refid refid value))))) | ||
| 1956 | |||
| 1957 | |||
| 1954 | (provide 'nnimap) | 1958 | (provide 'nnimap) |
| 1955 | 1959 | ||
| 1956 | ;;; nnimap.el ends here | 1960 | ;;; nnimap.el ends here |
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el index 8099cc2a7cc..9840dddcb66 100644 --- a/lisp/gnus/nnir.el +++ b/lisp/gnus/nnir.el | |||
| @@ -296,6 +296,9 @@ is `(valuefunc member)'." | |||
| 296 | (nnoo-declare nnir) | 296 | (nnoo-declare nnir) |
| 297 | (nnoo-define-basics nnir) | 297 | (nnoo-define-basics nnir) |
| 298 | 298 | ||
| 299 | (defvoo nnir-address nil | ||
| 300 | "The address of the nnir server.") | ||
| 301 | |||
| 299 | (gnus-declare-backend "nnir" 'mail) | 302 | (gnus-declare-backend "nnir" 'mail) |
| 300 | 303 | ||
| 301 | 304 | ||
| @@ -582,18 +585,17 @@ Add an entry here when adding a new search engine.") | |||
| 582 | 585 | ||
| 583 | ;; Gnus glue. | 586 | ;; Gnus glue. |
| 584 | 587 | ||
| 585 | (defun gnus-group-make-nnir-group (nnir-extra-parms) | 588 | (defun gnus-group-make-nnir-group (nnir-extra-parms &optional parms) |
| 586 | "Create an nnir group. Asks for query." | 589 | "Create an nnir group. Asks for query." |
| 587 | (interactive "P") | 590 | (interactive "P") |
| 588 | (setq nnir-current-query nil | 591 | (setq nnir-current-query nil |
| 589 | nnir-current-server nil | 592 | nnir-current-server nil |
| 590 | nnir-current-group-marked nil | 593 | nnir-current-group-marked nil |
| 591 | nnir-artlist nil) | 594 | nnir-artlist nil) |
| 592 | (let* ((query (read-string "Query: " nil 'nnir-search-history)) | 595 | (let* ((query (unless parms (read-string "Query: " nil 'nnir-search-history))) |
| 593 | (parms (list (cons 'query query))) | 596 | (parms (or parms (list (cons 'query query)))) |
| 594 | (srv (if (gnus-server-server-name) | 597 | (srv (or (cdr (assq 'server parms)) (gnus-server-server-name) "nnir"))) |
| 595 | "all" ""))) | 598 | (add-to-list 'parms (cons 'unique-id (message-unique-id)) t) |
| 596 | (add-to-list 'parms (cons 'unique-id (message-unique-id)) t) | ||
| 597 | (gnus-group-read-ephemeral-group | 599 | (gnus-group-read-ephemeral-group |
| 598 | (concat "nnir:" (prin1-to-string parms)) (list 'nnir srv) t | 600 | (concat "nnir:" (prin1-to-string parms)) (list 'nnir srv) t |
| 599 | (cons (current-buffer) gnus-current-window-configuration) | 601 | (cons (current-buffer) gnus-current-window-configuration) |
| @@ -617,7 +619,7 @@ Add an entry here when adding a new search engine.") | |||
| 617 | (equal server nnir-current-server))) | 619 | (equal server nnir-current-server))) |
| 618 | nnir-artlist | 620 | nnir-artlist |
| 619 | ;; Cache miss. | 621 | ;; Cache miss. |
| 620 | (setq nnir-artlist (nnir-run-query group server))) | 622 | (setq nnir-artlist (nnir-run-query group))) |
| 621 | (with-current-buffer nntp-server-buffer | 623 | (with-current-buffer nntp-server-buffer |
| 622 | (setq nnir-current-query group) | 624 | (setq nnir-current-query group) |
| 623 | (when server (setq nnir-current-server server)) | 625 | (when server (setq nnir-current-server server)) |
| @@ -1594,14 +1596,13 @@ actually)." | |||
| 1594 | 1596 | ||
| 1595 | (autoload 'gnus-group-topic-name "gnus-topic") | 1597 | (autoload 'gnus-group-topic-name "gnus-topic") |
| 1596 | 1598 | ||
| 1597 | (defun nnir-run-query (query nserver) | 1599 | (defun nnir-run-query (query) |
| 1598 | "Invoke appropriate search engine function (see `nnir-engines'). | 1600 | "Invoke appropriate search engine function (see `nnir-engines'). |
| 1599 | If some groups were process-marked, run the query for each of the groups | 1601 | If some groups were process-marked, run the query for each of the groups |
| 1600 | and concat the results." | 1602 | and concat the results." |
| 1601 | (let ((q (car (read-from-string query))) | 1603 | (let ((q (car (read-from-string query))) |
| 1602 | (groups (if (string= "all-ephemeral" nserver) | 1604 | (groups (if (not (string= "nnir" nnir-address)) |
| 1603 | (with-current-buffer gnus-server-buffer | 1605 | (list (list nnir-address)) |
| 1604 | (list (list (gnus-server-server-name)))) | ||
| 1605 | (nnir-categorize | 1606 | (nnir-categorize |
| 1606 | (or gnus-group-marked | 1607 | (or gnus-group-marked |
| 1607 | (if (gnus-group-group-name) | 1608 | (if (gnus-group-group-name) |
| @@ -1640,6 +1641,7 @@ server is of form 'backend:name'." | |||
| 1640 | (let ((method (gnus-server-to-method server))) | 1641 | (let ((method (gnus-server-to-method server))) |
| 1641 | (cond ((and method (assq key (cddr method))) | 1642 | (cond ((and method (assq key (cddr method))) |
| 1642 | (nth 1 (assq key (cddr method)))) | 1643 | (nth 1 (assq key (cddr method)))) |
| 1644 | ((boundp key) (symbol-value key)) | ||
| 1643 | (t nil)))) | 1645 | (t nil)))) |
| 1644 | 1646 | ||
| 1645 | (defun nnir-possibly-change-server (server) | 1647 | (defun nnir-possibly-change-server (server) |
diff --git a/lisp/proced.el b/lisp/proced.el index 11598d7350f..94ea579ebd8 100644 --- a/lisp/proced.el +++ b/lisp/proced.el | |||
| @@ -1724,7 +1724,9 @@ After sending the signal, this command runs the normal hook | |||
| 1724 | (buffer-disable-undo) | 1724 | (buffer-disable-undo) |
| 1725 | (setq buffer-read-only t) | 1725 | (setq buffer-read-only t) |
| 1726 | (dolist (process process-alist) | 1726 | (dolist (process process-alist) |
| 1727 | (insert " " (cdr process) "\n"))) | 1727 | (insert " " (cdr process) "\n")) |
| 1728 | (delete-char -1) | ||
| 1729 | (goto-char (point-min))) | ||
| 1728 | (save-window-excursion | 1730 | (save-window-excursion |
| 1729 | ;; Analogous to `dired-pop-to-buffer' | 1731 | ;; Analogous to `dired-pop-to-buffer' |
| 1730 | ;; Don't split window horizontally. (Bug#1806) | 1732 | ;; Don't split window horizontally. (Bug#1806) |