[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/crux 2c7143de47 5/6: More robust `crux-rename-file-and-buf
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/crux 2c7143de47 5/6: More robust `crux-rename-file-and-buffer`. |
Date: |
Mon, 21 Nov 2022 03:58:59 -0500 (EST) |
branch: elpa/crux
commit 2c7143de477a804fa694600d01bfb196977087d1
Author: Jimmy Yuen Ho Wong <wyuenho@gmail.com>
Commit: Bozhidar Batsov <bozhidar@batsov.dev>
More robust `crux-rename-file-and-buffer`.
* Offer to save file first if modified or new unsaved buffer.
* Message user if new file name is the same.
---
CHANGELOG.md | 1 +
crux.el | 15 ++++++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2d98ae2d78..47ee8efe67 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
# Changelog
## master (unreleased)
+* More robust `crux-rename-file-and-buffer`.
* [#94](https://github.com/bbatsov/crux/pull/94): Add
`crux-with-region-or-sexp-or-line`.
diff --git a/crux.el b/crux.el
index e7aa8aaf1f..deb45d9f93 100644
--- a/crux.el
+++ b/crux.el
@@ -37,6 +37,7 @@
(require 'thingatpt)
(require 'seq)
(require 'tramp)
+(require 'subr-x)
(declare-function dired-get-file-for-visit "dired")
(declare-function org-element-property "org-element")
@@ -413,11 +414,15 @@ there's a region, all lines that region covers will be
duplicated."
(defun crux-rename-file-and-buffer ()
"Rename current buffer and if the buffer is visiting a file, rename it too."
(interactive)
- (let ((filename (buffer-file-name)))
- (if (not (and filename (file-exists-p filename)))
- (rename-buffer (read-from-minibuffer "New name: " (buffer-name)))
- (let* ((new-name (read-file-name "New name: " (file-name-directory
filename)))
- (containing-dir (file-name-directory new-name)))
+ (when-let* ((filename (buffer-file-name))
+ (new-name (or (read-file-name "New name: " (file-name-directory
filename) nil 'confirm)))
+ (containing-dir (file-name-directory new-name)))
+ (when (or (buffer-modified-p) (not (file-exists-p filename)))
+ (if (y-or-n-p "Can't move file before saving. Would you like to save it
now?")
+ (save-buffer)))
+ (if (get-file-buffer new-name)
+ (message "Already editing new file name")
+ (progn
(make-directory containing-dir t)
(cond
((vc-backend filename)
- [nongnu] elpa/crux updated (6bfd212a7f -> b70649b91c), ELPA Syncer, 2022/11/21
- [nongnu] elpa/crux bc859e4d6a 1/6: Add crux-with-region-or-sexp-or-line, ELPA Syncer, 2022/11/21
- [nongnu] elpa/crux f258bef9bb 3/6: Fix `sudo` not found error in OpenBSD and Alpine Linux (#93), ELPA Syncer, 2022/11/21
- [nongnu] elpa/crux 2c7143de47 5/6: More robust `crux-rename-file-and-buffer`.,
ELPA Syncer <=
- [nongnu] elpa/crux 6ef681d853 4/6: Ensure `vc-rename-file` gets the local file paths (#91), ELPA Syncer, 2022/11/21
- [nongnu] elpa/crux 6ee63c7c2b 2/6: Use `derived-mode-p` for functions to also work for derived modes (#92), ELPA Syncer, 2022/11/21
- [nongnu] elpa/crux b70649b91c 6/6: Tweak the changelog, ELPA Syncer, 2022/11/21