org-attach: Possibly delete empty attach directory
* lisp/org-attach.(org-attach-sync): Enable possible deletion of empty attachment directories. `org-attach-sync-delete-empty-dir' controls the action: Never delete, Always delete or Query the user (default).
This commit is contained in:
parent
32739e35e3
commit
61e0837325
|
@ -188,6 +188,12 @@ it is correctly configured as a Git repository.
|
||||||
|
|
||||||
See [[msg:875z8njaol.fsf@protesilaos.com][this thread]].
|
See [[msg:875z8njaol.fsf@protesilaos.com][this thread]].
|
||||||
|
|
||||||
|
*** New option ~org-attach-sync-delete-empty-dir~
|
||||||
|
|
||||||
|
~org-attach-sync-delete-empty-dir~ controls the deletion of an empty
|
||||||
|
attachment directory at calls of ~org-attach-sync~. There is
|
||||||
|
Never delete, Always delete and Query the user (default).
|
||||||
|
|
||||||
** New features
|
** New features
|
||||||
|
|
||||||
*** ~ox-koma-letter.el~ is now part of Org's core
|
*** ~ox-koma-letter.el~ is now part of Org's core
|
||||||
|
|
|
@ -245,6 +245,17 @@ Each entry in this list is a list of three elements:
|
||||||
(function :tag "Command")
|
(function :tag "Command")
|
||||||
(string :tag "Docstring"))))
|
(string :tag "Docstring"))))
|
||||||
|
|
||||||
|
(defcustom org-attach-sync-delete-empty-dir 'query
|
||||||
|
"Determine what to do with an empty attachment directory on sync.
|
||||||
|
When set to nil, don't touch the directory. When set to `query',
|
||||||
|
ask the user instead, else remove without asking."
|
||||||
|
:group 'org-attach
|
||||||
|
:package-version '(Org . "9.5")
|
||||||
|
:type '(choice
|
||||||
|
(const :tag "Never delete" nil)
|
||||||
|
(const :tag "Always delete" t)
|
||||||
|
(const :tag "Query the user" query)))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun org-attach ()
|
(defun org-attach ()
|
||||||
"The dispatcher for attachment commands.
|
"The dispatcher for attachment commands.
|
||||||
|
@ -600,14 +611,22 @@ with no prompts."
|
||||||
|
|
||||||
(defun org-attach-sync ()
|
(defun org-attach-sync ()
|
||||||
"Synchronize the current outline node with its attachments.
|
"Synchronize the current outline node with its attachments.
|
||||||
This can be used after files have been added externally."
|
Useful after files have been added/removed externally. Option
|
||||||
|
`org-attach-sync-delete-empty-dir' controls the behavior for
|
||||||
|
empty attachment directories."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((attach-dir (org-attach-dir)))
|
(let ((attach-dir (org-attach-dir)))
|
||||||
(when attach-dir
|
(if (not attach-dir)
|
||||||
|
(org-attach-tag 'off)
|
||||||
(run-hook-with-args 'org-attach-after-change-hook attach-dir)
|
(run-hook-with-args 'org-attach-after-change-hook attach-dir)
|
||||||
(let ((files (org-attach-file-list attach-dir)))
|
(let ((files (org-attach-file-list attach-dir)))
|
||||||
(org-attach-tag (not files))))
|
(org-attach-tag (not files)))
|
||||||
(unless attach-dir (org-attach-tag t))))
|
(when org-attach-sync-delete-empty-dir
|
||||||
|
(when (and (directory-empty-p attach-dir)
|
||||||
|
(if (eq 'query org-attach-sync-delete-empty-dir)
|
||||||
|
(yes-or-no-p "Attachment directory is empty. Delete?")
|
||||||
|
t))
|
||||||
|
(delete-directory attach-dir))))))
|
||||||
|
|
||||||
(defun org-attach-file-list (dir)
|
(defun org-attach-file-list (dir)
|
||||||
"Return a list of files in the attachment directory.
|
"Return a list of files in the attachment directory.
|
||||||
|
|
Loading…
Reference in New Issue