Synch to No Gnus 200506060511.
[elisp/gnus.git-] / lisp / gnus-art.el
index 14d0144..91435bd 100644 (file)
@@ -405,7 +405,13 @@ advertisements.  For example:
                      (or (nth 4 spec) 3)
                      (intern (format "gnus-emphasis-%s" (nth 2 spec)))))
              types))
-     '(("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
+     '(;; I've never seen anyone use this strikethru convention whereas I've
+       ;; several times seen it triggered by normal text.  --Stef
+       ;; Miles suggests that this form is sometimes used but for italics,
+       ;; so maybe we should map it to `italic'.
+       ;; ("\\(\\s-\\|^\\)\\(-\\(\\(\\w\\|-[^-]\\)+\\)-\\)\\(\\s-\\|[?!.,;]\\)"
+       ;; 2 3 gnus-emphasis-strikethru)
+       ("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)"
        2 3 gnus-emphasis-underline))))
   "*Alist that says how to fontify certain phrases.
 Each item looks like this:
@@ -517,9 +523,6 @@ be fed to `format-time-string'."
   :link '(custom-manual "(gnus)Article Date")
   :group 'gnus-article-washing)
 
-(eval-and-compile
-  (autoload 'mail-extract-address-components "mail-extr"))
-
 (defcustom gnus-save-all-headers t
   "*If non-nil, don't remove any headers before saving."
   :group 'gnus-article-saving
@@ -2354,10 +2357,11 @@ unfolded."
                   ;; The command is a string, so we interpret the command
                   ;; as a, well, command, and fork it off.
                   (let ((process-connection-type nil))
-                    (process-kill-without-query
+                    (gnus-set-process-query-on-exit-flag
                      (start-process
                       "article-x-face" nil shell-file-name
-                      shell-command-switch gnus-article-x-face-command))
+                      shell-command-switch gnus-article-x-face-command)
+                     nil)
                     (with-temp-buffer
                       (insert face)
                       (process-send-region "article-x-face"
@@ -3215,23 +3219,24 @@ function and want to see what the date was before converting."
 
 (defun article-update-date-lapsed ()
   "Function to be run from a timer to update the lapsed time line."
-  (let (deactivate-mark)
-    (save-excursion
-      (ignore-errors
-       (walk-windows
-        (lambda (w)
-          (set-buffer (window-buffer w))
-          (when (or (and (eq major-mode 'mime-view-mode)
-                         (eq (mime-preview-original-major-mode)
-                             'gnus-original-article-mode))
-                    (eq major-mode 'gnus-article-mode))
-            (let ((mark (point-marker)))
-              (goto-char (point-min))
-              (when (re-search-forward "^X-Sent:" nil t)
-                (article-date-lapsed t))
-              (goto-char (marker-position mark))
-              (move-marker mark nil))))
-        nil 'visible)))))
+  (save-match-data
+    (let (deactivate-mark)
+      (save-excursion
+       (ignore-errors
+        (walk-windows
+         (lambda (w)
+           (set-buffer (window-buffer w))
+           (when (or (and (eq major-mode 'mime-view-mode)
+                          (eq (mime-preview-original-major-mode)
+                              'gnus-original-article-mode))
+                     (eq major-mode 'gnus-article-mode))
+             (let ((mark (point-marker)))
+               (goto-char (point-min))
+               (when (re-search-forward "^X-Sent:" nil t)
+                 (article-date-lapsed t))
+               (goto-char (marker-position mark))
+               (move-marker mark nil))))
+         nil 'visible))))))
 
 (defun gnus-start-date-timer (&optional n)
   "Start a timer to update the X-Sent header in the article buffers.
@@ -3262,21 +3267,19 @@ This format is defined by the `gnus-article-time-format' variable."
   (interactive (list t))
   (article-date-ut 'iso8601 highlight))
 
-(defun gnus-article-date-value ()
-  "Return the value of the date header.
-The buffer is expected to be narrowed to just the header of the article."
-  (goto-char (point-min))
-  (let* ((case-fold-search t)
-        (start (when (and (re-search-forward "^date:[\t\n ]+" nil t)
-                          (not (bolp)))
-                 (match-end 0))))
-    (when (and start
-              (re-search-forward "[\t ]*\n\\(?:[^\t ]\\|\\'\\)" nil t))
-      (buffer-substring-no-properties start (match-beginning 0)))))
-
 (defmacro gnus-article-save-original-date (&rest forms)
-  "Save the original date as a text property."
-  `(let ((date (,(symbol-function 'gnus-article-date-value))))
+  "Save the original date as a text property and evaluate FORMS."
+  `(let* ((case-fold-search t)
+         (start (progn
+                  (goto-char (point-min))
+                  (when (and (re-search-forward "^date:[\t\n ]+" nil t)
+                             (not (bolp)))
+                    (match-end 0))))
+         (date (when (and start
+                          (re-search-forward "[\t ]*\n\\(?:[^\t ]\\|\\'\\)"
+                                             nil t))
+                 (buffer-substring-no-properties start
+                                                 (match-beginning 0)))))
      (goto-char (point-max))
      (skip-chars-backward "\n")
      (put-text-property (point-min) (point) 'original-date date)
@@ -3964,7 +3967,7 @@ commands:
   (setq buffer-read-only t
        show-trailing-whitespace nil)
   (set-syntax-table gnus-article-mode-syntax-table)
-  (gnus-run-hooks 'gnus-article-mode-hook))
+  (gnus-run-mode-hooks 'gnus-article-mode-hook))
 
 (defun gnus-article-setup-buffer ()
   "Initialize the article buffer."
@@ -4444,6 +4447,7 @@ This function is exclusively used by `gnus-mime-save-part-and-strip'
 and `gnus-mime-delete-part', and not provided at run-time normally."
     (gnus-article-edit-article
      `(lambda ()
+       (buffer-disable-undo)
        (erase-buffer)
        (let ((mail-parse-charset (or gnus-article-charset
                                      ',gnus-newsgroup-charset))
@@ -5038,7 +5042,7 @@ N is the numerical prefix."
          (set-window-point window point)))
       (let ((handles ihandles)
            (inhibit-read-only t)
-           handle date)
+           handle)
        (cond (handles)
              ((setq handles (mm-dissect-buffer nil gnus-article-loose-mime))
               (when gnus-article-emulate-mime
@@ -7295,7 +7299,7 @@ specified by `gnus-button-alist'."
                                     (match-string 3 address)
                                   "nntp")))
        nil nil nil
-       (and (match-end 6) (list (string-to-int (match-string 6 address))))))))
+       (and (match-end 6) (list (string-to-number (match-string 6 address))))))))
 
 (defun gnus-url-parse-query-string (query &optional downcase)
   (let (retval pairs cur key val)