diff --git a/emacs-dev-config-modern.el b/emacs-dev-config-modern.el index 05e8846..ef096a8 100644 --- a/emacs-dev-config-modern.el +++ b/emacs-dev-config-modern.el @@ -164,11 +164,11 @@ :ensure t :hook (prog-mode . origami-mode) :bind (:map origami-mode-map - ("C-c f f" . origami-toggle-node) - ("C-c f o" . origami-open-node) - ("C-c f c" . origami-close-node) - ("C-c f a" . origami-close-all-nodes) - ("C-c f A" . origami-open-all-nodes)))) + ("C-c o f" . origami-toggle-node) + ("C-c o o" . origami-open-node) + ("C-c o c" . origami-close-node) + ("C-c o a" . origami-close-all-nodes) + ("C-c o A" . origami-open-all-nodes)))) (defun dev-mode-modern-setup-keybindings () "Setup development-specific keybindings." diff --git a/emacs-dev-config.el b/emacs-dev-config.el index fb17261..eecd05f 100644 --- a/emacs-dev-config.el +++ b/emacs-dev-config.el @@ -153,20 +153,20 @@ (use-package origami :ensure t :config - ;; Define global keybindings for origami - (global-set-key (kbd "C-c f f") 'origami-toggle-node) - (global-set-key (kbd "C-c f o") 'origami-open-node) - (global-set-key (kbd "C-c f c") 'origami-close-node) - (global-set-key (kbd "C-c f a") 'origami-close-all-nodes) - (global-set-key (kbd "C-c f A") 'origami-open-all-nodes) - (global-set-key (kbd "C-c f t") 'origami-toggle-all-nodes) - (global-set-key (kbd "C-c f r") 'origami-recursively-toggle-node) - (global-set-key (kbd "C-c f R") 'origami-open-node-recursively) - (global-set-key (kbd "C-c f n") 'origami-next-fold) - (global-set-key (kbd "C-c f p") 'origami-previous-fold) - (global-set-key (kbd "C-c f s") 'origami-show-only-node) - (global-set-key (kbd "C-c f u") 'origami-undo) - (global-set-key (kbd "C-c f d") 'origami-redo) + ;; Define global keybindings for origami (using C-c o prefix to avoid conflict) + (global-set-key (kbd "C-c o f") 'origami-toggle-node) + (global-set-key (kbd "C-c o o") 'origami-open-node) + (global-set-key (kbd "C-c o c") 'origami-close-node) + (global-set-key (kbd "C-c o a") 'origami-close-all-nodes) + (global-set-key (kbd "C-c o A") 'origami-open-all-nodes) + (global-set-key (kbd "C-c o t") 'origami-toggle-all-nodes) + (global-set-key (kbd "C-c o r") 'origami-recursively-toggle-node) + (global-set-key (kbd "C-c o R") 'origami-open-node-recursively) + (global-set-key (kbd "C-c o n") 'origami-next-fold) + (global-set-key (kbd "C-c o p") 'origami-previous-fold) + (global-set-key (kbd "C-c o s") 'origami-show-only-node) + (global-set-key (kbd "C-c o u") 'origami-undo) + (global-set-key (kbd "C-c o d") 'origami-redo) ;; Setup origami (setq origami-show-fold-header t) @@ -197,8 +197,8 @@ ("C-S-d" . mc/mark-all-like-this) ("C->" . mc/mark-next-like-this) ("C-<" . mc/mark-previous-like-this) - ("C-c m n" . mc/skip-to-next-like-this) - ("C-c m p" . mc/skip-to-previous-like-this) + ("C-c M n" . mc/skip-to-next-like-this) + ("C-c M p" . mc/skip-to-previous-like-this) ("C-S-" . mc/add-cursor-on-click))) (use-package expand-region diff --git a/lisp/init-keybindings.el b/lisp/init-keybindings.el index de581e1..97e412a 100644 --- a/lisp/init-keybindings.el +++ b/lisp/init-keybindings.el @@ -52,5 +52,14 @@ With argument ARG, make ARG copies." (global-set-key (kbd "C-c b") 'switch-to-previous-buffer) +;;; Alt-Tab style buffer cycling +;; Cycle through buffers with M-Tab (Alt-Tab) +(global-set-key (kbd "M-") 'next-buffer) +(global-set-key (kbd "M-S-") 'previous-buffer) + +;; Alternative: Use C-Tab if M-Tab is captured by window manager +(global-set-key (kbd "C-") 'next-buffer) +(global-set-key (kbd "C-S-") 'previous-buffer) + (provide 'init-keybindings) ;;; init-keybindings.el ends here \ No newline at end of file diff --git a/lisp/init-terminal.el b/lisp/init-terminal.el index af7868e..08160b0 100644 --- a/lisp/init-terminal.el +++ b/lisp/init-terminal.el @@ -40,23 +40,29 @@ (local-set-key (kbd "C-c C-n") 'eat-next-shell-prompt))) ;; Auto-close on exit codes - (defun eat-close-on-exit () - "Close eat buffer automatically when shell exits." - (when (and (eq major-mode 'eat-mode) - (not (process-live-p (get-buffer-process (current-buffer))))) - (kill-buffer))) + (defun eat-close-on-exit (process event) + "Close eat buffer automatically when shell exits. +PROCESS is the eat process, EVENT is the exit event string." + (when (and (string-match-p "\\(finished\\|exited\\)" event) + (buffer-live-p (process-buffer process))) + (with-current-buffer (process-buffer process) + (when (eq major-mode 'eat-mode) + (kill-buffer))))) ;; Add hook to close buffer when process exits (add-hook 'eat-exit-hook 'eat-close-on-exit) ;; Alternative: Close with a delay to see exit message - (defun eat-close-on-exit-with-delay () - "Close eat buffer with a small delay after exit." - (run-with-timer 0.5 nil - (lambda (buf) - (when (buffer-live-p buf) - (kill-buffer buf))) - (current-buffer))) + (defun eat-close-on-exit-with-delay (process event) + "Close eat buffer with a small delay after exit. +PROCESS is the eat process, EVENT is the exit event string." + (when (and (string-match-p "\\(finished\\|exited\\)" event) + (buffer-live-p (process-buffer process))) + (run-with-timer 0.5 nil + (lambda (buf) + (when (buffer-live-p buf) + (kill-buffer buf))) + (process-buffer process)))) ;; Uncomment this and comment the previous hook if you want a delay ;; (add-hook 'eat-exit-hook 'eat-close-on-exit-with-delay)