;;; ui/doom/autoload.el ;;;###autoload (autoload '+doom:scratch-buffer "ui/doom/autoload" nil t) (evil-define-operator +doom:scratch-buffer (&optional beg end bang) "Send a region to and pop up the scratch buffer. If BANG, don't use a popup, use the current window." :move-point nil :type inclusive (interactive "") ;; TODO Ensure this works (let ((text (when (and (evil-visual-state-p) beg end) (buffer-substring beg end))) (mode major-mode) (old-project (doom-project-root)) (new-buf (get-buffer-create " *doom:scratch*"))) (with-current-buffer new-buf (setq default-directory old-project mode-line-format (assq 'minimal doom-modeline-formats)) (when (and (not (eq major-mode mode)) (functionp mode)) (funcall mode)) (if text (insert text))) (if bang (switch-to-buffer new-buf) (doom-popup-buffer new-buf))))