diff options
author | Case Duckworth | 2022-04-02 12:37:25 -0500 |
---|---|---|
committer | Case Duckworth | 2022-04-02 12:37:25 -0500 |
commit | 548e9b8accb86d33658e5f27b59815ba71d81c7b (patch) | |
tree | 03f7a6f8d99aad7c0815bdcabd979700f19d4206 /lisp | |
parent | Merge branch 'main' of tildegit.org:acdw/emacs (diff) | |
download | emacs-548e9b8accb86d33658e5f27b59815ba71d81c7b.tar.gz emacs-548e9b8accb86d33658e5f27b59815ba71d81c7b.zip |
Add +scratch-buffer
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/acdw.el | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lisp/acdw.el b/lisp/acdw.el index 764a246..e47770b 100644 --- a/lisp/acdw.el +++ b/lisp/acdw.el | |||
@@ -386,5 +386,30 @@ the `format' call in a list." | |||
386 | `(with-eval-after-load ',this | 386 | `(with-eval-after-load ',this |
387 | (+with-eval-after-loads ,rest ,@body))))) | 387 | (+with-eval-after-loads ,rest ,@body))))) |
388 | 388 | ||
389 | (defun +scratch-buffer (&optional nomode) | ||
390 | "Create a new scratch buffer and switch to it. | ||
391 | If the region is active, paste its contents into the scratch | ||
392 | buffer. The scratch buffer inherits the mode of the current | ||
393 | buffer unless NOMODE is non-nil. When called interactively, | ||
394 | NOMODE will be set when called with \\[universal-argument]." | ||
395 | (interactive "P") | ||
396 | (let* ((mode major-mode) | ||
397 | (bufname (generate-new-buffer-name (format "*scratch (%s)*" mode))) | ||
398 | (paste (and (region-active-p) | ||
399 | (prog1 | ||
400 | (buffer-substring (mark t) (point)) | ||
401 | (deactivate-mark))))) | ||
402 | (when (and (not nomode) | ||
403 | (bound-and-true-p ess-dialect)) ; Not sure what `ess-dialect' is | ||
404 | (setq mode (intern-soft (concat ess-dialect "-mode")))) | ||
405 | ;; Set up buffer | ||
406 | (switch-to-buffer (get-buffer-create bufname)) | ||
407 | (when (and (not nomode) mode) | ||
408 | (ignore-errors (funcall mode))) | ||
409 | (insert (format "%s Scratch buffer for %s%s\n\n" | ||
410 | comment-start mode comment-end)) | ||
411 | (when paste (insert paste)) | ||
412 | (get-buffer bufname))) | ||
413 | |||
389 | (provide 'acdw) | 414 | (provide 'acdw) |
390 | ;;; acdw.el ends here | 415 | ;;; acdw.el ends here |