1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-24 10:38:38 +00:00

Added mouse-selection feature for bookmark list buffer.

(bookmark-bmenu-other-window-with-mouse): New function.
(bookmark-bmenu-mode-map): Bind mouse-2.
(bookmark-bmenu-list, bookmark-insert-location,
bookmark-bmenu-hide-filenames): Put text property on bookmarks.
(bookmark-bmenu-show-filenames): Remove text property from
white spaces generated by `move-to-column'.
(bookmark-bmenu-bookmark): Use `buffer-substring-no-properties'
instead of `buffer-substring'.
This commit is contained in:
Richard M. Stallman 1997-03-30 21:38:43 +00:00
parent 97ae4b8947
commit 7e510a5e22

View File

@ -1160,7 +1160,15 @@ Optional second arg NO-HISTORY means don't record this in the
minibuffer history list `bookmark-history'." minibuffer history list `bookmark-history'."
(interactive (bookmark-completing-read "Insert bookmark location")) (interactive (bookmark-completing-read "Insert bookmark location"))
(or no-history (bookmark-maybe-historicize-string bookmark)) (or no-history (bookmark-maybe-historicize-string bookmark))
(insert (bookmark-location bookmark))) (let ((start (point)))
(prog1
(insert (bookmark-location bookmark)) ; *Return this line*
(if window-system
(put-text-property start
(save-excursion (re-search-backward
"[^ \t]")
(1+ (point)))
'mouse-face 'highlight)))))
;;;###autoload ;;;###autoload
(defalias 'bookmark-locate 'bookmark-insert-location) (defalias 'bookmark-locate 'bookmark-insert-location)
@ -1444,7 +1452,9 @@ explicitly."
(define-key bookmark-bmenu-mode-map "t" 'bookmark-bmenu-toggle-filenames) (define-key bookmark-bmenu-mode-map "t" 'bookmark-bmenu-toggle-filenames)
(define-key bookmark-bmenu-mode-map "a" 'bookmark-bmenu-show-annotation) (define-key bookmark-bmenu-mode-map "a" 'bookmark-bmenu-show-annotation)
(define-key bookmark-bmenu-mode-map "A" 'bookmark-bmenu-show-all-annotations) (define-key bookmark-bmenu-mode-map "A" 'bookmark-bmenu-show-all-annotations)
(define-key bookmark-bmenu-mode-map "e" 'bookmark-bmenu-edit-annotation)) (define-key bookmark-bmenu-mode-map "e" 'bookmark-bmenu-edit-annotation)
(define-key bookmark-bmenu-mode-map [mouse-2]
'bookmark-bmenu-other-window-with-mouse))
@ -1495,7 +1505,16 @@ deletion, or > if it is flagged for displaying."
(not (string-equal annotation ""))) (not (string-equal annotation "")))
(insert " *") (insert " *")
(insert " ")) (insert " "))
(insert (concat (bookmark-name-from-full-record full-record) "\n")))) (let ((start (point)))
(insert (bookmark-name-from-full-record full-record))
(if window-system
(put-text-property start
(save-excursion (re-search-backward
"[^ \t]")
(1+ (point)))
'mouse-face 'highlight))
(insert "\n")
)))
bookmark-alist)) bookmark-alist))
(goto-char (point-min)) (goto-char (point-min))
(forward-line 2) (forward-line 2)
@ -1581,8 +1600,13 @@ Optional argument SHOW means show them unconditionally."
(let ((bmrk (bookmark-bmenu-bookmark))) (let ((bmrk (bookmark-bmenu-bookmark)))
(setq bookmark-bmenu-hidden-bookmarks (setq bookmark-bmenu-hidden-bookmarks
(cons bmrk bookmark-bmenu-hidden-bookmarks)) (cons bmrk bookmark-bmenu-hidden-bookmarks))
(move-to-column bookmark-bmenu-file-column t) (let ((start (save-excursion (end-of-line) (point))))
(delete-region (point) (progn (end-of-line) (point))) (move-to-column bookmark-bmenu-file-column t)
;; Strip off `mouse-face' from the white spaces region.
(if window-system
(remove-text-properties start (point)
'(mouse-face))))
(delete-region (point) (progn (end-of-line) (point)))
(insert " ") (insert " ")
;; Pass the NO-HISTORY arg: ;; Pass the NO-HISTORY arg:
(bookmark-insert-location bmrk t) (bookmark-insert-location bmrk t)
@ -1608,7 +1632,14 @@ Optional argument SHOW means show them unconditionally."
(while bookmark-bmenu-hidden-bookmarks (while bookmark-bmenu-hidden-bookmarks
(move-to-column bookmark-bmenu-bookmark-column t) (move-to-column bookmark-bmenu-bookmark-column t)
(bookmark-kill-line) (bookmark-kill-line)
(insert (car bookmark-bmenu-hidden-bookmarks)) (let ((start (point)))
(insert (car bookmark-bmenu-hidden-bookmarks))
(if window-system
(put-text-property start
(save-excursion (re-search-backward
"[^ \t]")
(1+ (point)))
'mouse-face 'highlight)))
(setq bookmark-bmenu-hidden-bookmarks (setq bookmark-bmenu-hidden-bookmarks
(cdr bookmark-bmenu-hidden-bookmarks)) (cdr bookmark-bmenu-hidden-bookmarks))
(forward-line 1)))))))) (forward-line 1))))))))
@ -1648,7 +1679,7 @@ Optional argument SHOW means show them unconditionally."
(beginning-of-line) (beginning-of-line)
(forward-char bookmark-bmenu-bookmark-column) (forward-char bookmark-bmenu-bookmark-column)
(prog1 (prog1
(buffer-substring (point) (buffer-substring-no-properties (point)
(progn (progn
(end-of-line) (end-of-line)
(point))) (point)))
@ -1826,6 +1857,15 @@ The current window remains selected."
(set-buffer o-buffer)) (set-buffer o-buffer))
(bookmark-show-annotation bookmark))))) (bookmark-show-annotation bookmark)))))
(defun bookmark-bmenu-other-window-with-mouse (event)
"Select bookmark at the mouse pointer in other window, leaving bookmark menu visible."
(interactive "e")
(save-excursion
(set-buffer (window-buffer (posn-window (event-end event))))
(save-excursion
(goto-char (posn-point (event-end event)))
(bookmark-bmenu-other-window))))
(defun bookmark-bmenu-show-annotation () (defun bookmark-bmenu-show-annotation ()
"Show the annotation for the current bookmark in another window." "Show the annotation for the current bookmark in another window."