delay symbol lookup for quicklisp

This commit is contained in:
David Botton 2022-09-27 22:53:37 -04:00
parent fa23c4d881
commit 9eb007c70e
5 changed files with 33 additions and 24 deletions

View file

@ -1,11 +1,20 @@
(in-package :clog-tools)
(defun projects-load (fname)
(funcall (read-from-string "ql:quickload") fname))
(defun projects-list-local-systems ()
(funcall (read-from-string "ql:list-local-systems")))
(defun projects-local-directories ()
(symbol-value (read-from-string "ql:*local-project-directories*")))
(defun projects-setup (panel)
(let* ((app (connection-data-item panel "builder-app-data")))
(when (uiop:directory-exists-p #P"~/common-lisp/")
(pushnew #P"~/common-lisp/" ql:*local-project-directories*))
(pushnew #P"~/common-lisp/" (symbol-value (read-from-string "ql:*local-project-directories*"))))
(add-select-option (project-list panel) "None" "None")
(dolist (n (sort (ql:list-local-systems) #'string-lessp))
(dolist (n (sort (projects-list-local-systems) #'string-lessp))
(add-select-option (project-list panel) n n))
(cond((current-project app)
(setf (text-value (project-list panel)) (current-project app))
@ -167,10 +176,10 @@
(t
(flet ((load-proj (answer)
(cond (answer
(ql:quickload sel)
(projects-load sel)
(ignore-errors
(ql:quickload (format nil "~A/tools" sel)))
(ql:quickload sel)
(projects-load (format nil "~A/tools" sel)))
(projects-load sel)
(projects-populate panel))
(t
(setf (current-project app) nil)
@ -191,10 +200,10 @@
(lambda (result)
(when result
(add-dep-to-defsystem sys result)
(ql:quickload sys)
(projects-load sys)
(projects-populate panel)))
:height 230)
(ql:quickload sys))
(projects-load sys))
(defun projects-add-plugin (panel sys)
(input-dialog panel (format nil "Enter plugin name (without /tools), ~
@ -203,9 +212,9 @@
(when result
(let* ((s (format nil "~A/tools" sys)))
(add-dep-to-defsystem s (format nil "~A/tools" result))
(ql:quickload s))
(projects-load s))
(add-dep-to-defsystem sys result)
(ql:quickload sys)
(projects-load sys)
(projects-populate panel)))
:height 250))
@ -254,10 +263,10 @@
path result)
:action-if-exists nil)
(add-file-to-defsystem sys result :file)
(ql:quickload sys)
(projects-load sys)
(projects-populate panel))))
:height 230)
(ql:quickload sys))
(projects-load sys))
(defun projects-add-clog (panel sys)
(input-dialog panel (format nil "Enter clog component name (with out .clog), ~
@ -271,14 +280,14 @@
path result)
:action-if-exists nil)
(add-file-to-defsystem s result :clog-file)
(ql:quickload s))
(projects-load s))
(let ((path (asdf:component-pathname
(asdf:find-system sys))))
(write-file "" (format nil "~A~A.lisp"
path result)
:action-if-exists nil)
(add-file-to-defsystem sys result :file)
(ql:quickload sys)
(projects-load sys)
(projects-populate panel))))
:height 250))
@ -317,7 +326,7 @@
(let ((*print-case* :downcase))
(dolist (n (reverse sys-list))
(pprint n s)))))
(ql:quickload system))
(projects-load system))
(defun open-projects-component (target system list)
(let ((disp (select-text target))

View file

@ -1,2 +1,2 @@
<data id="I3871639832" data-in-package="clog-tools" data-custom-slots="(on-done :accessor on-done :initform nil)" data-clog-next-id="5" data-clog-title="project-dir"></data><div data-clog-type="flex-col" data-clog-name="frame" style="display: flex; flex-direction: column; box-sizing: content-box; position: absolute; inset: 10px 10px 10px 12px; justify-content: normal; align-items: center;"><select data-clog-type="listbox" size="4" data-clog-name="project-list" style="box-sizing: content-box; position: static; width: 400px; height: 200px;" data-on-create="(add-select-options (project-list panel) ql:*local-project-directories*)
(setf (value (project-list panel)) (car ql:*local-project-directories*))" data-on-double-click="(funcall (on-done panel) panel)"></select><button data-clog-type="button" data-clog-name="select-button" style="box-sizing: content-box; position: static;" data-on-click="(funcall (on-done panel) panel)" class="w3-margin">Select Project Directory</button></div>
<data id="I3871639832" data-in-package="clog-tools" data-custom-slots="(on-done :accessor on-done :initform nil)" data-clog-next-id="5" data-clog-title="project-dir"></data><div data-clog-type="flex-col" data-clog-name="frame" style="display: flex; flex-direction: column; box-sizing: content-box; position: absolute; inset: 10px 10px 10px 12px; justify-content: normal; align-items: center;"><select data-clog-type="listbox" size="4" data-clog-name="project-list" style="box-sizing: content-box; position: static; width: 400px; height: 200px;" data-on-create="(add-select-options (project-list panel) (projects-local-directories))
(setf (value (project-list panel)) (car (projects-local-directories)))" data-on-double-click="(funcall (on-done panel) panel)"></select><button data-clog-type="button" data-clog-name="select-button" style="box-sizing: content-box; position: static;" data-on-click="(funcall (on-done panel) panel)" class="w3-margin">Select Project Directory</button></div>

View file

@ -25,9 +25,9 @@
(let ((target (project-list panel)))
(declare (ignorable target))
(add-select-options (project-list panel)
quicklisp-client:*local-project-directories*)
(projects-local-directories))
(setf (value (project-list panel))
(car quicklisp-client:*local-project-directories*)))
(car (projects-local-directories))))
(clog:set-on-double-click (project-list panel)
(lambda (target)
(declare (ignorable target))

4
tools/systems.clog vendored
View file

@ -17,13 +17,13 @@
(t
(on-open-file panel :open-file item))))"></select><input type="TEXT" value="" data-clog-type="input" data-clog-name="source-file" style="box-sizing: content-box; position: absolute; left: 10px; top: 332px; width: 560.727px; height: 22.5px;" data-on-double-click="(on-open-file panel :open-file (text-value target))"><div data-clog-type="div" data-clog-name="button-panel" style="box-sizing: content-box; position: absolute; left: 1.0015px; top: 368.991px; width: 572.898px; height: 32.4844px;"><button data-clog-type="button" data-clog-name="reset-list-button" style="box-sizing: content-box; position: absolute; left: 10px; top: 0px; width: 85px; height: 22px;" data-on-click="(asdf-browser-reset panel)">Reset List</button><button data-clog-type="button" data-clog-name="load-new-button" style="box-sizing: content-box; position: absolute; left: 127px; top: 0px; width: 85px; height: 22px;" class="" data-on-click="(clog-gui:input-dialog panel &quot;Load New System:&quot;
(lambda (fname)
(ql:quickload fname)
(projects-load fname)
(asdf-browser-reset panel)
(setf (text-value (loaded-systems panel)) fname)
(asdf-browser-populate panel))
:title &quot;Quickload&quot;)
">Load New</button><button data-clog-type="button" data-clog-name="reload-button" style="box-sizing: content-box; position: absolute; left: 243px; top: 0px; width: 85px; height: 22px;" data-on-click="(let ((fname (text-value (loaded-systems panel))))
(ql:quickload fname)
(projects-load fname)
(setf (text-value (loaded-systems panel)) fname)
(asdf-browser-populate panel))
">Reload</button><button data-clog-type="button" data-clog-name="remove-button" style="box-sizing: content-box; position: absolute; left: 360px; top: 0px; width: 85px; height: 22px;" data-on-click="">Unload</button><button data-clog-type="button" data-clog-name="dir-button" style="box-sizing: content-box; position: absolute; left: 477px; top: 0px; width: 85px;" data-on-click="(on-dir-win panel :dir (asdf:system-source-directory (text-value (loaded-systems panel))))">View Dir</button></div><label for="" data-clog-type="label" data-clog-for="" data-clog-name="asd-label" style="box-sizing: content-box; position: absolute; left: 10px; top: 304.996px;">ASD Project: (double click to edit)</label>

View file

@ -139,7 +139,7 @@
(declare (ignorable target))
(clog-gui:input-dialog panel "Load New System:"
(lambda (fname)
(quicklisp-client:quickload
(projects-load
fname)
(asdf-browser-reset panel)
(setf (text-value
@ -153,7 +153,7 @@
(lambda (target)
(declare (ignorable target))
(let ((fname (text-value (loaded-systems panel))))
(quicklisp-client:quickload fname)
(projects-load fname)
(setf (text-value (loaded-systems panel)) fname)
(asdf-browser-populate panel))))
(clog:set-on-click (dir-button panel)