Don't use unsafe encoding for the bookmark file
* lisp/bookmark.el (bookmark-write-file): Handle the case when the explicitly specified encoding of the bookmark file cannot encode the additional bookmarks just added. (Bug#25365)
This commit is contained in:
parent
ef8c9f8fc9
commit
560a384038
1 changed files with 8 additions and 1 deletions
|
@ -1432,13 +1432,20 @@ for a file, defaulting to the file defined by variable
|
|||
;; arbitrary Lisp objects being stored in bookmark records,
|
||||
;; and some users create objects containing circularities.
|
||||
(print-circle t))
|
||||
(bookmark-insert-file-format-version-stamp coding-system-for-write)
|
||||
(insert "(")
|
||||
;; Rather than a single call to `pp' we make one per bookmark.
|
||||
;; Apparently `pp' has a poor algorithmic complexity, so this
|
||||
;; scales a lot better. bug#4485.
|
||||
(dolist (i bookmark-alist) (pp i (current-buffer)))
|
||||
(insert ")")
|
||||
;; Make sure the specified encoding can safely encode the
|
||||
;; bookmarks. If it cannot, suggest utf-8-emacs as default.
|
||||
(with-coding-priority '(utf-8-emacs)
|
||||
(setq coding-system-for-write
|
||||
(select-safe-coding-system (point-min) (point-max)
|
||||
(list t coding-system-for-write))))
|
||||
(goto-char (point-min))
|
||||
(bookmark-insert-file-format-version-stamp coding-system-for-write)
|
||||
(let ((version-control
|
||||
(cond
|
||||
((null bookmark-version-control) nil)
|
||||
|
|
Loading…
Add table
Reference in a new issue