]> code.delx.au - gnu-emacs/blobdiff - lisp/dos-w32.el
* net/tramp.el (tramp-ssh-controlmaster-template): Make it a
[gnu-emacs] / lisp / dos-w32.el
index f68af7a73bed18fc819171dc17ae3cc2c166f1e4..d6788ffe028745ad6577bb27a0b92b79f853b5b5 100644 (file)
@@ -1,6 +1,6 @@
 ;; dos-w32.el --- Functions shared among MS-DOS and W32 (NT/95) platforms
 
-;; Copyright (C) 1996, 2001-2012 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2001-2013 Free Software Foundation, Inc.
 
 ;; Maintainer: Geoff Voelker <voelker@cs.washington.edu>
 ;; Keywords: internal
@@ -37,7 +37,7 @@
 ;; Set the null device (for compile.el).
 (setq null-device "NUL")
 
-;; For distinguishing file types based upon suffixes.
+;; For distinguishing file types based upon suffixes.  DEPRECATED, DO NOT USE!
 (defcustom file-name-buffer-file-type-alist
   '(("[:/].*config.sys$" . nil)                ; config.sys text
     ("\\.\\(obj\\|exe\\|com\\|lib\\|sys\\|bin\\|ico\\|pif\\|class\\)$" . t)
     ("\\.tp[ulpw]$" . t)               ; borland Pascal stuff
     ("[:/]tags$" . nil)                        ; emacs TAGS file
     )
-  "Alist for distinguishing text files from binary files.
+  "Alist used in the past for distinguishing text files from binary files.
 Each element has the form (REGEXP . TYPE), where REGEXP is matched
-against the file name, and TYPE is nil for text, t for binary."
+against the file name, and TYPE is nil for text, t for binary.
+
+This variable is deprecated, not used anywhere, and will soon be deleted."
   :type '(repeat (cons regexp boolean))
   :group 'dos-fns
   :group 'w32)
 
-;; Return the pair matching filename on file-name-buffer-file-type-alist,
-;; or nil otherwise.
-(defun find-buffer-file-type-match (filename)
-  (let ((alist file-name-buffer-file-type-alist)
-       (found nil))
-    (let ((case-fold-search t))
-      (setq filename (file-name-sans-versions filename))
-      (while (and (not found) alist)
-       (if (string-match (car (car alist)) filename)
-           (setq found (car alist)))
-       (setq alist (cdr alist)))
-      found)))
-
-;; Don't check for untranslated file systems here.
-(defun find-buffer-file-type (filename)
-  (let ((match (find-buffer-file-type-match filename))
-       (code))
-    (if (not match)
-       (default-value 'buffer-file-type)
-      (setq code (cdr match))
-      (cond ((memq code '(nil t)) code)
-           ((and (symbolp code) (fboundp code))
-            (funcall code filename))))))
+(make-obsolete-variable 'file-name-buffer-file-type-alist
+                       'file-coding-system-alist
+                       "24.4")
 
 (setq-default buffer-file-coding-system 'undecided-dos)
 
@@ -99,9 +81,6 @@ and whether the file exists:
   If it matches in `untranslated-filesystem-list':
     If the file exists:                                        `undecided'
     If the file does not exist:                                `undecided-unix'
-  If it matches in `file-name-buffer-file-type-alist':
-    If the match is t (for binary):                    `no-conversion'
-    If the match is nil (for dos-text):                        `undecided-dos'
   Otherwise:
     If the file exists:                                        `undecided'
     If the file does not exist   default value of `buffer-file-coding-system'
@@ -110,25 +89,23 @@ Note that the CAR of arguments to `insert-file-contents' operation could
 be a cons cell of the form \(FILENAME . BUFFER\), where BUFFER is a buffer
 into which the file's contents were already read, but not yet decoded.
 
-If operation is `write-region', the coding system is chosen based upon
-the value of `buffer-file-coding-system' and `buffer-file-type'. If
-`buffer-file-coding-system' is non-nil, its value is used.  If it is
-nil and `buffer-file-type' is t, the coding system is `no-conversion'.
+If operation is `write-region', the coding system is chosen based
+upon the value of `buffer-file-coding-system'.  If
+`buffer-file-coding-system' is non-nil, its value is used.
 Otherwise, it is `undecided-dos'.
 
-The two most common situations are when DOS and Unix files are read
-and written, and their names do not match in
-`untranslated-filesystem-list' and `file-name-buffer-file-type-alist'.
-In these cases, the coding system initially will be `undecided'.  As
-the file is read in the DOS case, the coding system will be changed to
-`undecided-dos' as CR/LFs are detected.  As the file is read in the
-Unix case, the coding system will be changed to `undecided-unix' as
-LFs are detected.  In both cases, `buffer-file-coding-system' will be
-set to the appropriate coding system, and the value of
-`buffer-file-coding-system' will be used when writing the file."
+The most common situation is when DOS and Unix files are read and
+written, and their names do not match in `untranslated-filesystem-list'.
+In these cases, the coding system initially will be `undecided'.
+As the file is read in the DOS case, the coding system will be
+changed to `undecided-dos' as CR/LFs are detected.  As the file
+is read in the Unix case, the coding system will be changed to
+`undecided-unix' as LFs are detected.  In both cases,
+`buffer-file-coding-system' will be 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))
-       (binary nil) (text nil)
        (undecided nil) (undecided-unix nil)
        target target-buf)
     (cond ((eq op 'insert-file-contents)
@@ -144,15 +121,8 @@ set to the appropriate coding system, and the value of
                   (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))
-          (cond (binary)
-                ;; Next check for files that MUST use DOS eol conversion.
-                ((find-buffer-file-type-match target)
-                 (setq text t))
-                ;; For any other existing file, decide based on contents.
-                ((or
+          (cond ((or
+                  ;; For any existing file, decide based on contents.
                   (file-exists-p target)
                   ;; If TARGET does not exist as a file, replace its
                   ;; base name with TARGET-BUF and try again.  This
@@ -167,9 +137,7 @@ set to the appropriate coding system, and the value of
                 ;; Next check for a non-DOS file system.
                 ((untranslated-file-p target)
                  (setq undecided-unix t)))
-          (cond (binary '(no-conversion . no-conversion))
-                (text '(undecided-dos . undecided-dos))
-                (undecided-unix '(undecided-unix . undecided-unix))
+          (cond (undecided-unix '(undecided-unix . undecided-unix))
                 (undecided '(undecided . undecided))
                 (t (cons (default-value 'buffer-file-coding-system)
                          (default-value 'buffer-file-coding-system)))))
@@ -180,22 +148,18 @@ set to the appropriate coding system, and the value of
             ;; Normally this is used only in a non-file-visiting
             ;; buffer, because normally buffer-file-coding-system is non-nil
             ;; in a file-visiting buffer.
-            (if buffer-file-type
-                '(no-conversion . no-conversion)
-              '(undecided-dos . undecided-dos)))))))
-
-(modify-coding-system-alist 'file "" 'find-buffer-file-type-coding-system)
+            '(undecided-dos . undecided-dos))))))
 
 (defun find-file-binary (filename)
   "Visit file FILENAME and treat it as binary."
   (interactive "FFind file binary: ")
-  (let ((file-name-buffer-file-type-alist '(("" . t))))
+  (let ((coding-system-for-read 'no-conversion))
     (find-file filename)))
 
 (defun find-file-text (filename)
   "Visit file FILENAME and treat it as a text file."
   (interactive "FFind file text: ")
-  (let ((file-name-buffer-file-type-alist '(("" . nil))))
+  (let ((coding-system-for-read 'undecided-dos))
     (find-file filename)))
 
 (defun find-file-not-found-set-buffer-file-coding-system ()
@@ -210,7 +174,7 @@ set to the appropriate coding system, and the value of
                     (untranslated-file-p (buffer-file-name))))
        (setq coding (coding-system-change-eol-conversion coding 0))
        (setq buffer-file-coding-system coding))
-      (setq buffer-file-type (eq buffer-file-coding-system 'no-conversion)))))
+      nil)))
 
 ;;; To set the default coding system on new files.
 (add-hook 'find-file-not-found-functions
@@ -361,7 +325,7 @@ filesystem mounted on drive Z:, FILESYSTEM could be \"Z:\"."
          (apply 'call-process lpr-prog nil errbuf nil rest))
         ;; Run command.com to access printer port on Windows 9x, unless
         ;; we are supposed to append to an existing (non-empty) file,
-        ;; to work around a bug in Windows 9x that prevents Win32
+        ;; to work around a bug in Windows 9x that prevents Windows
         ;; programs from accessing LPT ports reliably.
         ((and (eq system-type 'windows-nt)
               (getenv "winbootdir")