diff options
author | Karl Fogel <kfogel@red-bean.com> | 1996-05-08 02:22:12 +0000 |
---|---|---|
committer | Karl Fogel <kfogel@red-bean.com> | 1996-05-08 02:22:12 +0000 |
commit | a15269c0d04259277ff1d9d6a6dac8b60184ece3 (patch) | |
tree | cae858773490c740d14ff0ea46d5a58a95fad1a2 /lisp/bookmark.el | |
parent | 9fa128e82a612fbec633793e117d9a341e4f7749 (diff) | |
download | emacs-a15269c0d04259277ff1d9d6a6dac8b60184ece3.tar.gz |
(bookmark-make): take optional arg `info-node', pass it on to
bookmark-make-cell.
(bookmark-make-cell): if new optional arg `info-node' is non-nil, make
it be the bookmark's info-node.
(bookmark-info-current-node): new func.
(bookmark-set): call bookmark-make, passing result from above
bookmark-info-current-node.
(bookmark-send-annotation): same as above.
(bookmark-locate): defalias to bookmark-insert-location for backward
compatibility.
(bookmark-version): upped to 2.6.3.
Diffstat (limited to 'lisp/bookmark.el')
-rw-r--r-- | lisp/bookmark.el | 84 |
1 files changed, 53 insertions, 31 deletions
diff --git a/lisp/bookmark.el b/lisp/bookmark.el index bdb9ef4364d..58e490ff3ec 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -82,7 +82,7 @@ (require 'pp) -(defconst bookmark-version "2.6.20" +(defconst bookmark-version "2.6.3" "Version number of bookmark.el. This is not related to the version of Emacs bookmark comes with; it is used solely by bookmark's maintainers to avoid version confusion.") @@ -450,7 +450,11 @@ That is, all information but the name." (if cell (setcdr cell node) (nconc (bookmark-get-bookmark-record bookmark) - (list (cons 'info-node node)))))) + (list (cons 'info-node node))))) + + (message "%S" (assq 'info-node (bookmark-get-bookmark-record bookmark))) + (sit-for 4) + ) (defvar bookmark-history nil @@ -490,11 +494,13 @@ menus, so `completing-read' never gets a chance to set `bookmark-history'." (setq bookmark-history (cons (, string) bookmark-history))))) -(defun bookmark-make (name &optional annotation overwrite) +(defun bookmark-make (name &optional annotation overwrite info-node) "Make a bookmark named NAME. Optional second arg ANNOTATION gives it an annotation. Optional third arg OVERWRITE means replace any existing bookmarks with -this name." +this name. +Optional fourth arg INFO-NODE means this bookmark is at info node +INFO-NODE, so record this fact in the bookmark's entry." (bookmark-maybe-load-default-file) (let ((stripped-name (copy-sequence name))) (or bookmark-xemacsp @@ -505,7 +511,7 @@ this name." ;; already existing bookmark under that name and ;; no prefix arg means just overwrite old bookmark (setcdr (bookmark-get-bookmark stripped-name) - (list (bookmark-make-cell annotation))) + (list (bookmark-make-cell annotation info-node))) ;; otherwise just cons it onto the front (either the bookmark ;; doesn't exist already, or there is no prefix arg. In either @@ -514,7 +520,7 @@ this name." (setq bookmark-alist (cons (list stripped-name - (bookmark-make-cell annotation)) + (bookmark-make-cell annotation info-node)) bookmark-alist))) ;; Added by db @@ -525,25 +531,38 @@ this name." (bookmark-save)))) -(defun bookmark-make-cell (annotation) +(defun bookmark-make-cell (annotation &optional info-node) "Return the record part of a new bookmark, given ANNOTATION. Must be at the correct position in the buffer in which the bookmark is -being set. This will change soon." - (` ((filename . (, (bookmark-buffer-file-name))) - (front-context-string - . (, (if (>= (- (point-max) (point)) bookmark-search-size) - (buffer-substring-no-properties - (point) - (+ (point) bookmark-search-size)) - nil))) - (rear-context-string - . (, (if (>= (- (point) (point-min)) bookmark-search-size) - (buffer-substring-no-properties - (point) - (- (point) bookmark-search-size)) - nil))) - (position . (, (point))) - (annotation . (, annotation))))) +being set. This might change someday. +Optional second arg INFO-NODE means this bookmark is at info node +INFO-NODE, so record this fact in the bookmark's entry." + (let ((the-record + (` ((filename . (, (bookmark-buffer-file-name))) + (front-context-string + . (, (if (>= (- (point-max) (point)) bookmark-search-size) + (buffer-substring-no-properties + (point) + (+ (point) bookmark-search-size)) + nil))) + (rear-context-string + . (, (if (>= (- (point) (point-min)) bookmark-search-size) + (buffer-substring-no-properties + (point) + (- (point) bookmark-search-size)) + nil))) + (position . (, (point))) + )))) + + ;; Now fill in the optional parts: + (if annotation + (nconc the-record (list (cons 'annotation annotation)))) + (if info-node + (nconc the-record (list (cons 'info-node info-node)))) + + ;; Finally, return the completed record. + the-record)) + ;;; File format stuff @@ -590,11 +609,9 @@ being set. This will change soon." ;; bookmark-jump will search for STRING-BEHIND and STRING-IN-FRONT in ;; case the file has changed since the bookmark was set. It will ;; attempt to place the user before the changes, if there were any. -;; annotation is the annotation for the bookmark; it may not exist +;; ANNOTATION is the annotation for the bookmark; it may not exist ;; (for backward compatibility), be nil (no annotation), or be a ;; string. -;; -;; ANNOTATION is an annotation for the bookmark. (defconst bookmark-file-format-version 1 @@ -760,15 +777,18 @@ the list of bookmarks.\)" (if bookmark-use-annotations (bookmark-read-annotation parg str) (progn - (bookmark-make str annotation parg) - ;; In Info, there's a little more information to record: - (if (eq major-mode 'Info-mode) - (bookmark-set-info-node str Info-current-node)) + (bookmark-make str annotation parg (bookmark-info-current-node)) (setq bookmark-current-bookmark str) (bookmark-bmenu-surreptitiously-rebuild-list) (goto-char bookmark-current-point))))) +(defun bookmark-info-current-node () + "If in Info-mode, return current node name (a string), else nil." + (if (eq major-mode 'Info-mode) + Info-current-node)) + + (defun bookmark-kill-line (&optional newline-too) "Kill from point to end of line. If optional arg NEWLINE-TOO is non-nil, delete the newline too. @@ -812,7 +832,7 @@ the bookmark (and file, and point) specified in buffer local variables." (save-excursion (pop-to-buffer buf) (goto-char pt) - (bookmark-make bookmark annotation parg) + (bookmark-make bookmark annotation parg (bookmark-info-current-node)) (setq bookmark-current-bookmark bookmark)) (bookmark-bmenu-surreptitiously-rebuild-list) (goto-char bookmark-current-point)) @@ -1147,6 +1167,8 @@ minibuffer history list `bookmark-history'." (or no-history (bookmark-maybe-historicize-string bookmark)) (insert (bookmark-location bookmark))) +;;; old name for above: +(defalias 'bookmark-locate 'bookmark-insert-location) (defun bookmark-location (bookmark) "Return the name of the file associated with BOOKMARK." |