(Info-directory-list): If path-separator isn't available, bind it here.
[bpt/emacs.git] / lisp / files.el
index 58efd80..fd5268a 100644 (file)
@@ -130,7 +130,16 @@ If the buffer is visiting a new file, the value is nil.")
 
 (defconst file-precious-flag nil
   "*Non-nil means protect against I/O errors while saving files.
-Some modes set this non-nil in particular buffers.")
+Some modes set this non-nil in particular buffers.
+
+This feature works by writing the new contents into a temporary file
+and then renaming the temporary file to replace the original.
+In this way, any I/O error in writing leaves the original untouched,
+and there is never any instant where the file is nonexistent.
+
+Note that this feature forces backups to be made by copying.
+Yet, at the same time, saving a precious file
+breaks any hard links between it and other files.")
 
 (defvar version-control nil
   "*Control use of version numbers for backup files.
@@ -346,7 +355,9 @@ Do not specify them in other calls."
   ;; to chase before getting an error.
   ;; PREV-DIRS can be a cons cell whose car is an alist
   ;; of truenames we've just recently computed.
-  (if (or (string= filename "~")
+
+  ;; The last test looks dubious, maybe `+' is meant here?  --simon.
+  (if (or (string= filename "") (string= filename "~")
          (and (string= (substring filename 0 1) "~")
               (string-match "~[^/]*" filename)))
       (progn
@@ -1077,9 +1088,12 @@ If `enable-local-variables' is nil, this function does not check for a
               (or (looking-at "[ \t]*\\([^ \t\n:]+\\)[ \t]*:[ \t]*")
                   (error "malformed -*- line"))
               (goto-char (match-end 0))
-              (let ((key (intern (downcase (buffer-substring
-                                            (match-beginning 1)
-                                            (match-end 1)))))
+              ;; There used to be a downcase here,
+              ;; but the manual didn't say so,
+              ;; and people want to set var names that aren't all lc.
+              (let ((key (intern (buffer-substring
+                                  (match-beginning 1)
+                                  (match-end 1))))
                     (val (save-restriction
                            (narrow-to-region (point) end)
                            (read (current-buffer)))))