I forgot why I did this refactor

This commit is contained in:
Benson Chu 2026-01-27 14:50:41 -06:00
parent 781190964a
commit eafeaccf5c

View file

@ -49,6 +49,36 @@
(defvar mvt/regex (defvar mvt/regex
(rx (and "*" (group (+ nonl)) "-vterm<" (group (+ digit)) ">" "*"))) (rx (and "*" (group (+ nonl)) "-vterm<" (group (+ digit)) ">" "*")))
;; Maybe instead of this, we should do an add-buffer instead
(defun mvt/find-available-name (tab-name)
(let ((mvti (gethash (intern tab-name) mvt/info))
final-name)
(while (not final-name)
(let* ((index (or (pop (slot-value mvti 'free-numbers))
(cl-incf (slot-value mvti 'max-number))))
(name (mvt/format-buffer-name tab-name index)))
(when (not (get-buffer name))
(setq final-name name))))
final-name))
(defun mvt/add-buffer (tab-name vterm-buffer)
(interactive
(list (alist-get 'name (tab-bar--current-tab))
(vterm--internal #'ignore)))
(let* ((mvti (gethash (intern tab-name) mvt/info))
(name (mvt/find-available-name tab-name))
vterm-name)
(with-current-buffer vterm-buffer
(mvt/minor-mode)
(rename-buffer name))
(-->
vterm-buffer
(setf (slot-value mvti 'recent-buffer)
it)
(if (called-interactively-p)
(switch-to-buffer it)
it))))
(defun mvt/create-buffer (tab-name) (defun mvt/create-buffer (tab-name)
(interactive (interactive
(list (alist-get 'name (tab-bar--current-tab)))) (list (alist-get 'name (tab-bar--current-tab))))
@ -70,14 +100,23 @@
it)))) it))))
(defun mvt/get-all-buffers (tab-name) (defun mvt/get-all-buffers (tab-name)
(->> (buffer-list) (--> (buffer-list)
(remove-if-not (remove-if-not
(lambda (buff) (lambda (buff)
(with-current-buffer buff (with-current-buffer buff
(and (eq major-mode 'vterm-mode) (and (eq major-mode 'vterm-mode)
(string-match-p (string-match-p
(rx "*" (literal tab-name) "-vterm<" (+ digit) ">*") (rx "*" (literal tab-name) "-vterm<" (+ digit) ">*")
(buffer-name buff)))))))) (buffer-name buff)))))
it)
(sort
it
:key
(lambda (buff)
(let ((name (buffer-name buff)))
(string-match (rx "*" (literal tab-name) "-vterm<" (group (+ digit)) ">*")
name)
(string-to-number (match-string 1 name)))))))
;; (defun mvt/get-all-buffers (tab-name) ;; (defun mvt/get-all-buffers (tab-name)
;; (let* ((tab-sym (intern tab-name)) ;; (let* ((tab-sym (intern tab-name))
@ -147,7 +186,7 @@
(defvar mvt/minor-mode-map (defvar mvt/minor-mode-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(define-key map (kbd "M-n") #'mvt/next) (define-key map (kbd "M-n") #'mvt/next)
(define-key map (kbd "M-c") #'mvt/create-buffer) (define-key map (kbd "M-c") #'mvt/add-buffer)
map)) map))
(define-minor-mode mvt/minor-mode "" (define-minor-mode mvt/minor-mode ""
@ -168,7 +207,7 @@
(buffer-live-p buffer) (buffer-live-p buffer)
(not arg) (not arg)
buffer) buffer)
(mvt/create-buffer tab-name)))))) (call-interactively #'mvt/add-buffer))))))
(defun mvt/find-all-terms-in-tab (tab-name) (defun mvt/find-all-terms-in-tab (tab-name)
(remove-if-not #'(lambda (b) (remove-if-not #'(lambda (b)
@ -198,7 +237,7 @@
(defun mvt/close-tab (orig) (defun mvt/close-tab (orig)
(let ((current-tab-name (alist-get 'name (tab-bar--current-tab)))) (let ((current-tab-name (alist-get 'name (tab-bar--current-tab))))
(when (funcall orig) (when (funcall orig)
(dolist (b (mvt/find-all-terms-in-tab old-tab-name)) (dolist (b (mvt/find-all-terms-in-tab current-tab-name))
(with-current-buffer b (with-current-buffer b
(vterm-send-C-d)))))) (vterm-send-C-d))))))