summaryrefslogtreecommitdiff
path: root/lisp/bookmark.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2009-11-21 06:43:45 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2009-11-21 06:43:45 +0000
commitfc9d6ad645ab0332811bcd7b79341f68ddd958e8 (patch)
tree40fe9469fc2d65a93b041d8f45806af5c76c5f07 /lisp/bookmark.el
parenteb7fdcd95056e9727c50dbe6f3ee16d73e2f598c (diff)
downloademacs-fc9d6ad645ab0332811bcd7b79341f68ddd958e8.tar.gz
(bookmark-bmenu-bookmark-column): Remove var.
(bookmark-bmenu-list): Save name on `bookmark-name-prop' text-prop. (bookmark-bmenu-show-filenames): Use push. (bookmark-bmenu-hide-filenames): Use local var instead of bookmark-bmenu-bookmark-column. Use pop. Don't save window-excursion. (bookmark-bmenu-bookmark): Use the new `bookmark-name-prop' text-prop. (bookmark-bmenu-execute-deletions): Don't bother adding/removing the filenames now that the bookmark names are always available.
Diffstat (limited to 'lisp/bookmark.el')
-rw-r--r--lisp/bookmark.el144
1 files changed, 54 insertions, 90 deletions
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 017eed8128a..77b51a14f67 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -1493,9 +1493,6 @@ method buffers use to resolve name collisions."
;; Prefix is "bookmark-bmenu" for "buffer-menu":
-(defvar bookmark-bmenu-bookmark-column nil)
-
-
(defvar bookmark-bmenu-hidden-bookmarks ())
@@ -1579,29 +1576,29 @@ deletion, or > if it is flagged for displaying."
(add-text-properties (point-min) (point)
'(font-lock-face bookmark-menu-heading))
(dolist (full-record (bookmark-maybe-sort-alist))
- ;; if a bookmark has an annotation, prepend a "*"
- ;; in the list of bookmarks.
- (let ((annotation (bookmark-get-annotation full-record)))
+ (let ((name (bookmark-name-from-full-record full-record))
+ (annotation (bookmark-get-annotation full-record))
+ (start (point))
+ end)
+ ;; if a bookmark has an annotation, prepend a "*"
+ ;; in the list of bookmarks.
(insert (if (and annotation (not (string-equal annotation "")))
- " *" " "))
- (let ((start (point)))
- (insert (bookmark-name-from-full-record full-record))
- (if (display-mouse-p)
- (add-text-properties
- start
- (save-excursion (re-search-backward
- "[^ \t]")
- (1+ (point)))
- '(mouse-face highlight
- follow-link t
- help-echo "mouse-2: go to this bookmark in other window")))
- (insert "\n")))))
-
- (goto-char (point-min))
- (forward-line 2)
- (bookmark-bmenu-mode)
- (if bookmark-bmenu-toggle-filenames
- (bookmark-bmenu-toggle-filenames t)))
+ " *" " ")
+ name)
+ (setq end (point))
+ (put-text-property start (+ 2 start) 'bookmark-name-prop name)
+ (when (display-mouse-p)
+ (add-text-properties
+ (+ 2 start) end
+ '(mouse-face highlight
+ follow-link t
+ help-echo "mouse-2: go to this bookmark in other window")))
+ (insert "\n")))
+ (goto-char (point-min))
+ (forward-line 2)
+ (bookmark-bmenu-mode)
+ (if bookmark-bmenu-toggle-filenames
+ (bookmark-bmenu-toggle-filenames t))))
;;;###autoload
(defalias 'list-bookmarks 'bookmark-bmenu-list)
@@ -1683,8 +1680,7 @@ mainly for debugging, and should not be necessary in normal use."
(let ((inhibit-read-only t))
(while (< (point) (point-max))
(let ((bmrk (bookmark-bmenu-bookmark)))
- (setq bookmark-bmenu-hidden-bookmarks
- (cons bmrk bookmark-bmenu-hidden-bookmarks))
+ (push bmrk bookmark-bmenu-hidden-bookmarks)
(let ((start (save-excursion (end-of-line) (point))))
(move-to-column bookmark-bmenu-file-column t)
;; Strip off `mouse-face' from the white spaces region.
@@ -1702,39 +1698,33 @@ mainly for debugging, and should not be necessary in normal use."
"In an interactive bookmark list, hide the filenames of the bookmarks.
Non-nil FORCE forces a redisplay showing the filenames. FORCE is used
mainly for debugging, and should not be necessary in normal use."
- (if (and (not force) bookmark-bmenu-toggle-filenames)
- ;; nothing to hide if above is nil
- (save-excursion
- (save-window-excursion
- (goto-char (point-min))
- (forward-line 2)
- (setq bookmark-bmenu-hidden-bookmarks
- (nreverse bookmark-bmenu-hidden-bookmarks))
- (save-excursion
- (goto-char (point-min))
- (search-forward "Bookmark")
- (backward-word 1)
- (setq bookmark-bmenu-bookmark-column (current-column)))
- (save-excursion
- (let ((inhibit-read-only t))
- (while bookmark-bmenu-hidden-bookmarks
- (move-to-column bookmark-bmenu-bookmark-column t)
- (bookmark-kill-line)
- (let ((start (point)))
- (insert (car bookmark-bmenu-hidden-bookmarks))
- (if (display-mouse-p)
- (add-text-properties
- start
- (save-excursion (re-search-backward
- "[^ \t]")
- (1+ (point)))
- '(mouse-face highlight
- follow-link t
- help-echo
- "mouse-2: go to this bookmark in other window"))))
- (setq bookmark-bmenu-hidden-bookmarks
- (cdr bookmark-bmenu-hidden-bookmarks))
- (forward-line 1))))))))
+ (when (and (not force) bookmark-bmenu-toggle-filenames)
+ ;; nothing to hide if above is nil
+ (save-excursion
+ (goto-char (point-min))
+ (forward-line 2)
+ (setq bookmark-bmenu-hidden-bookmarks
+ (nreverse bookmark-bmenu-hidden-bookmarks))
+ (let ((inhibit-read-only t)
+ (column (save-excursion
+ (goto-char (point-min))
+ (search-forward "Bookmark")
+ (backward-word 1)
+ (setq bookmark-bmenu-bookmark-column (current-column)))))
+ (while bookmark-bmenu-hidden-bookmarks
+ (move-to-column column t)
+ (bookmark-kill-line)
+ (let ((name (pop bookmark-bmenu-hidden-bookmarks))
+ (start (point)))
+ (insert name)
+ (if (display-mouse-p)
+ (add-text-properties
+ start (point)
+ '(mouse-face highlight
+ follow-link t
+ help-echo
+ "mouse-2: go to this bookmark in other window"))))
+ (forward-line 1))))))
(defun bookmark-bmenu-check-position ()
@@ -1761,27 +1751,8 @@ Return `bookmark-alist'"
(defun bookmark-bmenu-bookmark ()
"Return the bookmark for this line in an interactive bookmark list buffer."
- (if (bookmark-bmenu-check-position)
- (save-excursion
- (save-window-excursion
- (goto-char (point-min))
- (search-forward "Bookmark")
- (backward-word 1)
- (setq bookmark-bmenu-bookmark-column (current-column)))))
- (if bookmark-bmenu-toggle-filenames
- (bookmark-bmenu-hide-filenames))
- (save-excursion
- (save-window-excursion
- (beginning-of-line)
- (forward-char bookmark-bmenu-bookmark-column)
- (prog1
- (buffer-substring-no-properties (point)
- (progn
- (end-of-line)
- (point)))
- ;; well, this is certainly crystal-clear:
- (if bookmark-bmenu-toggle-filenames
- (bookmark-bmenu-toggle-filenames t))))))
+ (when (bookmark-bmenu-check-position)
+ (get-text-property (line-beginning-position) 'bookmark-name-prop)))
(defun bookmark-show-annotation (bookmark)
@@ -2023,26 +1994,19 @@ To carry out the deletions that you've marked, use \\<bookmark-bmenu-mode-map>\\
"Delete bookmarks marked with \\<Buffer-menu-mode-map>\\[Buffer-menu-delete] commands."
(interactive)
(message "Deleting bookmarks...")
- (let ((hide-em bookmark-bmenu-toggle-filenames)
- (o-point (point))
+ (let ((o-point (point))
(o-str (save-excursion
(beginning-of-line)
- (if (looking-at "^D")
- nil
+ (unless (looking-at "^D")
(buffer-substring
(point)
(progn (end-of-line) (point))))))
(o-col (current-column)))
- (if hide-em (bookmark-bmenu-hide-filenames))
- (setq bookmark-bmenu-toggle-filenames nil)
(goto-char (point-min))
(forward-line 1)
(while (re-search-forward "^D" (point-max) t)
(bookmark-delete (bookmark-bmenu-bookmark) t)) ; pass BATCH arg
(bookmark-bmenu-list)
- (setq bookmark-bmenu-toggle-filenames hide-em)
- (if bookmark-bmenu-toggle-filenames
- (bookmark-bmenu-toggle-filenames t))
(if o-str
(progn
(goto-char (point-min))