Emacs: WIP vterm scratchpad

This commit is contained in:
Joseph Ferano 2023-08-21 18:59:25 +07:00
parent 8f311d6531
commit 351cf8ce92

View File

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