changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/cli/tools/term.lisp

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)))