+doom:scratch-buffer => doom/scratch-buffer

This commit is contained in:
Henrik Lissner 2017-07-03 03:11:54 +02:00
parent 7477546892
commit 8c1fb1e6b2
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
4 changed files with 29 additions and 26 deletions

View file

@ -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)))))

View file

@ -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

View file

@ -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

View file

@ -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 "<r><!>")
(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)))))