[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/undo-fu-session 36e3bbabfa 51/53: Always ensure the target
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/undo-fu-session 36e3bbabfa 51/53: Always ensure the target directory exists before saving |
Date: |
Thu, 7 Jul 2022 12:05:31 -0400 (EDT) |
branch: elpa/undo-fu-session
commit 36e3bbabfa5dfb8f157bf557575ed5fda60d66df
Author: Campbell Barton <ideasman42@gmail.com>
Commit: Campbell Barton <ideasman42@gmail.com>
Always ensure the target directory exists before saving
Unlikely this is ever needed, more of a sanity check as it's
possible the user removes the directory after the mode is enabled.
---
undo-fu-session.el | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/undo-fu-session.el b/undo-fu-session.el
index 80d7569688..17e7679835 100755
--- a/undo-fu-session.el
+++ b/undo-fu-session.el
@@ -458,6 +458,13 @@ Argument PENDING-LIST an `pending-undo-list' compatible
list."
(funcall matcher filename)))
(throw 'found t)))))
+(defun undo-fu-session--directory-ensure ()
+ (unless (file-directory-p undo-fu-session-directory)
+ (make-directory undo-fu-session-directory t)
+ ;; These files should only readable by the owner, see #2.
+ ;; Setting the executable bit is important for directories to be writable.
+ (set-file-modes undo-fu-session-directory #o700)))
+
(defun undo-fu-session--recover-buffer-p (buffer)
"Return t if undo data of BUFFER should be recovered."
(let
@@ -483,6 +490,10 @@ Argument PENDING-LIST an `pending-undo-list' compatible
list."
(defun undo-fu-session--save-impl ()
"Internal save logic, resulting in t on success."
+
+ ;; Paranoid as it's possible the directory was removed since the mode was
enabled.
+ (undo-fu-session--directory-ensure)
+
(let
(
(buffer (current-buffer))
@@ -692,11 +703,10 @@ Argument PENDING-LIST an `pending-undo-list' compatible
list."
(defun undo-fu-session-mode-enable ()
"Turn on 'undo-fu-session-mode' for the current buffer."
- (unless (file-directory-p undo-fu-session-directory)
- (make-directory undo-fu-session-directory t)
- ;; These files should only readable by the owner, see #2.
- ;; Setting the executable bit is important for directories to be writable.
- (set-file-modes undo-fu-session-directory #o700))
+ ;; Even though this runs on save, call here since it's better the user
catches
+ ;; errors when the mode is enabled instead of having the hook fail.
+ (undo-fu-session--directory-ensure)
+
(add-hook 'write-file-functions #'undo-fu-session-save-safe)
(add-hook 'find-file-hook #'undo-fu-session-recover-safe))
- [nongnu] elpa/undo-fu-session 7c095e863c 26/53: Cleanup: remove redundant groups, (continued)
- [nongnu] elpa/undo-fu-session 7c095e863c 26/53: Cleanup: remove redundant groups, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session cbe37c6643 31/53: Alternate fix for #2, make the directory only readable by the user, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 4605b0cc2b 33/53: Tests: simplify execution, with & without the linear option set, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 3e810c7c9a 34/53: Tests: move into subdirectory, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 1a3d500d8b 39/53: Support different compression formats & format conversion, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session b492c07573 43/53: Fix bzip2 and Z-standard compression types, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session d2a5ca1299 45/53: Use 600 for the mode instead of 700, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session e4cf026fd5 47/53: Use GPL 3 license in header, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 703ea8d000 46/53: Fix incorrect mode for the undo-fu-session directory, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 4b14cea4a9 44/53: Fix integer comparison and use assoc instead of assoc-default, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 36e3bbabfa 51/53: Always ensure the target directory exists before saving,
ELPA Syncer <=
- [nongnu] elpa/undo-fu-session b2d8874bc8 20/53: readme: update evil mode notes, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session e6ba8d6330 41/53: Cleanup: expand on comment, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session ee3879e469 48/53: Fix #3 by ensuring the undo data uses compatible encoding, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session a016920750 06/53: readme: correct minor typos., ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 51e09de000 05/53: Use forward slash in filename regex, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 0400f15f2a 09/53: Fix for loading undo session overwriting other buffers data, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 702210384a 17/53: Cleanup: quote emacs symbols, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 579936966b 23/53: Cleanup: use group for globalized minor mode, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 8567a0c64e 19/53: Cleanup: quiet warnings, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu-session 1810251485 29/53: Cleanup: quiet warnings for undo-fu test, ELPA Syncer, 2022/07/07