changeset 100516:0363096dbcf8

Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1505
author Miles Bader <miles@gnu.org>
date Fri, 19 Dec 2008 02:40:25 +0000
parents ce4ce31aa65a
children 842856d1e518
files lisp/gnus/ChangeLog lisp/gnus/mm-util.el lisp/gnus/mml.el
diffstat 3 files changed, 67 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Fri Dec 19 01:50:43 2008 +0000
+++ b/lisp/gnus/ChangeLog	Fri Dec 19 02:40:25 2008 +0000
@@ -1,3 +1,16 @@
+2008-12-18  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* mm-util.el (mm-substring-no-properties): New function.
+	(mm-read-charset, mm-subst-char-in-string, mm-replace-in-string)
+	(mm-special-display-p): Enable those lambda forms to be byte compiled.
+	(mm-string-to-multibyte): Doc fix.
+
+	* mml.el (mml-attach-file): Use mm-substring-no-properties.
+
+2008-12-18  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* mml.el (mml-attach-file): Strip text properties from file name.
+
 2008-12-16  Glenn Morris  <rgm@gnu.org>
 
 	* mm-util.el (mm-charset-override-alist): Declare for compiler.
--- a/lisp/gnus/mm-util.el	Fri Dec 19 01:50:43 2008 +0000
+++ b/lisp/gnus/mm-util.el	Fri Dec 19 02:40:25 2008 +0000
@@ -47,38 +47,38 @@
        (if (fboundp (car elem))
 	   (defalias nfunc (car elem))
 	 (defalias nfunc (cdr elem)))))
-   '((coding-system-list . ignore)
+   `((coding-system-list . ignore)
      (char-int . identity)
      (coding-system-equal . equal)
      (annotationp . ignore)
      (set-buffer-file-coding-system . ignore)
      (read-charset
-      . (lambda (prompt)
-	  "Return a charset."
-	  (intern
-	   (completing-read
-	    prompt
-	    (mapcar (lambda (e) (list (symbol-name (car e))))
-		    mm-mime-mule-charset-alist)
-	    nil t))))
+      . ,(lambda (prompt)
+	   "Return a charset."
+	   (intern
+	    (completing-read
+	     prompt
+	     (mapcar (lambda (e) (list (symbol-name (car e))))
+		     mm-mime-mule-charset-alist)
+	     nil t))))
      (subst-char-in-string
-      . (lambda (from to string &optional inplace)
-	  ;; stolen (and renamed) from nnheader.el
-	  "Replace characters in STRING from FROM to TO.
+      . ,(lambda (from to string &optional inplace)
+	   ;; stolen (and renamed) from nnheader.el
+	   "Replace characters in STRING from FROM to TO.
 	  Unless optional argument INPLACE is non-nil, return a new string."
-	  (let ((string (if inplace string (copy-sequence string)))
-		(len (length string))
-		(idx 0))
-	    ;; Replace all occurrences of FROM with TO.
-	    (while (< idx len)
-	      (when (= (aref string idx) from)
-		(aset string idx to))
-	      (setq idx (1+ idx)))
-	    string)))
+	   (let ((string (if inplace string (copy-sequence string)))
+		 (len (length string))
+		 (idx 0))
+	     ;; Replace all occurrences of FROM with TO.
+	     (while (< idx len)
+	       (when (= (aref string idx) from)
+		 (aset string idx to))
+	       (setq idx (1+ idx)))
+	     string)))
      (replace-in-string
-      . (lambda (string regexp rep &optional literal)
-	  "See `replace-regexp-in-string', only the order of args differs."
-	  (replace-regexp-in-string regexp rep string nil literal)))
+      . ,(lambda (string regexp rep &optional literal)
+	   "See `replace-regexp-in-string', only the order of args differs."
+	   (replace-regexp-in-string regexp rep string nil literal)))
      (string-as-unibyte . identity)
      (string-make-unibyte . identity)
      ;; string-as-multibyte often doesn't really do what you think it does.
@@ -105,20 +105,32 @@
      (multibyte-char-to-unibyte . identity)
      (set-buffer-multibyte . ignore)
      (special-display-p
-      . (lambda (buffer-name)
-	  "Returns non-nil if a buffer named BUFFER-NAME gets a special frame."
-	  (and special-display-function
-	       (or (and (member buffer-name special-display-buffer-names) t)
-		   (cdr (assoc buffer-name special-display-buffer-names))
-		   (catch 'return
-		     (dolist (elem special-display-regexps)
-		       (and (stringp elem)
-			    (string-match elem buffer-name)
-			    (throw 'return t))
-		       (and (consp elem)
-			    (stringp (car elem))
-			    (string-match (car elem) buffer-name)
-			    (throw 'return (cdr elem))))))))))))
+      . ,(lambda (buffer-name)
+	   "Returns non-nil if a buffer named BUFFER-NAME gets a special frame."
+	   (and special-display-function
+		(or (and (member buffer-name special-display-buffer-names) t)
+		    (cdr (assoc buffer-name special-display-buffer-names))
+		    (catch 'return
+		      (dolist (elem special-display-regexps)
+			(and (stringp elem)
+			     (string-match elem buffer-name)
+			     (throw 'return t))
+			(and (consp elem)
+			     (stringp (car elem))
+			     (string-match (car elem) buffer-name)
+			     (throw 'return (cdr elem)))))))))
+     (substring-no-properties
+      . ,(lambda (string &optional from to)
+	   "Return a substring of STRING, without text properties.
+It starts at index FROM and ending before TO.
+TO may be nil or omitted; then the substring runs to the end of STRING.
+If FROM is nil or omitted, the substring starts at the beginning of STRING.
+If FROM or TO is negative, it counts from the end.
+
+With one argument, just copy STRING without its properties."
+	   (setq string (substring string (or from 0) to))
+	   (set-text-properties 0 (length string) nil string)
+	   string)))))
 
 (eval-and-compile
   (if (featurep 'xemacs)
@@ -156,7 +168,7 @@
     'string-to-multibyte)
    (t
     (lambda (string)
-      "Return a multibyte string with the same individual chars as string."
+      "Return a multibyte string with the same individual chars as STRING."
       (mapconcat
        (lambda (ch) (mm-string-as-multibyte (char-to-string ch)))
        string "")))))
--- a/lisp/gnus/mml.el	Fri Dec 19 01:50:43 2008 +0000
+++ b/lisp/gnus/mml.el	Fri Dec 19 02:40:25 2008 +0000
@@ -1289,7 +1289,9 @@
     (unless (message-in-body-p) (goto-char (point-max)))
     (mml-insert-empty-tag 'part
 			  'type type
-			  'filename file
+			  ;; icicles redefines read-file-name and returns a
+			  ;; string w/ text properties :-/
+			  'filename (mm-substring-no-properties file)
 			  'disposition (or disposition "attachment")
 			  'description description)))