1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

Make file-name-split returns driver name as well in Windows

* lisp/files.el (file-name-split): Returns driver name as well in
Windows.
* lisp/net/browse-url.el (browse-url-file-url): Don't hexify colon
character in file path for Windows (bug#54721).
This commit is contained in:
Kien Nguyen 2022-04-06 11:58:02 +02:00 committed by Lars Ingebrigtsen
parent e32dcc7527
commit 7eca680e54
2 changed files with 17 additions and 4 deletions

View file

@ -5091,7 +5091,11 @@ On most systems, this will be true:
;; If there's nothing left to peel off, we're at the root and ;; If there's nothing left to peel off, we're at the root and
;; we can stop. ;; we can stop.
(when (and dir (equal dir filename)) (when (and dir (equal dir filename))
(push "" components) (push (if (equal dir "") ""
;; On Windows, the first component might be "c:" or
;; the like.
(substring dir 0 -1))
components)
(setq filename nil)))) (setq filename nil))))
components)) components))

View file

@ -728,9 +728,18 @@ Use variable `browse-url-filename-alist' to map filenames to URLs."
browse-url-filename-alist)) browse-url-filename-alist))
(setq file (browse-url-url-encode-chars file "[*\"()',=;?% ]")) (setq file (browse-url-url-encode-chars file "[*\"()',=;?% ]"))
;; Encode all other file names properly. ;; Encode all other file names properly.
(setq file (mapconcat #'url-hexify-string (let ((bits (file-name-split file)))
(file-name-split file) (setq file
"/"))) (string-join
;; On Windows, the first bit here might be "c:" or the
;; like, so don't encode the ":" in the first bit.
(cons (let ((url-unreserved-chars
(if (file-name-absolute-p file)
(cons ?: url-unreserved-chars)
url-unreserved-chars)))
(url-hexify-string (car bits)))
(mapcar #'url-hexify-string (cdr bits)))
"/"))))
(dolist (map browse-url-filename-alist) (dolist (map browse-url-filename-alist)
(when (and map (string-match (car map) file)) (when (and map (string-match (car map) file))
(setq file (replace-match (cdr map) t nil file)))) (setq file (replace-match (cdr map) t nil file))))