]> code.delx.au - gnu-emacs/blobdiff - lisp/org/org-attach.el
Spelling fixes.
[gnu-emacs] / lisp / org / org-attach.el
index c9679edc65ac576a920225d5f825c11f68c70181..aa8c476e89b0d487d672081a4cca08f66cafd938 100644 (file)
@@ -4,7 +4,7 @@
 
 ;; 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,7 +253,7 @@ 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)
+       (mapc #'(lambda (file)
                 (unless (string= file "")
                   (shell-command
                    (concat "git rm \"" file "\""))))
@@ -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)
 
+
 ;;; org-attach.el ends here