aboutsummaryrefslogtreecommitdiff
path: root/modules/eshell-vterm-config.el
diff options
context:
space:
mode:
Diffstat (limited to 'modules/eshell-vterm-config.el')
-rw-r--r--modules/eshell-vterm-config.el48
1 files changed, 11 insertions, 37 deletions
diff --git a/modules/eshell-vterm-config.el b/modules/eshell-vterm-config.el
index dff31e4d..165e0437 100644
--- a/modules/eshell-vterm-config.el
+++ b/modules/eshell-vterm-config.el
@@ -396,6 +396,7 @@ ai-vterm.el is loaded."
(require 'cl-lib)
(require 'seq)
(require 'cj-window-geometry)
+(require 'cj-window-toggle)
(defcustom cj/vterm-toggle-window-height 0.7
"Default fraction of frame height for the F12 vterm window.
@@ -446,47 +447,20 @@ FRAME defaults to the selected frame. Minibuffer is excluded."
Default direction is `below' to match F12's traditional bottom
split when WINDOW fills the frame's root area."
- (when (window-live-p window)
- (let* ((dir (cj/window-direction window 'below))
- (size (cj/window-body-size window dir)))
- (setq cj/--vterm-toggle-last-direction dir
- cj/--vterm-toggle-last-size size))))
+ (cj/window-toggle-capture-state
+ window 'below
+ 'cj/--vterm-toggle-last-direction
+ 'cj/--vterm-toggle-last-size))
(defun cj/--vterm-toggle-display-saved (buffer alist)
"Display-buffer action: split per saved direction and body size.
-Reads `cj/--vterm-toggle-last-direction' and
-`cj/--vterm-toggle-last-size', falling back to `below' and
-`cj/vterm-toggle-window-height' when nil. The cardinal direction
-is mapped to its frame-edge variant (`right' -> `rightmost', etc.)
-so the new vterm always lands at the same frame edge it came from
-regardless of which window is selected. An integer size is wrapped
-in a `(body-columns . N)' / `(body-lines . N)' cons so the body
-width or height is set explicitly, divider-independent. A float
-size passes through as a fraction of the new window's parent."
- (let* ((direction (or cj/--vterm-toggle-last-direction 'below))
- (edge-direction (or (cj/cardinal-to-edge-direction direction)
- 'bottom))
- (size (or cj/--vterm-toggle-last-size cj/vterm-toggle-window-height))
- (size-key (if (memq direction '(right left))
- 'window-width
- 'window-height))
- (body-tag (if (memq direction '(right left))
- 'body-columns
- 'body-lines))
- (size-value (if (integerp size)
- (cons body-tag size)
- size))
- (filtered (cl-remove-if
- (lambda (cell)
- (memq (car-safe cell)
- '(direction window-width window-height)))
- alist))
- (effective (append
- (list (cons 'direction edge-direction)
- (cons size-key size-value))
- filtered)))
- (display-buffer-in-direction buffer effective)))
+Delegates to `cj/window-toggle-display-saved' against the F12 state
+vars, falling back to `below' and `cj/vterm-toggle-window-height'."
+ (cj/window-toggle-display-saved
+ buffer alist
+ 'cj/--vterm-toggle-last-direction 'below
+ 'cj/--vterm-toggle-last-size cj/vterm-toggle-window-height))
(defun cj/--vterm-toggle-display-rule-list ()
"Return the `display-buffer-alist' entry list installed by F12.