dangerous-mode.el
🧩 Syntax:
;;; dangerous-mode.el --- Minor mode for dangerous editing -*- lexical-binding: t -*-
(define-minor-mode dangerous-mode
nil
nil
nil
:global nil
(if dangerous-mode
;; Enable dangerous mode, deletes the file associated with your
;; current buffer.
(let ((bfn (buffer-file-name)))
(if bfn
(progn
(message "Living dangerously and deleting '%s' the only copy lives in this buffer now!"
bfn)
(delete-file bfn))))
;; Disable dangerous mode, save the buffer contents again.
(progn
(let ((bfn (buffer-file-name)))
(if (not (file-exists-p bfn))
;; File doesn't exist, just save the buffer
(progn
(save-buffer)
(message "Living safely, saving '%s' to '%s'"
(buffer-name) (buffer-file-name)))
;; File does exist? Steady on now, write the buffer out to
;; a new file named something similar.
(let ((nfn (make-temp-file
(format "%s." bfn) nil ".not-that-dangerously"))
(obn (buffer-name)))
(progn
(set-visited-file-name nfn t t)
(write-region (point-min) (point-max) nfn)
(message "Living semi-dangerously, '%s' now saved to '%s'"
obn nfn))))))))
(provide 'dangerous-mode)