changeset 496: | 6359b351657a |
parent: | 33b0614ee220 |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Mon, 01 Jul 2024 15:50:23 -0400 |
permissions: | -rw-r--r-- |
description: | tmux controller, cli upgrades |
471
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
1 | ;;; term.lisp --- Terminal Tools |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
2 | |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
3 | ;; Control and spawn terminal consoles from Lisp. |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
4 | |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
5 | ;;; Commentary: |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
6 | |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
7 | ;; This package is intended to make it easier to work with interactive |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
8 | ;; terminal programs in a Lispy manner. |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
9 | |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
10 | ;;; Code: |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
11 | (in-package :cli/tools/term) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
12 | |
496
6359b351657a
tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents:
471
diff
changeset
|
13 | (deferror terminal-error (simple-error error) ()) |
6359b351657a
tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents:
471
diff
changeset
|
14 | |
6359b351657a
tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents:
471
diff
changeset
|
15 | (defun terminal-error (fmt &rest args) |
6359b351657a
tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents:
471
diff
changeset
|
16 | (error 'terminal-error :format-arguments args :format-control fmt)) |
6359b351657a
tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents:
471
diff
changeset
|
17 | |
471
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
18 | (defparameter *terminal* (or (find-exe "alacritty") (find-exe "xterm"))) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
19 | |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
20 | (defparameter *alacritty-config-path* (merge-pathnames ".config/alacritty.toml" (user-homedir-pathname))) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
21 | |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
22 | (defun run-terminal (&rest args) |
496
6359b351657a
tmux controller, cli upgrades
Richard Westhaver <ellis@rwest.io>
parents:
471
diff
changeset
|
23 | (apply #'sb-ext:run-program *terminal* args)) |
471
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
24 | |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
25 | (defmacro with-terminal ((sym &key args input output) &body body) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
26 | `(let ((,sym (run-terminal ,args |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
27 | ,@(when input '(:input :stream)) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
28 | ,@(when output '(:output :stream)) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
29 | :wait nil))) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
30 | (let (,@(when input `((,input (sb-ext:process-input ,sym)))) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
31 | ,@(when output `((,output (sb-ext:process-output ,sym))))) |
33b0614ee220
cli tools, added vc-bundle, vc-unbundle generics
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
32 | ,@body))) |