mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-17 17:58:46 +00:00
(make-auto-save-file-name): Encode more characters in
non-file buffer names. Use url-encoding.
This commit is contained in:
parent
6329325d6b
commit
ad80c67928
@ -4561,15 +4561,18 @@ See also `auto-save-file-name-p'."
|
||||
(let ((buffer-name (buffer-name))
|
||||
(limit 0)
|
||||
file-name)
|
||||
;; Eliminate all slashes and backslashes by
|
||||
;; replacing them with sequences that start with %.
|
||||
;; Quote % also, to keep distinct names distinct.
|
||||
(while (string-match "[/\\%]" buffer-name limit)
|
||||
;; Restrict the characters used in the file name to those which
|
||||
;; are known to be safe on all filesystems, url-encoding the
|
||||
;; rest.
|
||||
;; We do this on all platforms, because even if we are not
|
||||
;; running on DOS/Windows, the current directory may be on a
|
||||
;; mounted VFAT filesystem, such as a USB memory stick.
|
||||
(while (string-match "[^A-Za-z0-9-_.~#+]" buffer-name limit)
|
||||
(let* ((character (aref buffer-name (match-beginning 0)))
|
||||
(replacement
|
||||
(cond ((eq character ?%) "%%")
|
||||
((eq character ?/) "%+")
|
||||
((eq character ?\\) "%-"))))
|
||||
;; For multibyte characters, this will produce more than
|
||||
;; 2 hex digits, so is not true URL encoding.
|
||||
(format "%%%02X" character)))
|
||||
(setq buffer-name (replace-match replacement t t buffer-name))
|
||||
(setq limit (1+ (match-end 0)))))
|
||||
;; Generate the file name.
|
||||
|
Loading…
Reference in New Issue
Block a user