From 0383ed224a7708315f3da83d5e809c597b0e888a Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Sat, 14 Oct 2023 12:18:38 +1100 Subject: [emacs] Fix notes and shell cycle and creation. One function to switch or cycle default notes indirect buffers. One to switch or cycle shell mode buffers. --- emacs/.emacs.d/lisp/my/my-prog.el | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'emacs/.emacs.d/lisp/my/my-prog.el') diff --git a/emacs/.emacs.d/lisp/my/my-prog.el b/emacs/.emacs.d/lisp/my/my-prog.el index 798b4cd..a0e0ce7 100644 --- a/emacs/.emacs.d/lisp/my/my-prog.el +++ b/emacs/.emacs.d/lisp/my/my-prog.el @@ -137,20 +137,33 @@ (require 'my-buffer) -(defun my-switch-or-create-shell-buffer (arg) +(defvar my-shell-buffer-list nil + "List of shell mode buffers.") + +(defun my-shell-open-or-cycle (arg) "Switch to or create a shell buffer. If there's no buffer with shell mode, or with a prefix-arg, create a shell buffer using `my-shell-with-directory'" (interactive "P") (if (or arg - (not (seq-filter - (lambda (buffer) - (with-current-buffer buffer - (derived-mode-p 'shell-mode))) - (buffer-list)))) - (call-interactively 'my-shell-with-directory) - (my-buffer-quick-major-mode 'shell-mode))) + (not (my-buffer-find-mode 'shell-mode))) + (progn + (call-interactively 'my-shell-with-directory) + (setq my-shell-buffer-list + (seq-filter 'my-buffer-with-same-major-mode-p + (buffer-list)))) + (if (eq last-command 'my-shell-open-or-cycle) + (progn + (setq my-shell-buffer-list + (my-list-cycle my-shell-buffer-list)) + (switch-to-buffer (car my-shell-buffer-list))) + (let ((buffer + (my-buffer-find-mode 'shell-mode))) + (switch-to-buffer buffer) + (setq my-shell-buffer-list + (seq-filter 'my-buffer-with-same-major-mode-p + (buffer-list))))))) ;;; gdb (require 'gdb-mi) -- cgit v1.2.3