diff options
| -rw-r--r-- | modules/org-agenda-frame.el | 5 | ||||
| -rw-r--r-- | tests/test-org-agenda-frame.el | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/modules/org-agenda-frame.el b/modules/org-agenda-frame.el index 8c3659f5..ef541c2f 100644 --- a/modules/org-agenda-frame.el +++ b/modules/org-agenda-frame.el @@ -237,6 +237,11 @@ The default binding for every key not on the allowlist." (define-key map (kbd "r") #'cj/--agenda-frame-safe-redo) (define-key map (kbd "S-<f8>") #'cj/agenda-frame-toggle) (define-key map (kbd "C-M-<f8>") #'cj/org-agenda-refresh-files) + ;; C-x C-c means "close this frame" here. The global + ;; `save-buffers-kill-terminal' must never run in this frame: it was made + ;; by `make-frame', not emacsclient, so with no client to close it falls + ;; back to killing the daemon itself. + (define-key map (kbd "C-x C-c") #'cj/--agenda-frame-close) ;; (d) Input machinery punched through the catch-all. An explicit nil ;; shadows the [t] default in this map, so these fall through to their ;; global bindings. Without the punches, every frame-focus change diff --git a/tests/test-org-agenda-frame.el b/tests/test-org-agenda-frame.el index 0b1062a1..19dab74b 100644 --- a/tests/test-org-agenda-frame.el +++ b/tests/test-org-agenda-frame.el @@ -232,6 +232,14 @@ catch-all denies them and the frame can't be closed by its own key." (should (eq (lookup-key cj/agenda-frame-mode-map (kbd "C-M-<f8>")) 'cj/org-agenda-refresh-files))) +(ert-deftest test-org-agenda-frame-map-C-x-C-c-closes-frame () + "Normal: C-x C-c in the agenda frame closes the frame, not the daemon. +The global save-buffers-kill-terminal would kill Emacs itself here (a +make-frame frame has no client), so the intuitive close gesture must be +remapped to the frame close." + (should (eq (lookup-key cj/agenda-frame-mode-map (kbd "C-x C-c")) + 'cj/--agenda-frame-close))) + (ert-deftest test-org-agenda-frame-map-machinery-punched-through () "Boundary: input machinery is punched through the [t] catch-all. switch-frame events, mouse-wheel scrolling, mouse-1 clicks, and the help |
