diff options
author | Eli Zaretskii <eliz@gnu.org> | 2009-01-17 12:34:09 +0000 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2009-01-17 12:34:09 +0000 |
commit | 7618219d8b9c90b5b50c5b16e502f4fc879a0540 (patch) | |
tree | de55872459ef35b3bca7d452dcf3673ae7ab4812 /lisp/dos-w32.el | |
parent | dd5c15e222260665c4d6f3f5c1409a819e962f2c (diff) | |
download | emacs-7618219d8b9c90b5b50c5b16e502f4fc879a0540.tar.gz |
(find-buffer-file-type-coding-system): If `(car target)' does not exist as a
file, try again with its basename replaced by `(cdr target)'. Fixes Bug #1853.
Diffstat (limited to 'lisp/dos-w32.el')
-rw-r--r-- | lisp/dos-w32.el | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el index 9e9c386d205..ae6ed5dc366 100644 --- a/lisp/dos-w32.el +++ b/lisp/dos-w32.el @@ -129,9 +129,9 @@ set to the appropriate coding system, and the value of `buffer-file-coding-system' will be used when writing the file." (let ((op (nth 0 command)) - (target) (binary nil) (text nil) - (undecided nil) (undecided-unix nil)) + (undecided nil) (undecided-unix nil) + target target-buf) (cond ((eq op 'insert-file-contents) (setq target (nth 1 command)) ;; If TARGET is a cons cell, it has the form (FILENAME . BUFFER), @@ -140,7 +140,11 @@ set to the appropriate coding system, and the value of ;; arguments is used, e.g., in arc-mode.el.) This function ;; doesn't care about the contents, it only looks at the file's ;; name, which is the CAR of the cons cell. - (if (consp target) (setq target (car target))) + (when (consp target) + (setq target-buf + (and (bufferp (cdr target)) + (buffer-name (cdr target)))) + (setq target (car target))) ;; First check for a file name that indicates ;; it is truly binary. (setq binary (find-buffer-file-type target)) @@ -149,7 +153,17 @@ set to the appropriate coding system, and the value of ((find-buffer-file-type-match target) (setq text t)) ;; For any other existing file, decide based on contents. - ((file-exists-p target) + ((or + (file-exists-p target) + ;; If TARGET does not exist as a file, replace its + ;; base name with TARGET-BUF and try again. This + ;; is for jka-compr's sake, which strips the + ;; compression (.gz etc.) extension from the + ;; FILENAME, but leaves it in the BUFFER's name. + (and (stringp target-buf) + (file-exists-p + (expand-file-name target-buf + (file-name-directory target))))) (setq undecided t)) ;; Next check for a non-DOS file system. ((untranslated-file-p target) |