mirror of
https://github.com/pestctrl/emacs-config.git
synced 2026-02-16 08:14:15 +00:00
I forgot why I did this refactor
This commit is contained in:
parent
781190964a
commit
eafeaccf5c
1 changed files with 44 additions and 5 deletions
|
|
@ -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))))))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue