mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-11-22 07:09:47 +00:00
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]].
|
||||
|
||||
*** 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
|
||||
|
||||
*** ~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")
|
||||
(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
|
||||
(defun org-attach ()
|
||||
"The dispatcher for attachment commands.
|
||||
@ -600,14 +611,22 @@ with no prompts."
|
||||
|
||||
(defun org-attach-sync ()
|
||||
"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)
|
||||
(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)
|
||||
(let ((files (org-attach-file-list attach-dir)))
|
||||
(org-attach-tag (not files))))
|
||||
(unless attach-dir (org-attach-tag t))))
|
||||
(org-attach-tag (not files)))
|
||||
(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)
|
||||
"Return a list of files in the attachment directory.
|
||||
|
Loading…
Reference in New Issue
Block a user