diff options
Diffstat (limited to 'tests/test-ai-term--f9-in-term.el')
| -rw-r--r-- | tests/test-ai-term--f9-in-term.el | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/tests/test-ai-term--f9-in-term.el b/tests/test-ai-term--f9-in-term.el deleted file mode 100644 index 0477f2517..000000000 --- a/tests/test-ai-term--f9-in-term.el +++ /dev/null @@ -1,58 +0,0 @@ -;;; test-ai-term--f9-in-term.el --- F9 reaches Emacs from inside an agent buffer -*- lexical-binding: t; -*- - -;;; Commentary: -;; ghostel's semi-char mode forwards keys not in `ghostel-keymap-exceptions' to -;; the terminal program, so a plain <f9> typed while point is in an agent -;; buffer would be sent to the program instead of toggling the agent -- exactly -;; the case when the agent buffer fills the frame. `ai-term.el' re-binds the F9 -;; family in `ghostel-mode-map'. These tests require ghostel (which defines -;; `ghostel-mode-map' and lets ai-term's `with-eval-after-load' fire) BEFORE -;; ai-term, then confirm the bindings landed (and the global ones are intact). -;; `(require 'ghostel)' does not load the native module, so this stays light. - -;;; Code: - -(require 'ert) -(require 'package) - -(setq package-user-dir (expand-file-name "elpa" user-emacs-directory)) -(package-initialize) -(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) -(require 'ghostel) -(require 'ai-term) - -(ert-deftest test-ai-term-f9-bound-in-ghostel-mode-map () - "Normal: <f9> in `ghostel-mode-map' runs the agent toggle." - (should (eq (keymap-lookup ghostel-mode-map "<f9>") #'cj/ai-term))) - -(ert-deftest test-ai-term-f9-family-bound-in-ghostel-mode-map () - "Normal: the C-/s-/M- F9 variants are bound in `ghostel-mode-map' too. -`s-<f9>' steps to the next agent; `M-<f9>' closes an agent via -`cj/ai-term-close'." - (should (eq (keymap-lookup ghostel-mode-map "C-<f9>") #'cj/ai-term-pick-project)) - (should (eq (keymap-lookup ghostel-mode-map "s-<f9>") #'cj/ai-term-next)) - (should (eq (keymap-lookup ghostel-mode-map "M-<f9>") #'cj/ai-term-close))) - -(ert-deftest test-ai-term-f9-still-bound-globally () - "Normal: the global F9 family bindings are intact. -`<f9>' toggles the ai-term agent window; `C-<f9>' picks a project -agent; `s-<f9>' steps to the next agent; `M-<f9>' closes an agent -via `cj/ai-term-close'." - (should (eq (lookup-key (current-global-map) (kbd "<f9>")) #'cj/ai-term)) - (should (eq (lookup-key (current-global-map) (kbd "C-<f9>")) #'cj/ai-term-pick-project)) - (should (eq (lookup-key (current-global-map) (kbd "s-<f9>")) #'cj/ai-term-next)) - (should (eq (lookup-key (current-global-map) (kbd "M-<f9>")) #'cj/ai-term-close))) - -(ert-deftest test-ai-term-f9-family-in-keymap-exceptions () - "Regression: the F9 family is in `ghostel-keymap-exceptions' so semi-char -mode lets it reach Emacs instead of forwarding it to the terminal program. -Binding in `ghostel-mode-map' alone is not enough -- the semi-char map outranks -it and forwards any key not in the exceptions to the pty." - (dolist (key '("<f9>" "C-<f9>" "s-<f9>" "M-<f9>")) - (should (member key ghostel-keymap-exceptions))) - ;; The rebuilt semi-char map must no longer forward <f9> to the pty. - (should-not (eq (keymap-lookup ghostel-semi-char-mode-map "<f9>") - 'ghostel--send-event))) - -(provide 'test-ai-term--f9-in-term) -;;; test-ai-term--f9-in-term.el ends here |
