The Complete Computer

Quickly Delete the Current File

LifeTechEmacsArcology

SPC SPC delete-this-file lets me quickly delete the file my current buffer is editing, and optionally the buffer too:

emacs-lisp source: :tangle delete-this-file.el :results none
(defun delete-this-file (&optional buffer-too) (interactive "P") (let* ((bfn (buffer-file-name)) (prompt (if buffer-too (format "Delete %s and kill this buffer? " bfn) (format "Delete %s? " bfn)))) (when (and bfn (yes-or-no-p prompt)) (delete-file bfn) (when buffer-too (kill-this-buffer))))) (defun rename-file-and-buffer (new-name) "Renames 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 move-buffer-file (dir) "Moves 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))))