YZ7A7VE5MT62NTR4OEMHSXANPXCF4MAEHHDHXEHTU2XZW45ISGKQC
3OJN37CYS6M7WTKN6U5RMTWEGUQW7L73ILMUXQGK7XZK4O6PIXPAC
RXCY7LD6ZRIOIKZEYKLMCYPMQPXF4DOEEFBDLVR2B22BXLZJFFBQC
A3TVGLVHSVLMEHLHB3TPBSD3QGNVGX3DIK6BEBDTTHWBNW4ALMRAC
SYJNWC55OP7SD3BPXWVEHCCMSNZTAGX454OSFZROWZKWLOU5MP2AC
K4KPTJTYRAJID6IBUIXMLOUKQ7J7XXHHFNSJHMYHDU5IA7ZJXABQC
OA42CHZKG3L5IWVBL5CWZJQCY56VWNGEHTSITKLWORFVMYYFUL5QC
LVIAMWRNGZZVDNBCHOIVFDUTIDUEPNYV4OO5HT5TWEVSY3I7JZ2AC
(defun lp (git-url)
(let* ((uri (if (and (not (net.uri:uri-p git-url))
(find #\@ git-url))
(puri:parse-uri git-url)
git-url))
(target (merge-pathnames (make-pathname :directory
(list :relative
"local-projects"
(etypecase uri
(puri:uri (car (last (puri:uri-parsed-path uri))))
(string (subseq uri
(or (1+
(position #\/ (string-right-trim "/" uri)
:from-end t))
0))))))
ql:*quicklisp-home*)))
(legit:clone (etypecase git-url
(puri:uri (puri:render-uri git-url nil))
(string git-url))
(namestring target))))
(uiop:with-upgradability ()
(defclass fw-define-op (asdf:define-op)
((%systems-before :initarg :systems-before :reader systems-before)
(%new-systems :initarg :new-systems :accessor new-systems)))
(defmethod asdf:operate :before ((o fw-define-op) (c asdf:system) &key)
(setf (slot-value o '%systems-before) (asdf:registered-systems)))
(defmethod asdf:operate :after ((o fw-define-op) (c asdf:system) &key)
(setf (new-systems o) (set-difference (asdf:registered-systems)
(slot-value o '%systems-before)
:test 'equal)))
(defun load-asd (pathname &key name)
"Load system definitions from PATHNAME.
NAME if supplied is the name of a system expected to be defined in that file.
Do NOT try to load a .asd file directly with CL:LOAD. Always use ASDF:LOAD-ASD."
(asdf/session:with-asdf-session ()
;; TODO: use OPERATE, so we consult the cache and only load once per session.
(flet ((do-it (o c) (asdf:operate o c)))
(let ((primary-name (asdf:primary-system-name (or name (pathname-name pathname))))
(operation (asdf:make-operation 'fw-define-op)))
(uiop:if-let (system (asdf:registered-system primary-name))
(progn
;; We already determine this to be obsolete ---
;; or should we move some tests from find-system to check for up-to-date-ness here?
(setf (asdf/action:component-operation-time operation system) t
(asdf/system:definition-dependency-list system) nil
(asdf/system:definition-dependency-set system)
(uiop:list-to-hash-set nil))
(do-it operation system))
(let ((system (make-instance 'asdf/system:undefined-system
:name primary-name :source-file pathname)))
(asdf/system-registry:register-system system)
(unwind-protect (do-it operation system)
(when (typep system 'asdf/system:undefined-system)
(asdf:clear-system system))))))))))
#.(uiop:define-package :fwoar-user
(:export :*term-size*)
#.(append '(:mix :cl)
(mapcar #'package-name (package-use-list :cl-user))
'(:alexandria :serapeum :fw.lu)))
#.(uiop:define-package :fwoar-user
(:export :*term-size*)
#.(append '(:mix :cl)
(mapcar #'package-name (package-use-list :cl-user))
'(:alexandria :serapeum :fw.lu)))
(set-dispatch-macro-character #\# #\!
(lambda (stream c n)
(declare (ignore c n))
(read-line stream)
`(eval-when (:compile-toplevel :load-toplevel :execute)
(pushnew :noscript *features*))))
(set-dispatch-macro-character #\# #\!
(lambda (stream c n)
(declare (ignore c n))
(read-line stream)
`(eval-when (:compile-toplevel :load-toplevel :execute)
(pushnew :noscript *features*))))
(eval-when (:compile-toplevel :load-toplevel :execute)
(cffi:defcstruct winsize
(ws_row :unsigned-short)
(ws_col :unsigned-short)
(ws_xpixel :unsigned-short)
(ws_ypixel :unsigned-short))
(eval-when (:compile-toplevel :load-toplevel :execute)
(cffi:defcstruct winsize
(ws_row :unsigned-short)
(ws_col :unsigned-short)
(ws_xpixel :unsigned-short)
(ws_ypixel :unsigned-short))
(defun get-term-size ()
(flet ((ioctl-gwinsz (fd)
(cffi:with-foreign-object (ptr '(:pointer (:struct winsize)))
(let* ((res (osicat-posix:ioctl fd osicat-posix:tiocgwinsz ptr)))
(if (= res 0)
(cffi:with-foreign-slots ((ws_row ws_col) ptr (:struct winsize))
(list ws_row ws_col))
(format t "~&error~%"))))))
(loop for x from 0 to 2
for res = (handler-case (ioctl-gwinsz x)
(osicat-posix:enotty (c) c))
finally (return res)))))
(defun get-term-size ()
(flet ((ioctl-gwinsz (fd)
(cffi:with-foreign-object (ptr '(:pointer (:struct winsize)))
(let* ((res (osicat-posix:ioctl fd osicat-posix:tiocgwinsz ptr)))
(if (= res 0)
(cffi:with-foreign-slots ((ws_row ws_col) ptr (:struct winsize))
(list ws_row ws_col))
(format t "~&error~%"))))))
(loop for x from 0 to 2
for res = (handler-case (ioctl-gwinsz x)
(osicat-posix:enotty (c) c))
finally (return res)))))