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)