[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 61e0837: org-attach: Possibly delete empty attach d

From: ELPA Syncer
Subject: [elpa] externals/org 61e0837: org-attach: Possibly delete empty attach directory
Date: Fri, 9 Jul 2021 15:57:12 -0400 (EDT)

branch: externals/org
commit 61e08373257dbbcd914c0bb41362630620e9e958
Author: Marco Wahl <marcowahlsoft@gmail.com>
Commit: Marco Wahl <marcowahlsoft@gmail.com>

    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).
 etc/ORG-NEWS       |  6 ++++++
 lisp/org-attach.el | 27 +++++++++++++++++++++++----
 2 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 719ac35..78a57ba 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -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
diff --git a/lisp/org-attach.el b/lisp/org-attach.el
index 715fe3e..e8e8ade 100644
--- a/lisp/org-attach.el
+++ b/lisp/org-attach.el
@@ -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)))
 (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."
   (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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]