Files
.emacs.d/modules/misc/siren-reopen.el

40 lines
1.1 KiB
EmacsLisp

;;; siren-reopen.el --- jimeh's Emacs Siren: reopen helpers.
;;; Commentary:
;; Helper function to reopen buffers.
;;; Code:
(defun siren-reopen ()
"Reopen current buffer.
If the current buffer is backed by a readable file, it will kill
the buffer, and reopen the file.
If current buffer is the *scratch* buffer, it will create a new scratch buffer."
(interactive)
(cond (buffer-file-name (siren-reopen--current-file))
((string= (buffer-name) "*scratch*") (siren-reopen--scratch-buffer))))
(defun siren-reopen--current-file ()
"Reopen the current file."
(interactive)
(let ((filename buffer-file-name))
(if (not (file-readable-p filename))
(message "Buffer is not visiting a readable file!")
(kill-buffer)
(find-file filename))))
(defun siren-reopen--scratch-buffer ()
"Reopen the *scratch* buffer."
(interactive)
(let ((buffer (get-buffer "*scratch*")))
(when (and buffer (not (buffer-file-name buffer)))
(with-current-buffer buffer
(kill-buffer))
(scratch-buffer))))
(provide 'siren-reopen)
;;; siren-reopen.el ends here