Synch to No Gnus 200401141432.
[elisp/gnus.git-] / lisp / message.el
index b4bd3bb..65c527f 100644 (file)
 
 (require 'rfc822)
 (eval-and-compile
-  (autoload 'customize-save-variable "cus-edit") ;; for Mule 2.
-  (autoload 'sha1 "sha1-el")
   (autoload 'gnus-find-method-for-group "gnus")
   (autoload 'nnvirtual-find-group-art "nnvirtual")
   (autoload 'gnus-group-decoded-name "gnus-group"))
+(eval-when-compile
+  (autoload 'sha1 "sha1-el"))
 
 (defgroup message '((user-mail-address custom-variable)
                    (user-full-name custom-variable))
@@ -662,15 +662,13 @@ Done before generating the new subject of a forward."
   (if (string-match "[[:digit:]]" "1") ;; support POSIX?
       "\\([ \t]*[-_.[:word:]]+>+\\|[ \t]*[]>|}+]\\)+"
     ;; ?-, ?_ or ?. MUST NOT be in syntax entry w.
-    (let ((old-table (syntax-table))
-         non-word-constituents)
-      (set-syntax-table text-mode-syntax-table)
-      (setq non-word-constituents
-           (concat
-            (if (string-match "\\w" "-")  "" "-")
-            (if (string-match "\\w" "_")  "" "_")
-            (if (string-match "\\w" ".")  "" ".")))
-      (set-syntax-table old-table)
+    (let (non-word-constituents)
+      (with-syntax-table text-mode-syntax-table
+       (setq non-word-constituents
+             (concat
+              (if (string-match "\\w" "-")  "" "-")
+              (if (string-match "\\w" "_")  "" "_")
+              (if (string-match "\\w" ".")  "" "."))))
       (if (equal non-word-constituents "")
          "\\([ \t]*\\(\\w\\)+>+\\|[ \t]*[]>|}+]\\)+"
        (concat "\\([ \t]*\\(\\w\\|["
@@ -3022,16 +3020,23 @@ or in the synonym headers, defined by `message-header-synonyms'."
   (when (message-goto-signature)
     (forward-line -2)))
 
-(defun message-kill-to-signature ()
-  "Deletes all text up to the signature."
-  (interactive)
-  (let ((point (point)))
-    (message-goto-signature)
-    (unless (eobp)
-      (end-of-line -1))
-    (kill-region point (point))
-    (unless (bolp)
-      (insert "\n"))))
+(defun message-kill-to-signature (&optional arg)
+  "Kill all text up to the signature.
+If a numberic argument or prefix arg is given, leave that number
+of lines before the signature intact."
+  (interactive "p")
+  (save-excursion
+    (save-restriction
+      (let ((point (point)))
+       (narrow-to-region point (point-max))
+       (message-goto-signature)
+       (unless (eobp)
+         (if (and arg (numberp arg))
+             (forward-line (- -1 arg))
+           (end-of-line -1)))
+       (unless (= point (point))
+         (kill-region point (point))
+         (insert "\n"))))))
 
 (defun message-newline-and-reformat (&optional arg not-break)
   "Insert four newlines, and then reformat if inside quoted text.
@@ -4425,6 +4430,7 @@ documentation for the function `mail-source-touch-pop'."
 (defun message-canlock-generate ()
   "Return a string that is non-trivial to guess.
 Do not use this for anything important, it is cryptographically weak."
+  (require 'sha1-el)
   (let (sha1-maximum-internal-length)
     (sha1 (concat (message-unique-id)
                  (format "%x%x%x" (random) (random t) (random))
@@ -7291,11 +7297,14 @@ which specify the range to operate on."
   :type '(alist :key-type regexp :value-type function))
 
 (defcustom message-expand-name-function
-  (if (fboundp 'bbdb-complete-name)
-      'bbdb-complete-name
-    (if (fboundp 'lsdb-complete-name)
-       'lsdb-complete-name
-      'expand-abbrev))
+  (cond ((and (boundp 'eudc-protocol)
+             eudc-protocol)
+        'eudc-expand-inline)
+       ((fboundp 'bbdb-complete-name)
+        'bbdb-complete-name)
+       ((fboundp 'lsdb-complete-name)
+        'lsdb-complete-name)
+       (t 'expand-abbrev))
   "*A function called to expand addresses in field body."
   :group 'message
   :type 'function)