|  | @@ -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)
 | 
	
		
			
				|  |  |  
 |