[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r99480: (bookmark-handle-bookmark): C
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r99480: (bookmark-handle-bookmark): Catch the right error. |
Date: |
Wed, 10 Feb 2010 15:02:54 -0500 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 99480
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2010-02-10 15:02:54 -0500
message:
(bookmark-handle-bookmark): Catch the right error.
(bookmark-default-handler): Accept new bookmark field `buffer'.
modified:
lisp/ChangeLog
lisp/bookmark.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2010-02-10 17:31:49 +0000
+++ b/lisp/ChangeLog 2010-02-10 20:02:54 +0000
@@ -1,3 +1,8 @@
+2010-02-10 Thierry Volpiatto <address@hidden>
+
+ * bookmark.el (bookmark-handle-bookmark): Catch the right error.
+ (bookmark-default-handler): Accept new bookmark field `buffer'.
+
2010-02-10 Chong Yidong <address@hidden>
* iswitchb.el (iswitchb-completions): Revert last change.
=== modified file 'lisp/bookmark.el'
--- a/lisp/bookmark.el 2010-01-13 23:25:01 +0000
+++ b/lisp/bookmark.el 2010-02-10 20:02:54 +0000
@@ -1068,7 +1068,7 @@
(funcall (or (bookmark-get-handler bookmark)
'bookmark-default-handler)
(bookmark-get-bookmark bookmark))
- (file-error
+ (bookmark-error-no-filename ;file-error
;; We were unable to find the marked file, so ask if user wants to
;; relocate the bookmark, else remind them to consider deletion.
(when (stringp bookmark)
@@ -1116,24 +1116,28 @@
BMK-RECORD is a bookmark record, not a bookmark name (i.e., not a string).
Changes current buffer and point and returns nil, or signals a `file-error'."
(let ((file (bookmark-get-filename bmk-record))
+ (buf (bookmark-prop-get bmk-record 'buffer))
(forward-str (bookmark-get-front-context-string bmk-record))
(behind-str (bookmark-get-rear-context-string bmk-record))
(place (bookmark-get-position bmk-record)))
- (if (not file)
- (signal 'bookmark-error-no-filename (list 'stringp file))
- (set-buffer (find-file-noselect file))
- (if place (goto-char place))
- ;; Go searching forward first. Then, if forward-str exists and
- ;; was found in the file, we can search backward for behind-str.
- ;; Rationale is that if text was inserted between the two in the
- ;; file, it's better to be put before it so you can read it,
- ;; rather than after and remain perhaps unaware of the changes.
- (if forward-str
- (if (search-forward forward-str (point-max) t)
- (goto-char (match-beginning 0))))
- (if behind-str
- (if (search-backward behind-str (point-min) t)
- (goto-char (match-end 0)))))
+ (set-buffer
+ (cond
+ ((and file (file-readable-p file) (not (buffer-live-p buf)))
+ (find-file-noselect file))
+ ;; No file found. See if buffer BUF have been created.
+ ((and buf (get-buffer buf)))
+ (t ;; If not, raise error.
+ (signal 'bookmark-error-no-filename (list 'stringp file)))))
+ (if place (goto-char place))
+ ;; Go searching forward first. Then, if forward-str exists and
+ ;; was found in the file, we can search backward for behind-str.
+ ;; Rationale is that if text was inserted between the two in the
+ ;; file, it's better to be put before it so you can read it,
+ ;; rather than after and remain perhaps unaware of the changes.
+ (when (and forward-str (search-forward forward-str (point-max) t))
+ (goto-char (match-beginning 0)))
+ (when (and behind-str (search-backward behind-str (point-min) t))
+ (goto-char (match-end 0)))
nil))
;;;###autoload
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r99480: (bookmark-handle-bookmark): Catch the right error.,
Stefan Monnier <=