From 63ffdc50ab64cb9ac6b9a20e717b7ba21e7c64cc Mon Sep 17 00:00:00 2001 From: Daniel Weschke Date: Thu, 25 Mar 2021 14:35:05 +0100 Subject: [PATCH] add functions to rename and move a file inclusive buffer --- settings/general-settings.el | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/settings/general-settings.el b/settings/general-settings.el index 86777c16..1d8c3746 100644 --- a/settings/general-settings.el +++ b/settings/general-settings.el @@ -26,6 +26,39 @@ (set-frame-parameter (selected-frame) 'alpha '(90 . 90)) (add-to-list 'default-frame-alist '(alpha . (90 . 90))) +;; source: http://steve.yegge.googlepages.com/my-dot-emacs-file +(defun my-rename-buffer-file (new-name) + "Rename both current buffer and file it's visiting to NEW-NAME." + (interactive "sNew name: ") + (let ((name (buffer-name)) + (filename (buffer-file-name))) + (if (not filename) + (message "Buffer '%s' is not visiting a file!" name) + (if (get-buffer new-name) + (message "A buffer named '%s' already exists!" new-name) + (progn + (rename-file filename new-name 1) + (rename-buffer new-name) + (set-visited-file-name new-name) + (set-buffer-modified-p nil)))))) +(defun my-move-buffer-file (dir) + "Move both current buffer and file it's visiting to DIR." + (interactive "DNew directory: ") + (let* ((name (buffer-name)) + (filename (buffer-file-name)) + (dir + (if (string-match dir "\\(?:/\\|\\\\)$") + (substring dir 0 -1) dir)) + (newname (concat dir "/" name))) + (if (not filename) + (message "Buffer '%s' is not visiting a file!" name) + (progn + (copy-file filename newname 1) + (delete-file filename) + (set-visited-file-name newname) + (set-buffer-modified-p nil) + t)))) + ;; recentf stuff (use-package recentf :config