about summary refs log tree commit diff stats
path: root/btech.lsp
blob: 5a4d11b6bcd2c872f472ff3f0e55d5b9fb4fc4ce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/home/dbane/openlisp-10.9.0/uxlisp -shell
;;; ISLisp is fine so long as you do "read-line" from the same place you call the entry point fun.
;;; So -shell with an immediate call doesn't work, something is closed after reading the Lisp source.
;;; -shell -keep, supplying the call from the keyboard works fine.
;;;
;;; Calling entry point from a Lisp CLI (after "load") also works.
;;; And this may be what I end up with, if I'm doing a view in Emacs.
(require "cmd")
(require "builtins")
(defpackage #:btech
  (:use #:cmd #:builtins)
  (:export
    #:main))
(in-package #:btech)
;; Favour symbols & objects over C-like numbers
(defconstant +cmds+ (list
                      (create-tab #'bt-quit "QUIT" 1)
                      (create-tab #'help "help" 2)
                      (create-tab #'look "look" 2)))
(defun main ()
  (read-line)                           ; Throw away LF
  (format (standard-output) "> ")
  (let* ((tab (lookup (parse (read-line)) +cmds+))
          (f (fun tab)))
    (funcall f)))                       ; I *think* this is better than (flet ...
(provide "btech")
(main)