org-attach: Make org-attach move directories, when attachment dir changes
* lisp/org-attach.el (org-attach-set-directory): Make org-attach move directories, when attachment dir changes. (org-attach): Update docstring.
This commit is contained in:
parent
360109e6c7
commit
da99ee0fa6
|
@ -88,6 +88,11 @@ See docstring for details.
|
||||||
*** Change signature for ~org-time-string-to-time~
|
*** Change signature for ~org-time-string-to-time~
|
||||||
See docstring for changes.
|
See docstring for changes.
|
||||||
** New features
|
** New features
|
||||||
|
*** ~org-attach~ can move directory contents
|
||||||
|
When setting a new directory for an entry, org-attach offers to move
|
||||||
|
files over from the old directory. Using a prefix arg will reset the
|
||||||
|
directory to old, ID based one.
|
||||||
|
|
||||||
*** New Org duration library
|
*** New Org duration library
|
||||||
This new library implements tools to read and print time durations in
|
This new library implements tools to read and print time durations in
|
||||||
various formats (e.g., "H:MM", or "1d 2h 3min"...).
|
various formats (e.g., "H:MM", or "1d 2h 3min"...).
|
||||||
|
|
|
@ -189,7 +189,7 @@ d Delete one attachment, you will be prompted for a file name.
|
||||||
D Delete all of a task's attachments. A safer way is
|
D Delete all of a task's attachments. A safer way is
|
||||||
to open the directory in dired and delete from there.
|
to open the directory in dired and delete from there.
|
||||||
|
|
||||||
s Set a specific attachment directory for this entry.
|
s Set a specific attachment directory for this entry or reset to default.
|
||||||
i Make children of the current entry inherit its attachment directory.")))
|
i Make children of the current entry inherit its attachment directory.")))
|
||||||
(org-fit-window-to-buffer (get-buffer-window "*Org Attach*"))
|
(org-fit-window-to-buffer (get-buffer-window "*Org Attach*"))
|
||||||
(message "Select command: [acmlzoOfFdD]")
|
(message "Select command: [acmlzoOfFdD]")
|
||||||
|
@ -275,14 +275,30 @@ Throw an error if we cannot root the directory."
|
||||||
(buffer-file-name (buffer-base-buffer))
|
(buffer-file-name (buffer-base-buffer))
|
||||||
(error "Need absolute `org-attach-directory' to attach in buffers without filename")))
|
(error "Need absolute `org-attach-directory' to attach in buffers without filename")))
|
||||||
|
|
||||||
(defun org-attach-set-directory ()
|
(defun org-attach-set-directory (&optional arg)
|
||||||
"Set the ATTACH_DIR property of the current entry.
|
"Set the ATTACH_DIR node property and ask to move files there.
|
||||||
The property defines the directory that is used for attachments
|
The property defines the directory that is used for attachments
|
||||||
of the entry."
|
of the entry. When called with `\\[universal-argument]', reset \
|
||||||
(interactive)
|
the directory to
|
||||||
(let ((dir (org-entry-get nil "ATTACH_DIR")))
|
the default ID based one."
|
||||||
(setq dir (read-directory-name "Attachment directory: " dir))
|
(interactive "P")
|
||||||
(org-entry-put nil "ATTACH_DIR" dir)))
|
(let ((old (org-attach-dir))
|
||||||
|
(new
|
||||||
|
(progn
|
||||||
|
(if arg (org-entry-delete nil "ATTACH_DIR")
|
||||||
|
(let ((dir (read-directory-name
|
||||||
|
"Attachment directory: "
|
||||||
|
(org-entry-get nil
|
||||||
|
"ATTACH_DIR"
|
||||||
|
(and org-attach-allow-inheritance t)))))
|
||||||
|
(org-entry-put nil "ATTACH_DIR" dir)))
|
||||||
|
(org-attach-dir t))))
|
||||||
|
(unless (or (string= old new)
|
||||||
|
(not old))
|
||||||
|
(when (yes-or-no-p "Copy over attachments from old directory? ")
|
||||||
|
(copy-directory old new t nil t))
|
||||||
|
(when (yes-or-no-p (concat "Delete " old))
|
||||||
|
(delete-directory old t)))))
|
||||||
|
|
||||||
(defun org-attach-set-inherit ()
|
(defun org-attach-set-inherit ()
|
||||||
"Set the ATTACH_DIR_INHERIT property of the current entry.
|
"Set the ATTACH_DIR_INHERIT property of the current entry.
|
||||||
|
|
Loading…
Reference in New Issue