diff --git a/core/siren-core-modules.el b/core/siren-core-modules.el index 005acb9..d89bbc1 100644 --- a/core/siren-core-modules.el +++ b/core/siren-core-modules.el @@ -61,8 +61,9 @@ (require 'siren-explain-pause) (require 'siren-lorem-ipsum) (require 'siren-rand) -(require 'siren-restart-emacs) (require 'siren-refine) +(require 'siren-reopen) +(require 'siren-restart-emacs) (require 'siren-uuidgen) (require 'siren-zone) diff --git a/core/siren-core-utils.el b/core/siren-core-utils.el index 45b0622..612e885 100644 --- a/core/siren-core-utils.el +++ b/core/siren-core-utils.el @@ -76,15 +76,6 @@ Borrowed from: http://emacsredux.com/blog/2013/05/04/rename-file-and-buffer/" (set-visited-file-name new-name) (set-buffer-modified-p nil))))))) -(defun siren-reopen-current-file () - "Reopen the current file." - (interactive) - (let ((filename (buffer-file-name))) - (if (not (and filename (file-exists-p filename))) - (message "Buffer is not visiting a file!") - (kill-buffer) - (find-file filename)))) - (defun siren-ignore-error-wrapper (fn) "Funtion return new function that ignore errors. The function wraps a function with `ignore-errors' macro." diff --git a/modules/misc/siren-reopen.el b/modules/misc/siren-reopen.el new file mode 100644 index 0000000..ff76bac --- /dev/null +++ b/modules/misc/siren-reopen.el @@ -0,0 +1,39 @@ +;;; 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