diff options
Diffstat (limited to 'lisp/bookmark.el')
-rw-r--r-- | lisp/bookmark.el | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/lisp/bookmark.el b/lisp/bookmark.el index 53939f92ca6..c3bab39ba3d 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -1072,19 +1072,18 @@ of the old one in the permanent bookmark record." (defun bookmark-file-or-variation-thereof (file) - "Return FILE (a string) if it exists in any reasonable variation, else nil. -Reasonable variations are FILE.gz, FILE.Z, FILE.info, FILE.info.gz, etc." - (cond - ((file-exists-p file) file) - ((file-exists-p (concat file ".Z")) (concat file ".Z")) - ((file-exists-p (concat file ".gz")) (concat file ".gz")) - ((file-exists-p (concat file ".z")) (concat file ".z")) - ((file-exists-p (concat file ".info")) (concat file ".info")) - ((file-exists-p (concat file ".info.gz")) (concat file ".info.gz")) - ((file-exists-p (concat file ".info.Z")) (concat file ".info.Z")) - ((file-exists-p (concat file ".info.z")) (concat file ".info.z")) - ((vc-backend file) file) ; maybe VC has it? - (t nil))) + "Return FILE if it exists, or return the first variation based on +`Info-suffix-list' that exists, else return nil." + (if (file-exists-p file) + file + (require 'info) ; ensure Info-suffix-list is bound + (catch 'found + (mapc (lambda (elt) + (let ((suffixed-file (concat file (car elt)))) + (if (file-exists-p suffixed-file) + (throw 'found suffixed-file)))) + Info-suffix-list) + nil))) (defun bookmark-jump-noselect (str) |