aboutsummaryrefslogtreecommitdiff
path: root/emacs/.emacs.d/lisp/my/my-prog.el
diff options
context:
space:
mode:
authorYuchen Pei <id@ypei.org>2023-10-14 12:18:38 +1100
committerYuchen Pei <id@ypei.org>2023-10-14 12:18:38 +1100
commit0383ed224a7708315f3da83d5e809c597b0e888a (patch)
tree8e2c180e2e9b41dc7c51b0bbe210d79c840944a5 /emacs/.emacs.d/lisp/my/my-prog.el
parentad1cdc1f55bf90f635365b728b91888edf31fa6e (diff)
[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.
Diffstat (limited to 'emacs/.emacs.d/lisp/my/my-prog.el')
-rw-r--r--emacs/.emacs.d/lisp/my/my-prog.el29
1 files changed, 21 insertions, 8 deletions
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)