From 588b676a0d6e4cacd30810239e6924128c102198 Mon Sep 17 00:00:00 2001 From: Ravi R Kiran Date: Sun, 9 May 2021 21:44:23 -0500 Subject: Run focus advice only once It'd be nice to make it coexist with multiple terminal types, but don't know how to do it yet. diff --git a/init.el b/init.el index 8f8b26f..90bae9c 100644 --- a/init.el +++ b/init.el @@ -94,6 +94,7 @@ (define-key local-function-key-map (kbd "C-") #'kill-word) (define-key local-function-key-map (kbd "") #'delete-forward-char)) (add-hook 'terminal-init-xterm-kitty-hook #'ravi/get-rid-of-xterm-key-translations) + (add-hook 'terminal-init-xterm-kitty-hook #'xterm-kitty-add-select-frame-set-input-focus-advice) ;; Don't defer since we will use xterm-kitty-make-binding-sequence elsewhere :ensure nil) diff --git a/lisp/term/xterm-kitty.el b/lisp/term/xterm-kitty.el index 9706fbb..bc65e6d 100644 --- a/lisp/term/xterm-kitty.el +++ b/lisp/term/xterm-kitty.el @@ -456,12 +456,19 @@ function is almost equivalent to 'event-convert-list'." (when (xterm-kitty-in-use) ;; Terminal emacs thinks that only one frame is ever visible (funcall old-function window minibuf (if (eql all-frames 'visible) t all-frames)))) -(defun xterm-kitty-add-select-frame-set-input-focus-advice () + +(defvar xterm-kitty--skip-select-frame-set-input-focus-advice nil + "Set to true to disable setting input focus advice") +(defun xterm-kitty-add-select-frame-set-input-focus-advice (&optional print-message) "Advise SELECT-FRAME-SET-INPUT-FOCUS to handle xterm-kitty terminal windows" - (interactive) - (advice-add 'select-frame-set-input-focus :around #'xterm-kitty-select-frame-set-input-focus-advice) - (advice-add 'next-window :around #'xterm-kitty-visible-window-advice) - (advice-add 'previous-window :around #'xterm-kitty-visible-window-advice)) + (interactive "p") + (if xterm-kitty--skip-select-frame-set-input-focus-advice + (when print-message + (message "Input focus advice for selecting frames disabled")) + (advice-add 'select-frame-set-input-focus :around #'xterm-kitty-select-frame-set-input-focus-advice) + (advice-add 'next-window :around #'xterm-kitty-visible-window-advice) + (advice-add 'previous-window :around #'xterm-kitty-visible-window-advice) + (setq xterm-kitty--skip-select-frame-set-input-focus-advice t))) (defvar xterm-kitty--new-os-window-command-string "\eP@kitty-cmd{\"cmd\":\"new-window\",\"version\":[0,19,3],\"no_response\":true,\"payload\":{\"window_type\":\"os\"}}\e\\" -- cgit v0.10.1