Commit e2b30772 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(backup-extract-version-start): New variable.

(find-backup-file-namem, backup-extract-version):
Rename bv-length to backup-extract-version-start.

(file-relative-name): Bind the variable fname.
parent afbd0a53
...@@ -1904,17 +1904,19 @@ This is a separate function so you can redefine it for customization. ...@@ -1904,17 +1904,19 @@ This is a separate function so you can redefine it for customization.
You may need to redefine `file-name-sans-versions' as well." You may need to redefine `file-name-sans-versions' as well."
(string-match "~\\'" file)) (string-match "~\\'" file))
(defvar backup-extract-version-start)
;; This is used in various files. ;; This is used in various files.
;; The usage of bv-length is not very clean, ;; The usage of bv-length is not very clean,
;; but I can't see a good alternative, ;; but I can't see a good alternative,
;; so as of now I am leaving it alone. ;; so as of now I am leaving it alone.
(defun backup-extract-version (fn) (defun backup-extract-version (fn)
"Given the name of a numeric backup file, return the backup number. "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." the index in the name where the version number begins."
(if (and (string-match "[0-9]+~$" fn bv-length) (if (and (string-match "[0-9]+~$" fn backup-extract-version-start)
(= (match-beginning 0) bv-length)) (= (match-beginning 0) backup-extract-version-start))
(string-to-int (substring fn bv-length -1)) (string-to-int (substring fn backup-extract-version-start -1))
0)) 0))
;; I believe there is no need to alter this behavior for VMS; ;; I believe there is no need to alter this behavior for VMS;
...@@ -1931,7 +1933,7 @@ If the value is nil, don't make a backup." ...@@ -1931,7 +1933,7 @@ If the value is nil, don't make a backup."
(if (eq version-control 'never) (if (eq version-control 'never)
(list (make-backup-file-name fn)) (list (make-backup-file-name fn))
(let* ((base-versions (concat (file-name-nondirectory fn) ".~")) (let* ((base-versions (concat (file-name-nondirectory fn) ".~"))
(bv-length (length base-versions)) (backup-extract-version-start (length base-versions))
possibilities possibilities
(versions nil) (versions nil)
(high-water-mark 0) (high-water-mark 0)
...@@ -1977,21 +1979,21 @@ If this is impossible (which can happen on MSDOS and Windows ...@@ -1977,21 +1979,21 @@ If this is impossible (which can happen on MSDOS and Windows
when the file name and directory use different drive names) when the file name and directory use different drive names)
then it returns FILENAME." then it returns FILENAME."
(save-match-data (save-match-data
(setq fname (expand-file-name filename) (let ((fname (expand-file-name filename)))
directory (file-name-as-directory (setq directory (file-name-as-directory
(expand-file-name (or directory default-directory)))) (expand-file-name (or directory default-directory))))
;; On Microsoft OSes, if FILENAME and DIRECTORY have different ;; On Microsoft OSes, if FILENAME and DIRECTORY have different
;; drive names, they can't be relative, so return the absolute name. ;; drive names, they can't be relative, so return the absolute name.
(if (and (or (eq system-type 'ms-dos) (if (and (or (eq system-type 'ms-dos)
(eq system-type 'windows-nt)) (eq system-type 'windows-nt))
(not (string-equal (substring fname 0 2) (not (string-equal (substring fname 0 2)
(substring directory 0 2)))) (substring directory 0 2))))
filename filename
(let ((ancestor "")) (let ((ancestor ""))
(while (not (string-match (concat "^" (regexp-quote directory)) fname)) (while (not (string-match (concat "^" (regexp-quote directory)) fname))
(setq directory (file-name-directory (substring directory 0 -1)) (setq directory (file-name-directory (substring directory 0 -1))
ancestor (concat "../" ancestor))) ancestor (concat "../" ancestor)))
(concat ancestor (substring fname (match-end 0))))))) (concat ancestor (substring fname (match-end 0))))))))
(defun save-buffer (&optional args) (defun save-buffer (&optional args)
"Save current buffer in visited file if modified. Versions described below. "Save current buffer in visited file if modified. Versions described below.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment