From d54f43e48cf30e3aae23790d466cc912dfc0e2b7 Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Fri, 29 Feb 2008 00:58:22 +0000 Subject: [PATCH] Added options for defining context of use. Added an option about prompting (or not) the user in case several bookmarks are possible. --- CONTRIB/lisp/org-bookmark.el | 54 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/CONTRIB/lisp/org-bookmark.el b/CONTRIB/lisp/org-bookmark.el index 37e515fdd..21bed5a89 100644 --- a/CONTRIB/lisp/org-bookmark.el +++ b/CONTRIB/lisp/org-bookmark.el @@ -26,6 +26,27 @@ (require 'org) (require 'bookmark) +(defgroup org-bookmark nil + "Options concerning the bookmark link." + :tag "Org Startup" + :group 'org-link) + +(defcustom org-bookmark-in-dired nil + "Use org-bookmark in dired." + :group 'org-bookmark + :type 'boolean) + +(defcustom org-bookmark-when-visiting-a-file nil + "Use org-bookmark in any buffer visiting a file." + :group 'org-bookmark + :type 'boolean) + +(defcustom org-bookmark-use-first-bookmark nil + "If several bookmarks links to the buffer, take the first one. +Otherwise prompt the user for the right bookmark to use." + :group 'org-bookmark + :type 'boolean) + (org-add-link-type "bookmark" 'org-bookmark-open) (add-hook 'org-store-link-functions 'org-bookmark-store-link) @@ -34,24 +55,33 @@ (bookmark-jump bookmark)) (defun org-bookmark-store-link () - "Store a link to the current line's bookmark in Emacs bookmark list window." + "Store a link to the current line's bookmark in bookmark list." (let (file bookmark) - (cond ((eq major-mode 'dired-mode) + (cond ((and org-bookmark-in-dired + (eq major-mode 'dired-mode)) (setq file (abbreviate-file-name (dired-get-filename)))) - ((buffer-file-name (buffer-base-buffer)) - (setq file (abbreviate-file-name + ((and org-bookmark-when-visiting-a-file + (buffer-file-name (buffer-base-buffer))) + (setq file (abbreviate-file-name (buffer-file-name (buffer-base-buffer)))))) (if (not file) (when (eq major-mode 'bookmark-bmenu-mode) (setq bookmark (bookmark-bmenu-bookmark))) - (setq bmks (mapcar (lambda(bmk) - (if (equal file (cdr (assoc 'filename (cadr bmk)))) - (car bmk))) - bookmark-alist)) - (setq bookmark (completing-read "Bookmark: " bmks nil t - nil nil (car bmks)))) - (org-store-link-props :link (org-make-link "bookmark:" bookmark) - :description bookmark))) + (when (and (setq bmks + (mapcar (lambda(bmk) + (if (equal file + (abbreviate-file-name + (cdr (assoc 'filename (cadr bmk))))) + (car bmk))) + bookmark-alist)) + (setq bmks (delete nil bmks))) + (setq bookmark + (if (or (eq 1 (length bmks)) org-bookmark-use-first-bookmark) + (car bmks) + (completing-read "Bookmark: " bmks nil t nil nil (car bmks)))))) + (if bookmark + (org-store-link-props :link (org-make-link "bookmark:" bookmark) + :description bookmark)))) (provide 'org-bookmark) -- 2.11.4.GIT