:type 'boolean
:group 'find-file)
-(defcustom find-file-revert-without-query
+(defcustom revert-without-query
nil
"*Specify which files should be reverted without query.
The value is a list of regular expressions.
If the file name matches one of these regular expressions,
-then `find-file' reverts the file without querying
+then `revert-buffer' reverts the file without querying
if the file has changed on disk and you have not edited the buffer."
:type 'boolean
:group 'find-file)
Not actually set up until the first time you you use it.")
(defvar path-separator ":"
- "Character used to separate concatenated paths.")
+ "Character used to separate directories in search paths.")
(defun parse-colon-path (cd-path)
- "Explode a colon-separated list of paths into a string list."
+ "Explode a colon-separated search path into a list of directory names."
(and cd-path
(let (cd-prefix cd-list (cd-start 0) cd-colon)
(setq cd-path (concat cd-path path-separator))
;; Certain files should be reverted automatically
;; if they have changed on disk and not in the buffer.
((and (not (buffer-modified-p buf))
- (let ((tail find-file-revert-without-query)
+ (let ((tail revert-without-query)
(found nil))
(while tail
(if (string-match (car tail) filename)
You may need to redefine `file-name-sans-versions' as well."
(string-match "~\\'" file))
+(defvar backup-extract-version-start)
+
;; This is used in various files.
;; The usage of bv-length is not very clean,
;; but I can't see a good alternative,
;; so as of now I am leaving it alone.
(defun backup-extract-version (fn)
"Given the name of a numeric backup file, return the backup number.
-Uses the free variable `bv-length', whose value should be
+Uses the free variable `backup-extract-version-start', whose value should be
the index in the name where the version number begins."
- (if (and (string-match "[0-9]+~$" fn bv-length)
- (= (match-beginning 0) bv-length))
- (string-to-int (substring fn bv-length -1))
+ (if (and (string-match "[0-9]+~$" fn backup-extract-version-start)
+ (= (match-beginning 0) backup-extract-version-start))
+ (string-to-int (substring fn backup-extract-version-start -1))
0))
;; I believe there is no need to alter this behavior for VMS;
(if (eq version-control 'never)
(list (make-backup-file-name fn))
(let* ((base-versions (concat (file-name-nondirectory fn) ".~"))
- (bv-length (length base-versions))
+ (backup-extract-version-start (length base-versions))
possibilities
(versions nil)
(high-water-mark 0)
when the file name and directory use different drive names)
then it returns FILENAME."
(save-match-data
- (setq fname (expand-file-name filename)
- directory (file-name-as-directory
- (expand-file-name (or directory default-directory))))
- ;; On Microsoft OSes, if FILENAME and DIRECTORY have different
- ;; drive names, they can't be relative, so return the absolute name.
- (if (and (or (eq system-type 'ms-dos)
- (eq system-type 'windows-nt))
- (not (string-equal (substring fname 0 2)
- (substring directory 0 2))))
- filename
- (let ((ancestor ""))
- (while (not (string-match (concat "^" (regexp-quote directory)) fname))
- (setq directory (file-name-directory (substring directory 0 -1))
- ancestor (concat "../" ancestor)))
- (concat ancestor (substring fname (match-end 0)))))))
+ (let ((fname (expand-file-name filename)))
+ (setq directory (file-name-as-directory
+ (expand-file-name (or directory default-directory))))
+ ;; On Microsoft OSes, if FILENAME and DIRECTORY have different
+ ;; drive names, they can't be relative, so return the absolute name.
+ (if (and (or (eq system-type 'ms-dos)
+ (eq system-type 'windows-nt))
+ (not (string-equal (substring fname 0 2)
+ (substring directory 0 2))))
+ filename
+ (let ((ancestor ""))
+ (while (not (string-match (concat "^" (regexp-quote directory)) fname))
+ (setq directory (file-name-directory (substring directory 0 -1))
+ ancestor (concat "../" ancestor)))
+ (concat ancestor (substring fname (match-end 0))))))))
\f
(defun save-buffer (&optional args)
"Save current buffer in visited file if modified. Versions described below.
(cond ((null file-name)
(error "Buffer does not seem to be associated with any file"))
((or noconfirm
+ (and (not (buffer-modified-p))
+ (let ((tail revert-without-query)
+ (found nil))
+ (while tail
+ (if (string-match (car tail) file-name)
+ (setq found t))
+ (setq tail (cdr tail)))
+ found))
(yes-or-no-p (format "Revert buffer from file %s? "
file-name)))
(run-hooks 'before-revert-hook)