whose calling discipline HANDLER-FUNC should of course match.")
-(defvar bookmarks-already-loaded nil)
+(defvar bookmarks-already-loaded nil
+ "Non-nil iff bookmarks have been loaded from `bookmark-default-file'.")
;; more stuff added by db.
"Length of the context strings recorded on either side of a bookmark.")
-(defvar bookmark-current-point 0)
-(defvar bookmark-yank-point 0)
-(defvar bookmark-current-buffer nil)
+(defvar bookmark-current-buffer nil
+ "The buffer in which a bookmark is currently being set or renamed.
+Functions that insert strings into the minibuffer use this to know
+the source buffer for that information; see `bookmark-yank-word' and
+`bookmark-insert-current-bookmark' for example.")
+
+
+(defvar bookmark-yank-point 0
+ "The next point from which to pull source text for `bookmark-yank-word'.
+This point is in `bookmark-curent-buffer'.")
+
-(defvar Info-suffix-list)
\f
;; Helper functions.
(bookmark-maybe-load-default-file)
- (setq bookmark-current-point (point))
(setq bookmark-yank-point (point))
(setq bookmark-current-buffer (current-buffer))
(bookmark-store str (cdr record) no-overwrite)
;; Ask for an annotation buffer for this bookmark
- (if bookmark-use-annotations
- (bookmark-edit-annotation str)
- (goto-char bookmark-current-point)))))
+ (when bookmark-use-annotations
+ (bookmark-edit-annotation str)))))
(defun bookmark-kill-line (&optional newline-too)
"Kill from point to end of line.
(let ((annotation (buffer-substring-no-properties (point-min) (point-max)))
(bookmark bookmark-annotation-name))
(bookmark-set-annotation bookmark annotation)
- (bookmark-bmenu-surreptitiously-rebuild-list)
- (goto-char bookmark-current-point))
+ (bookmark-bmenu-surreptitiously-rebuild-list))
(kill-buffer (current-buffer)))
(defun bookmark-insert-current-bookmark ()
- "Insert this buffer's value of `bookmark-current-bookmark'.
-Default to file name if it's nil."
+ "Insert into the bookmark name currently being set the value of
+`bookmark-current-bookmark' in `bookmark-current-buffer', defaulting
+to the buffer's file name if `bookmark-current-bookmark' is nil."
(interactive)
(let ((str
(with-current-buffer bookmark-current-buffer
(defun bookmark-yank-word ()
- "Get the next word from the buffer and append it to the name of the
-bookmark currently being set, advancing point by one word."
+ "Get the next word from buffer `bookmark-current-buffer' and append
+it to the name of the bookmark currently being set, advancing
+`bookmark-yank-point' by one word."
(interactive)
(let ((string (with-current-buffer bookmark-current-buffer
(goto-char bookmark-yank-point)
;;;###autoload
-(defun bookmark-jump (bookmark)
+(defun bookmark-jump (bookmark &optional display-func)
"Jump to bookmark BOOKMARK (a point in some file).
You may have a problem using this function if the value of variable
`bookmark-alist' is nil. If that happens, you need to load in some
of the old one in the permanent bookmark record.
BOOKMARK may be a bookmark name (a string) or a bookmark record, but
-the latter is usually only used by programmatic callers."
+the latter is usually only used by programmatic callers.
+
+If DISPLAY-FUNC is non-nil, it is a function to invoke to display the
+bookmark. It defaults to `switch-to-buffer'; a typical other value
+would be, e.g., `switch-to-buffer-other-window'."
(interactive
(list (bookmark-completing-read "Jump to bookmark"
bookmark-current-bookmark)))
(unless bookmark
(error "No bookmark specified"))
(bookmark-maybe-historicize-string bookmark)
- (bookmark--jump-via bookmark 'switch-to-buffer))
+ (bookmark--jump-via bookmark (or display-func 'switch-to-buffer)))
;;;###autoload
(defun bookmark-jump-other-window (bookmark)
"Jump to BOOKMARK in another window. See `bookmark-jump' for more."
(interactive
- (let ((bkm (bookmark-completing-read "Jump to bookmark (in another window)"
- bookmark-current-bookmark)))
- (if (> emacs-major-version 21)
- (list bkm) bkm)))
- (when bookmark
- (bookmark-maybe-historicize-string bookmark)
- (bookmark--jump-via bookmark 'switch-to-buffer-other-window)))
+ (list (bookmark-completing-read "Jump to bookmark (in another window)"
+ bookmark-current-bookmark)))
+ (bookmark-jump bookmark 'switch-to-buffer-other-window))
(defun bookmark-jump-noselect (bookmark)
(bookmark-maybe-historicize-string old)
(bookmark-maybe-load-default-file)
- (setq bookmark-current-point (point))
(setq bookmark-yank-point (point))
(setq bookmark-current-buffer (current-buffer))
(let ((newname
;; occurrence has been deleted
(or (bookmark-get-bookmark bookmark-current-bookmark 'noerror)
(setq bookmark-current-bookmark nil)))
- ;; Don't rebuild the list
- (if batch
- nil
- (bookmark-bmenu-surreptitiously-rebuild-list)
- (setq bookmark-alist-modification-count
- (1+ bookmark-alist-modification-count))
- (if (bookmark-time-to-save-p)
- (bookmark-save))))
+ (unless batch
+ (bookmark-bmenu-surreptitiously-rebuild-list))
+ (setq bookmark-alist-modification-count
+ (1+ bookmark-alist-modification-count))
+ (when (bookmark-time-to-save-p)
+ (bookmark-save)))
(defun bookmark-time-to-save-p (&optional final-time)
(forward-char o-col))
(goto-char o-point))
(beginning-of-line)
- (setq bookmark-alist-modification-count
- (1+ bookmark-alist-modification-count))
- (if (bookmark-time-to-save-p)
- (bookmark-save))
(message "Deleting bookmarks...done")
))
(let ((bmrk (bookmark-bmenu-bookmark))
(thispoint (point)))
(bookmark-rename bmrk)
- (bookmark-bmenu-list)
(goto-char thispoint))))
;;;###autoload
(defvar menu-bar-bookmark-map
(let ((map (make-sparse-keymap "Bookmark functions")))
- (define-key map [load] '("Load a Bookmark File..." . bookmark-load))
- (define-key map [write] '("Save Bookmarks As..." . bookmark-write))
- (define-key map [save] '("Save Bookmarks" . bookmark-save))
- (define-key map [edit] '("Edit Bookmark List" . bookmark-bmenu-list))
- (define-key map [delete] '("Delete Bookmark..." . bookmark-delete))
- (define-key map [rename] '("Rename Bookmark..." . bookmark-rename))
- (define-key map [locate] '("Insert Location..." . bookmark-locate))
- (define-key map [insert] '("Insert Contents..." . bookmark-insert))
- (define-key map [set] '("Set Bookmark..." . bookmark-set))
- (define-key map [jump] '("Jump to Bookmark..." . bookmark-jump))
+ (define-key map [load]
+ `(menu-item ,(purecopy "Load a Bookmark File...") bookmark-load
+ :help ,(purecopy "Load bookmarks from a bookmark file)")))
+ (define-key map [write]
+ `(menu-item ,(purecopy "Save Bookmarks As...") bookmark-write
+ :help ,(purecopy "Write bookmarks to a file (reading the file name with the minibuffer)")))
+ (define-key map [save]
+ `(menu-item ,(purecopy "Save Bookmarks") bookmark-save
+ :help ,(purecopy "Save currently defined bookmarks")))
+ (define-key map [edit]
+ `(menu-item ,(purecopy "Edit Bookmark List") bookmark-bmenu-list
+ :help ,(purecopy "Display a list of existing bookmarks")))
+ (define-key map [delete]
+ `(menu-item ,(purecopy "Delete Bookmark...") bookmark-delete
+ :help ,(purecopy "Delete a bookmark from the bookmark list")))
+ (define-key map [rename]
+ `(menu-item ,(purecopy "Rename Bookmark...") bookmark-rename
+ :help ,(purecopy "Change the name of a bookmark")))
+ (define-key map [locate]
+ `(menu-item ,(purecopy "Insert Location...") bookmark-locate
+ :help ,(purecopy "Insert the name of the file associated with a bookmark")))
+ (define-key map [insert]
+ `(menu-item ,(purecopy "Insert Contents...") bookmark-insert
+ :help ,(purecopy "Insert the text of the file pointed to by a bookmark")))
+ (define-key map [set]
+ `(menu-item ,(purecopy "Set Bookmark...") bookmark-set
+ :help ,(purecopy "Set a bookmark named inside a file.")))
+ (define-key map [jump]
+ `(menu-item ,(purecopy "Jump to Bookmark...") bookmark-jump
+ :help ,(purecopy "Jump to a bookmark (a point in some file)")))
map))
;;;###autoload