Don't have ffap interpret ":/bin" as the current directory
* lisp/ffap.el (ffap-file-at-point): Don't interpret :/bin as the current directory (bug#52441).
This commit is contained in:
parent
19566fb51a
commit
f729c333c7
2 changed files with 22 additions and 4 deletions
11
lisp/ffap.el
11
lisp/ffap.el
|
@ -1449,10 +1449,13 @@ which may actually result in an URL rather than a filename."
|
|||
(ffap-file-exists-string (substring name 0 (match-beginning 0)))))
|
||||
;; If it contains a colon, get rid of it (and return if exists)
|
||||
((and (string-match path-separator name)
|
||||
(setq name (ffap-string-at-point 'nocolon))
|
||||
(> (length name) 0)
|
||||
(ffap-file-exists-string name)))
|
||||
;; File does not exist, try the alist:
|
||||
(let ((this-name (ffap-string-at-point 'nocolon)))
|
||||
;; But don't interpret the first part if ":/bin" as
|
||||
;; the empty string.
|
||||
(when (> (length this-name) 0)
|
||||
(setq name this-name)
|
||||
(ffap-file-exists-string name)))))
|
||||
;; File does not exist, try the alist:
|
||||
((let ((alist ffap-alist) tem try case-fold-search)
|
||||
(while (and alist (not try))
|
||||
(setq tem (car alist) alist (cdr alist))
|
||||
|
|
|
@ -141,6 +141,21 @@ left alone when opening a URL in an external browser."
|
|||
(let (kill-buffer-query-functions)
|
||||
(kill-buffer (call-interactively #'find-file-at-point)))))))
|
||||
|
||||
(ert-deftest ffap-test-path ()
|
||||
(with-temp-buffer
|
||||
(insert "/usr/bin:/bin")
|
||||
(goto-char (point-min))
|
||||
(should (equal (ffap-file-at-point) "/usr/bin")))
|
||||
(with-temp-buffer
|
||||
(insert "/usr/bin:/bin")
|
||||
(goto-char (point-min))
|
||||
(search-forward ":")
|
||||
(should (equal (ffap-file-at-point) "/bin")))
|
||||
(with-temp-buffer
|
||||
(insert ":/bin")
|
||||
(goto-char (point-min))
|
||||
(should (equal (ffap-file-at-point) nil))))
|
||||
|
||||
(provide 'ffap-tests)
|
||||
|
||||
;;; ffap-tests.el ends here
|
||||
|
|
Loading…
Add table
Reference in a new issue