*** empty log message ***
[gnus] / lisp / gnus-sum.el
index 5025530..1ea7d13 100644 (file)
@@ -126,7 +126,8 @@ non-nil and non-`some', fill in all gaps that Gnus manages to guess."
                 (const more)
                 (sexp :menu-tag "all" t)))
 
-(defcustom gnus-summary-thread-gathering-function 'gnus-gather-threads-by-subject
+(defcustom gnus-summary-thread-gathering-function
+  'gnus-gather-threads-by-subject
   "Function used for gathering loose threads.
 There are two pre-defined functions: `gnus-gather-threads-by-subject',
 which only takes Subjects into consideration; and
@@ -1311,7 +1312,8 @@ increase the score of each group you read."
     "t" gnus-article-remove-trailing-blank-lines
     "l" gnus-article-strip-leading-blank-lines
     "m" gnus-article-strip-multiple-blank-lines
-    "a" gnus-article-strip-blank-lines)
+    "a" gnus-article-strip-blank-lines
+    "s" gnus-article-strip-leading-space)
 
   (gnus-define-keys (gnus-summary-help-map "H" gnus-summary-mode-map)
     "v" gnus-version
@@ -1513,7 +1515,8 @@ increase the score of each group you read."
         ["Leading" gnus-article-strip-leading-blank-lines t]
         ["Multiple" gnus-article-strip-multiple-blank-lines t]
         ["Trailing" gnus-article-remove-trailing-blank-lines t]
-        ["All of the above" gnus-article-strip-blank-lines t])
+        ["All of the above" gnus-article-strip-blank-lines t]
+        ["Leading space" gnus-article-strip-leading-space t])
        ["Overstrike" gnus-article-treat-overstrike t]
        ["Emphasis" gnus-article-emphasize t]
        ["Word wrap" gnus-article-fill-cited-article t]
@@ -3190,11 +3193,11 @@ If NO-DISPLAY, don't generate a summary buffer."
    (let ((extract (funcall
                   gnus-extract-address-components
                   (mail-header-from h1))))
-     (or (car extract) (cdr extract)))
+     (or (car extract) (cadr extract) ""))
    (let ((extract (funcall
                   gnus-extract-address-components
                   (mail-header-from h2))))
-     (or (car extract) (cdr extract)))))
+     (or (car extract) (cadr extract) ""))))
 
 (defun gnus-thread-sort-by-author (h1 h2)
   "Sort threads by root author."
@@ -3819,12 +3822,28 @@ If READ-ALL is non-nil, all articles in the group are selected."
        type list newmarked symbol)
     (when info
       ;; Add all marks lists that are non-nil to the list of marks lists.
-      (while types
-       (setq type (pop types))
+      (while (setq type (pop types))
        (when (setq list (symbol-value
                          (setq symbol
                                (intern (format "gnus-newsgroup-%s"
                                                (car type))))))
+
+         ;; Get rid of the entries of the articles that have the
+         ;; default score.
+         (when (and (eq (cdr type) 'score)
+                    gnus-save-score
+                    list)
+           (let* ((arts list)
+                  (prev (cons nil articles))
+                  (all prev))
+             (while arts
+               (if (or (not (consp (car arts)))
+                       (= (cdar arts) gnus-summary-default-score))
+                   (setcdr prev (cdr arts))
+                 (setq prev arts))
+               (setq arts (cdr arts)))
+             (setq list (cdr all))))
+
          (push (cons (cdr type)
                      (if (memq (cdr type) uncompressed) list
                        (gnus-compress-sequence
@@ -3972,7 +3991,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
         xref-hashtb)))))
 
 (defun gnus-group-make-articles-read (group articles)
-  "Update the info of GROUP to say that only ARTICLES are unread."
+  "Update the info of GROUP to say that ARTICLES are read."
   (let* ((num 0)
         (entry (gnus-gethash group gnus-newsrc-hashtb))
         (info (nth 2 entry))
@@ -4104,8 +4123,10 @@ The resulting hash table is returned, or nil if no Xrefs were found."
            ;; Message-ID.
            (progn
              (goto-char p)
-             (setq id (if (search-forward "\nmessage-id: " nil t)
-                          (nnheader-header-value)
+             (setq id (if (search-forward "\nmessage-id:" nil t)
+                          (buffer-substring
+                           (1- (or (search-forward "<" nil t) (point)))
+                           (or (search-forward ">" nil t) (point)))
                         ;; If there was no message-id, we just fake one
                         ;; to make subsequent routines simpler.
                         (nnheader-generate-fake-message-id))))
@@ -5668,7 +5689,7 @@ If ALL is non-nil, limit strictly to unread articles."
           gnus-killed-mark gnus-kill-file-mark
           gnus-low-score-mark gnus-expirable-mark
           gnus-canceled-mark gnus-catchup-mark gnus-sparse-mark
-          gnus-duplicate-mark)
+          gnus-duplicate-mark gnus-souped-mark)
      'reverse)))
 
 (defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-exclude-marks)
@@ -8344,16 +8365,11 @@ save those articles instead."
     (gnus-article-setup-buffer)
     (set-buffer gnus-article-buffer)
     (setq buffer-read-only nil)
-    (let ((command (if automatic command (read-string "Command: " command)))
-         ;; Just binding this here doesn't help, because there might
-         ;; be output from the process after exiting the scope of
-         ;; this `let'.
-         ;; (buffer-read-only nil)
-         )
+    (let ((command (if automatic command (read-string "Command: " command))))
       (erase-buffer)
       (insert "$ " command "\n\n")
       (if gnus-view-pseudo-asynchronously
-         (start-process "gnus-execute" nil shell-file-name
+         (start-process "gnus-execute" (current-buffer) shell-file-name
                         shell-command-switch command)
        (call-process shell-file-name nil t nil
                      shell-command-switch command)))))