61 lines
2.0 KiB
Org Mode
61 lines
2.0 KiB
Org Mode
:PROPERTIES:
|
|
:ID: 20210903T141741.263846
|
|
:ROAM_ALIASES: move-buffer-file rename-file-and-buffer delete-this-file
|
|
:END:
|
|
#+title: Quickly Delete the Current File
|
|
=SPC SPC delete-this-file= lets me quickly delete the file my current buffer is editing, and optionally the buffer too:
|
|
|
|
#+ARROYO_EMACS_MODULE: delete-this-file
|
|
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
|
|
#+AUTO_TANGLE: t
|
|
|
|
#+ARCOLOGY_KEY: cce/delete-this-file
|
|
#+ARCOLOGY_ALLOW_CRAWL: t
|
|
|
|
#+begin_src emacs-lisp :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))))
|
|
#+end_src
|