Mercurial > emacs
changeset 105448:b0226862b32c
* bookmark.el (bookmark-handle-bookmark): When relocating a bookmark,
don't use a file dialog, because they usually don't know how to read
a directory target from the user. (Bug#4230)
Also, make sure the prompt can display directories as well as files.
author | Karl Fogel <kfogel@red-bean.com> |
---|---|
date | Mon, 05 Oct 2009 02:38:35 +0000 |
parents | 257c9f6d8be8 |
children | 4d75e3e0f1ea |
files | lisp/ChangeLog lisp/bookmark.el |
diffstat | 2 files changed, 28 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Mon Oct 05 02:17:57 2009 +0000 +++ b/lisp/ChangeLog Mon Oct 05 02:38:35 2009 +0000 @@ -1,3 +1,10 @@ +2009-10-04 Karl Fogel <kfogel@red-bean.com> + + * bookmark.el (bookmark-handle-bookmark): When relocating a bookmark, + don't use a file dialog, because they usually don't know how to read + a directory target from the user. (Bug#4230) + Also, make sure the prompt can display directories as well as files. + 2009-10-04 Karl Fogel <kfogel@red-bean.com> * bookmark.el (bookmark-set, bookmark-buffer-name):
--- a/lisp/bookmark.el Mon Oct 05 02:17:57 2009 +0000 +++ b/lisp/bookmark.el Mon Oct 05 02:38:35 2009 +0000 @@ -1075,23 +1075,29 @@ ;; `bookmark' can either be a bookmark name (found in ;; `bookmark-alist') or a bookmark object. If it's an object, we ;; assume it's a bookmark used internally by some other package. - (let ((file (bookmark-get-filename bookmark))) + (let* ((file (bookmark-get-filename bookmark)) + ;; If file is not a directory, this should be a no-op. + (display-name (directory-file-name file))) (when file ;Don't know how to relocate if there's no `file'. - (setq file (expand-file-name file)) (ding) - (if (y-or-n-p (concat (file-name-nondirectory file) - " nonexistent. Relocate \"" - bookmark - "\"? ")) - (progn - (bookmark-relocate bookmark) - ;; Try again. - (funcall (or (bookmark-get-handler bookmark) - 'bookmark-default-handler) - (bookmark-get-bookmark bookmark))) - (message - "Bookmark not relocated; consider removing it \(%s\)." bookmark) - (signal (car err) (cdr err)))))))) + ;; Dialog boxes can accept a file target, but usually don't + ;; know how to accept a directory target (at least, this + ;; was true in Gnome on GNU/Linux, and Bug#4230 says it's + ;; true on Windows as well). Thus, suppress file dialogs + ;; when relocating. + (let ((use-dialog-box nil) + (use-file-dialog nil)) + (if (y-or-n-p (concat display-name " nonexistent. Relocate \"" + bookmark "\"? ")) + (progn + (bookmark-relocate bookmark) + ;; Try again. + (funcall (or (bookmark-get-handler bookmark) + 'bookmark-default-handler) + (bookmark-get-bookmark bookmark))) + (message + "Bookmark not relocated; consider removing it \(%s\)." bookmark) + (signal (car err) (cdr err))))))))) ;; Added by db. (when (stringp bookmark) (setq bookmark-current-bookmark bookmark))