From 8c1fb1e6b2026444a271fc44c22160eeb00f8281 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 3 Jul 2017 03:11:54 +0200 Subject: [PATCH] +doom:scratch-buffer => doom/scratch-buffer --- core/autoload/editor.el | 24 ++++++++++++++++++++++++ modules/private/hlissner/+bindings.el | 4 ++-- modules/private/hlissner/+commands.el | 4 +++- modules/ui/doom/autoload/evil.el | 23 ----------------------- 4 files changed, 29 insertions(+), 26 deletions(-) delete mode 100644 modules/ui/doom/autoload/evil.el diff --git a/core/autoload/editor.el b/core/autoload/editor.el index 7fa0ad97c..cb70648bd 100644 --- a/core/autoload/editor.el +++ b/core/autoload/editor.el @@ -224,3 +224,27 @@ for function signatures or notes. Run again to clear the header line." (setq content (replace-regexp-in-string "\\s-+" " " content)) content))))) +;;;###autoload +(defun doom/scratch-buffer (&optional beg end arg) + "Opens the scratch buffer in a popup window. + +If ARG (universal argument) is non-nil, open it in the current window instead of +a popup. + +If a region is active, copy it into the scratch buffer." + (interactive "rP") + (let ((text (and beg end (buffer-substring beg end))) + (mode major-mode) + (derived-p (derived-mode-p 'prog-mode 'text-mode)) + (old-project (doom-project-root)) + (new-buf (get-buffer-create "*doom:scratch*"))) + (if arg + (switch-to-buffer new-buf) + (doom-popup-buffer new-buf)) + (with-current-buffer new-buf + (setq default-directory old-project) + (when (and (not (eq major-mode mode)) + derived-p + (functionp mode)) + (funcall mode)) + (if text (insert text))))) diff --git a/modules/private/hlissner/+bindings.el b/modules/private/hlissner/+bindings.el index aac532770..d1e834791 100644 --- a/modules/private/hlissner/+bindings.el +++ b/modules/private/hlissner/+bindings.el @@ -71,7 +71,7 @@ (:leader :desc "Ex command" :nv ";" #'evil-ex :desc "M-x" :nv ":" #'execute-extended-command - :desc "Pop up scratch buffer" :nv "x" #'+doom:scratch-buffer + :desc "Pop up scratch buffer" :nv "x" #'doom/scratch-buffer :desc "Org Capture" :nv "X" #'+org/capture ;; Most commonly used @@ -147,7 +147,7 @@ :desc "Kill buffer" :n "k" #'doom/kill-this-buffer :desc "Kill other buffers" :n "o" #'doom/kill-other-buffers :desc "Save buffer" :n "s" #'save-buffer - :desc "Pop scratch buffer" :n "x" #'+doom:scratch-buffer + :desc "Pop scratch buffer" :n "x" #'doom/scratch-buffer :desc "Bury buffer" :n "z" #'bury-buffer :desc "Next buffer" :n "]" #'doom/next-buffer :desc "Previous buffer" :n "[" #'doom/previous-buffer diff --git a/modules/private/hlissner/+commands.el b/modules/private/hlissner/+commands.el index 7b00fa39c..b71d85178 100644 --- a/modules/private/hlissner/+commands.el +++ b/modules/private/hlissner/+commands.el @@ -32,7 +32,9 @@ (ex! "sh[ell]" #'+eshell:run) (ex! "t[mux]" #'+tmux:run) ; send to tmux (ex! "tcd" #'+tmux:cd-here) ; cd to default-directory in tmux -(ex! "x" #'+doom:scratch-buffer) + +(evil-set-command-properties #'doom/scratch-buffer :ex-bang t) +(ex! "x" #'doom/scratch-buffer) ;; GIT (ex! "gist" #'+gist:send) ; send current buffer/region to gist diff --git a/modules/ui/doom/autoload/evil.el b/modules/ui/doom/autoload/evil.el deleted file mode 100644 index 3789b62be..000000000 --- a/modules/ui/doom/autoload/evil.el +++ /dev/null @@ -1,23 +0,0 @@ -;;; ui/doom/autoload/evil.el -*- lexical-binding: t; -*- - -;;;###autoload (autoload '+doom:scratch-buffer "ui/doom/autoload/evil" nil t) -(evil-define-operator +doom:scratch-buffer (&optional beg end bang) - "Opens the scratch buffer in a popup window and, optionally, send the selected -region to it. If BANG, use current window instead of a popup." - :move-point nil :type inclusive - (interactive "") - (let ((text (when (and (not (evil-normal-state-p)) beg end) - (buffer-substring beg end))) - (mode major-mode) - (old-project (doom-project-root)) - (new-buf (get-buffer-create "*doom:scratch*"))) - (if bang - (switch-to-buffer new-buf) - (doom-popup-buffer new-buf)) - (with-current-buffer new-buf - (setq default-directory old-project) - (when (and (not (eq major-mode mode)) - (functionp mode)) - (funcall mode)) - (if text (insert text))))) -