diff --git a/tools/clog-builder-ace.lisp b/tools/clog-builder-ace.lisp index 7d608e6..1b9f72a 100644 --- a/tools/clog-builder-ace.lisp +++ b/tools/clog-builder-ace.lisp @@ -336,7 +336,7 @@ var endRange = ~:*~A.session.doc.indexToPosition(endIndex); (when r (when status (setf (advisory-title status) (documentation (read-from-string s) 'function)) - (setf (text status) (string-downcase r)))))))))) + (setf (text-value status) (string-downcase r)))))))))) (clog-ace:set-auto-completion editor t) (setf (clog-ace:theme editor) *editor-theme*) (setf (clog-ace:tab-size editor) *editor-tab-size*) diff --git a/tools/clog-builder-search.lisp b/tools/clog-builder-search.lisp index 7a4ca57..ee381ec 100644 --- a/tools/clog-builder-search.lisp +++ b/tools/clog-builder-search.lisp @@ -5,6 +5,7 @@ (let* ((app (connection-data-item obj "builder-app-data")) (*default-title-class* *builder-title-class*) (*default-border-class* *builder-border-class*) + (lisp-file t) (win (create-gui-window obj :top (+ (menu-bar-height obj) 20) :left 20 :width 1040 :height 600 @@ -16,39 +17,106 @@ (lambda (obj) (declare (ignore obj)) (setf (hiddenp win) t))) - (set-on-window-size-done win (lambda (obj) - (declare (ignore obj)) - (clog-ace:resize (preview-ace panel)))) + (set-on-window-size win (lambda (obj) + (declare (ignore obj)) + (clog-ace:resize (preview-ace panel)))) + (setf (place-holder (pac-line panel)) "Current Package") (setf (current-editor-is-lisp app) "clog-user") - (setup-lisp-ace (preview-ace panel) nil) + (setf (text-value (pac-line panel)) "clog-user") + (setup-lisp-ace (preview-ace panel) (status-bar panel)) (setf (text-value (preview-ace panel)) ";; After search, double click file name to open / single click to preview") - (setf (read-only-p (preview-ace panel)) t) (set-on-window-focus win (lambda (obj) (declare (ignore obj)) - (setf (current-editor-is-lisp app) "clog-user"))) + (if lisp-file + (setf (current-editor-is-lisp app) (text-value (pac-line panel))) + (setf (current-editor-is-lisp app) nil)))) (set-on-input (result-box panel) (lambda (obj) - (let* ((fname (text-value obj)) - (regex (text-value (grep-input panel))) - (c (read-file fname :report-errors nil))) - (cond ((or (equalp (pathname-type fname) "lisp") - (equalp (pathname-type fname) "asd")) - (setf (clog-ace:mode (preview-ace panel)) "ace/mode/lisp")) - (t - (if (equalp (pathname-type fname) "clog") - (setf (clog-ace:mode (preview-ace panel)) "ace/mode/html") - (setf (clog-ace:mode (preview-ace panel)) - (clog-ace:get-mode-from-extension (preview-ace panel) fname))))) - (setf (text-value (preview-ace panel)) c) - (clog-ace:resize (preview-ace panel)) - (js-execute obj (format nil "~A.find({regExp:true,needle:'~A',caseSensitive:false})" - (clog-ace::js-ace (preview-ace panel)) (escape-string regex))) - (clog-ace:execute-command (preview-ace panel) "find")) - (focus (result-box panel)))) + (let* ((fname (text-value obj)) + (regex (text-value (grep-input panel))) + (c (read-file fname :report-errors nil))) + (cond ((or (equalp (pathname-type fname) "lisp") + (equalp (pathname-type fname) "asd")) + (setf (text-value (pac-line panel)) (get-package-from-string c)) + (setf (current-editor-is-lisp app) (text-value (pac-line panel))) + (setf lisp-file t) + (setf (clog-ace:mode (preview-ace panel)) "ace/mode/lisp")) + (t + (setf lisp-file nil) + (setf (current-editor-is-lisp app) nil) + (if (equalp (pathname-type fname) "clog") + (setf (clog-ace:mode (preview-ace panel)) "ace/mode/html") + (setf (clog-ace:mode (preview-ace panel)) + (clog-ace:get-mode-from-extension (preview-ace panel) fname))))) + (setf (text-value (preview-ace panel)) c) + (clog-ace:resize (preview-ace panel)) + (js-execute obj (format nil "~A.find({regExp:true,needle:'~A',caseSensitive:false})" + (clog-ace::js-ace (preview-ace panel)) (escape-string regex))) + (clog-ace:execute-command (preview-ace panel) "find")) + (focus (result-box panel)))) + (flet ((save (obj) + (let ((fname (text-value (result-box panel)))) + (when (not (equalp fname "")) + (write-file (text-value (preview-ace panel)) fname) + (alert-toast obj "Save file..." (format nil "Saved ~A" fname) :color-class "w3-green" :time-out 1))))) + (set-on-click (save-btn panel) #'save) + (set-on-event (preview-ace panel) "clog-save-ace" #'save)) + (labels ((eval-form (obj) + (let ((p (parse-integer + (js-query obj + (format nil "~A.session.doc.positionToIndex (~A.selection.getCursor(), 0);" + (clog-ace::js-ace (preview-ace panel)) + (clog-ace::js-ace (preview-ace panel)))) + :junk-allowed t)) + (tv (text-value (preview-ace panel))) + (lf nil) + (cp 0)) + (loop + (setf (values lf cp) (read-from-string tv nil nil :start cp)) + (unless lf (return nil)) + (when (> cp p) (return lf))) + (when lf + (let ((result (capture-eval lf + :capture-console (not *editor-use-console-for-evals*) + :capture-result (not *editor-use-console-for-evals*) + :clog-obj (connection-body obj) + :eval-in-package (text-value (pac-line panel))))) + (if *editor-use-console-for-evals* + (on-open-console obj) + (on-open-file obj :title-class "w3-blue" :title "form eval" + :has-time-out *editor-delay-on-eval-form* :text result)))))) + (eval-selection (obj) + (let ((val (clog-ace:selected-text (pac-line panel)))) + (unless (equal val "") + (let ((result (capture-eval val :clog-obj obj + :capture-console (not *editor-use-console-for-evals*) + :capture-result (not *editor-use-console-for-evals*) + :eval-in-package (text-value (pac-line panel))))) + (if *editor-use-console-for-evals* + (on-open-console obj) + (on-open-file obj :title-class "w3-blue" :title "selection eval" + :has-time-out *editor-delay-on-eval-sel* :text result)))))) + (eval-file (obj) + (let ((val (text-value (pac-line panel)))) + (unless (equal val "") + (let ((result (capture-eval val :clog-obj obj + :capture-console (not *editor-use-console-for-evals*) + :capture-result (not *editor-use-console-for-evals*) + :eval-in-package (text-value (pac-line panel))))) + (if *editor-use-console-for-evals* + (on-open-console obj) + (on-open-file obj :title-class "w3-blue" :title "file eval" + :has-time-out *editor-delay-on-eval-file* :text result))))))) + (set-on-click (eval-sel-btn panel) (lambda (obj) + (eval-selection obj))) + (set-on-click (eval-form-btn panel) (lambda (obj) + (eval-form obj))) + (set-on-click (eval-all-btn panel) (lambda (obj) + (eval-file obj)))) (unless dir (setf dir (if (and (current-project-dir app) - (not (equal (current-project-dir app) ""))) + (not (equal (current-project-dir app) ""))) (current-project-dir app) (uiop:getcwd)))) (setf (text-value (dir-input panel)) dir) diff --git a/tools/panel-search.clog b/tools/panel-search.clog index db5a7b2..0f50d55 100644 --- a/tools/panel-search.clog +++ b/tools/panel-search.clog @@ -1,44 +1,17 @@ - -