summaryrefslogtreecommitdiff
path: root/lisp/dos-w32.el
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2009-01-17 12:35:50 +0000
committerEli Zaretskii <eliz@gnu.org>2009-01-17 12:35:50 +0000
commit5a4122e2bf1b05200332cb0e2d1b34ddaddd43e1 (patch)
tree6b6971e303f7ca7174377fb2fd2670f7e21f0eaf /lisp/dos-w32.el
parentfc47d8a7c9f0362e9c922ef0806d6e1103a8563e (diff)
downloademacs-5a4122e2bf1b05200332cb0e2d1b34ddaddd43e1.tar.gz
emacs-5a4122e2bf1b05200332cb0e2d1b34ddaddd43e1.tar.bz2
emacs-5a4122e2bf1b05200332cb0e2d1b34ddaddd43e1.zip
(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.el22
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)