diff --git a/.config/emacs/init.org b/.config/emacs/init.org index 2309f9c..b36d083 100644 --- a/.config/emacs/init.org +++ b/.config/emacs/init.org @@ -1519,10 +1519,6 @@ When called interactively, prompt for BUFFER." (unwind-protect (app-launcher-run-app) (delete-frame))) -(defun joe/vterm-scratch () - (interactive) - (unwind-protect - (joe/vterm-here))) #+end_src ** Dirvish/Dired #+begin_src emacs-lisp @@ -1762,7 +1758,8 @@ be kept here commented out in case we want to try it again. (require 'vterm) (setq vterm-shell "/bin/fish") (setq vterm-timer-delay 0.01) -(setq vterm-buffer-name-string "VTerm - %s") +;; (setq vterm-buffer-name-string "VTerm - %s") +(setq vterm-buffer-name-string nil) (setq vterm-max-scrollback 100000) (setq vterm-kill-buffer-on-exit t) @@ -1804,6 +1801,43 @@ startup. Reason we have to call this is so the vterm fucntion can call `vterm--i #+begin_src emacs-lisp :tangle no ;; (add-hook 'emacs-startup-hook (lambda () (require 'vterm))) #+end_src + +This bit of code is to achieve a vterm scratchpad. In order to know I'm closing +the right frame, I'm going to use the frame's name to close and remove the hook + +#+begin_src emacs-lisp +(defun vterm--set-title (title) + "Use TITLE to set the buffer name according to `vterm-buffer-name-string'." + (when (and vterm-buffer-name-string (not (equal (buffer-name) "Scratch VTerm"))) + (rename-buffer (format vterm-buffer-name-string title) t))) + +(defun joe/kill-frame () + (when (equal (buffer-name) "Scratch VTerm") + (remove-hook 'kill-buffer-hook #'joe/kill-frame) + (remove-function delete-frame-functions #'joe/kill-vterm-scratch) + (delete-frame))) + +(defun joe/kill-vterm-scratch () + (let ((kill-buffer-query-functions nil) + (frame-name (substring-no-properties (cdr (assoc 'name (frame-parameters)))))) + (message "Frame Name: %s" frame-name) + (when (equal frame-name "emacs-vterm-scratch") + (message "VTerm Scratch Buffer? %s" (get-buffer "Scratch VTerm")) + (kill-buffer (get-buffer "Scratch VTerm")) + (message "Did we kill it? %s" (get-buffer "Scratch VTerm")) + (remove-function delete-frame-functions #'joe/kill-vterm-scratch) + (remove-hook 'kill-buffer-hook #'joe/kill-frame)))) + +(defun joe/vterm-scratch () + (interactive) + (let* ((vterm-buf (vterm--internal #'switch-to-buffer "Scratch VTerm"))) + (with-current-buffer vterm-buf + (setq popper-popup-status 'raised) + (olivetti-mode) + (add-function :before delete-frame-functions #'joe/kill-vterm-scratch) + (add-hook 'kill-buffer-hook #'joe/kill-frame)))) +#+end_src + ** Undo Fu #+begin_src emacs-lisp (require 'undo-fu)