(if (fboundp 'coding-system-p)
(when (coding-system-p cs)
cs)
- ;; Is this branch ever actually useful?
+ ;; no-MULE XEmacs:
(car (memq cs (mm-get-coding-system-list))))))
(defun mm-codepage-setup (number &optional alias)
`((iso-8859-1 . windows-1252))
"A mapping from undesired charset names to their replacement.
-You may add pair like (iso-8859-1 . windows-1252) here,
+You may add pairs like (iso-8859-1 . windows-1252) here,
i.e. treat iso-8859-1 as windows-1252. windows-1252 is a
superset of iso-8859-1."
:type '(list (set :inline t
cs mime mule alist)
(while css
(setq cs (pop css)
- mime (or (coding-system-get cs :mime-charset) ; Emacs 22
+ mime (or (coding-system-get cs :mime-charset) ; Emacs 23 (unicode)
(coding-system-get cs 'mime-charset)))
(when (and mime
(not (eq t (setq mule
(defmacro mm-with-unibyte-current-buffer (&rest forms)
"Evaluate FORMS with current buffer temporarily made unibyte.
Also bind `default-enable-multibyte-characters' to nil.
-Equivalent to `progn' in XEmacs"
+Equivalent to `progn' in XEmacs
+
+NOTE: Use this macro with caution in multibyte buffers (it is not
+worth using this macro in unibyte buffers of course). Use of
+`(set-buffer-multibyte t)', which is run finally, is generally
+harmful since it is likely to modify existing data in the buffer.
+For instance, it converts \"\\300\\255\" into \"\\255\" in
+Emacs 23 (unicode)."
(let ((multibyte (make-symbol "multibyte"))
(buffer (make-symbol "buffer")))
`(if mm-emacs-mule
- (let ((,multibyte enable-multibyte-characters)
+ (let ((,multibyte enable-multibyte-characters)
(,buffer (current-buffer)))
(unwind-protect
(let (default-enable-multibyte-characters)
;; loosen them later, whereas it's impossible to close the
;; time-window of loose permissions otherwise.
(set-default-file-modes 448)
- (while (condition-case ()
+ (while (condition-case err
(progn
(setq file
(make-temp-name
(if dir-flag
(make-directory file)
(if (featurep 'xemacs)
- ;; NOTE: This is unsafe if an XEmacs user
- ;; doesn't use a secure temp directory.
+ ;; NOTE: This is unsafe if XEmacs users
+ ;; don't use a secure temp directory.
(if (file-exists-p file)
(signal 'file-already-exists
(list "File exists" file))
nil 'excl)))
nil)
(file-already-exists t)
- ;; The XEmacs version of `make-directory' issues it.
- (file-error t))
+ ;; The XEmacs version of `make-directory' issues
+ ;; `file-error'.
+ (file-error (or (and (featurep 'xemacs)
+ (file-exists-p file))
+ (signal (car err) (cdr err)))))
;; the file was somehow created by someone else between
;; `make-temp-name' and `write-region', let's try again.
nil)