aboutsummaryrefslogtreecommitdiff
path: root/tests/test-ai-vterm--show-or-create.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-11 13:27:26 -0500
committerCraig Jennings <c@cjennings.net>2026-05-11 13:27:26 -0500
commitc14d6c8d0f669d694dd765d6f592ce6eb72c50f5 (patch)
tree26c45c9f9f77129a8440019a6825a24a1eea028d /tests/test-ai-vterm--show-or-create.el
parentde8659c61e47787c635ad9a6184fcef655ae89d2 (diff)
downloaddotemacs-c14d6c8d0f669d694dd765d6f592ce6eb72c50f5.tar.gz
dotemacs-c14d6c8d0f669d694dd765d6f592ce6eb72c50f5.zip
feat(ai-vterm): order the project picker by most-recently-used
The picker's active group (projects with a live tmux session) used to sort alphabetically. It now leads with projects opened this session, most-recent first, then the rest of the active group alpha, then the no-session group alpha. An in-session list (`cj/--ai-vterm-mru'), pushed to the front by `cj/--ai-vterm-show-or-create' on every open, drives the order. An empty list reproduces the old alphabetical behavior. I also pulled in a fix: `cj/--ai-vterm-tmux-session-name' now sanitizes `.' and `:' in the basename to `_'. tmux disallows those chars in session names and silently rewrites them, so `.emacs.d' really runs in session `aiv-_emacs_d', not `aiv-.emacs.d'. The computed name never matched, so `.emacs.d' was wrongly treated as having no session and landed in the no-session picker group. (A crash-recovery would also spawn a duplicate instead of reattaching.) Sanitizing the same way tmux does keeps the names in sync.
Diffstat (limited to 'tests/test-ai-vterm--show-or-create.el')
-rw-r--r--tests/test-ai-vterm--show-or-create.el9
1 files changed, 6 insertions, 3 deletions
diff --git a/tests/test-ai-vterm--show-or-create.el b/tests/test-ai-vterm--show-or-create.el
index 0a3dbde5..01083f84 100644
--- a/tests/test-ai-vterm--show-or-create.el
+++ b/tests/test-ai-vterm--show-or-create.el
@@ -57,8 +57,10 @@ VARS is a plist of capture variable names: :calls, :strings, :returns,
(kill-buffer name)))
(ert-deftest test-ai-vterm--show-or-create-creates-when-buffer-missing ()
- "Normal: no existing buffer -> vterm called once, launch cmd sent."
- (let ((name "agent [normal-create-test]"))
+ "Normal: no existing buffer -> vterm called once, launch cmd sent, the
+project recorded at the front of the MRU list."
+ (let ((name "agent [normal-create-test]")
+ (cj/--ai-vterm-mru nil))
(test-ai-vterm--cleanup name)
(unwind-protect
(test-ai-vterm--with-mock-vterm (:calls calls :strings strings
@@ -68,7 +70,8 @@ VARS is a plist of capture variable names: :calls, :strings, :returns,
(should (equal strings
(list (cj/--ai-vterm-launch-command "/tmp/some-project"))))
(should (= returns 1))
- (should (equal ddir "/tmp/some-project")))
+ (should (equal ddir "/tmp/some-project"))
+ (should (equal (car cj/--ai-vterm-mru) "/tmp/some-project")))
(test-ai-vterm--cleanup name))))
(ert-deftest test-ai-vterm--show-or-create-displays-existing-when-process-live ()