]> code.delx.au - gnu-emacs/blobdiff - lisp/org/org-attach.el
Merge changes from Org 7.4 to current Org 7.7.
[gnu-emacs] / lisp / org / org-attach.el
index ae97db20f70bc1e7e191baee44f68c4abf93e33b..809ec1594963fc967f920ce7957c88863bd123fa 100644 (file)
@@ -1,10 +1,10 @@
 ;;; org-attach.el --- Manage file attachments to org-mode tasks
 
-;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@newartisans.com>
 ;; Keywords: org data task
-;; Version: 7.4
+;; Version: 7.7
 
 ;; This file is part of GNU Emacs.
 ;;
@@ -96,10 +96,17 @@ ln    create a hard link.  Note that this is not supported
   :group 'org-attach
   :type 'boolean)
 
-
 (defvar org-attach-inherited nil
   "Indicates if the last access to the attachment directory was inherited.")
 
+(defcustom org-attach-store-link-p nil
+  "Non-nil means store a link to a file when attaching it."
+  :group 'org-attach
+  :type '(choice
+         (const :tag "Don't store link" nil)
+         (const :tag "Link to origin location" t)
+         (const :tag "Link to the attach-dir location" 'attached)))
+
 ;;;###autoload
 (defun org-attach ()
   "The dispatcher for attachment commands.
@@ -246,10 +253,10 @@ This checks for the existence of a \".git\" directory in that directory."
        (cd dir)
        (shell-command "git add .")
        (shell-command "git ls-files --deleted" t)
-       (mapc (lambda (file)
-                (unless (string= file "")
-                  (shell-command
-                   (concat "git rm \"" file "\""))))
+       (mapc #'(lambda (file)
+                (unless (string= file "")
+                  (shell-command
+                   (concat "git rm \"" file "\""))))
              (split-string (buffer-string) "\n"))
        (shell-command "git commit -m 'Synchronized attachments'")))))
 
@@ -264,6 +271,14 @@ This checks for the existence of a \".git\" directory in that directory."
   "Turn the autotag off."
   (org-attach-tag 'off))
 
+(defun org-attach-store-link (file)
+  "Add a link to `org-stored-link' when attaching a file.
+Only do this when `org-attach-store-link-p' is non-nil."
+  (setq org-stored-links
+       (cons (list (org-attach-expand-link file)
+                   (file-name-nondirectory file))
+             org-stored-links)))
+
 (defun org-attach-attach (file &optional visit-dir method)
   "Move/copy/link FILE into the attachment directory of the current task.
 If VISIT-DIR is non-nil, visit the directory with dired.
@@ -282,6 +297,10 @@ METHOD may be `cp', `mv', or `ln', default taken from `org-attach-method'."
        ((eq method 'ln) (add-name-to-file file fname)))
       (org-attach-commit)
       (org-attach-tag)
+      (cond ((eq org-attach-store-link-p 'attached)
+            (org-attach-store-link fname))
+           ((eq org-attach-store-link-p t)
+            (org-attach-store-link file)))
       (if visit-dir
          (dired attach-dir)
        (message "File \"%s\" is now a task attachment." basename)))))
@@ -418,4 +437,5 @@ prefix."
 
 (provide 'org-attach)
 
+;; arch-tag: fce93c2e-fe07-4fa3-a905-e10dcc7a6248
 ;;; org-attach.el ends here