diff --git a/source/clog-gui.lisp b/source/clog-gui.lisp index cde0a90..8d2a4aa 100644 --- a/source/clog-gui.lisp +++ b/source/clog-gui.lisp @@ -694,8 +694,11 @@ clog-body. If main-menu add as main menu bar.")) (defmethod create-gui-menu-drop-down ((obj clog-gui-menu-bar) &key (content "") (class *menu-bar-drop-down-class*) + (right-align nil) (html-id nil)) - (let* ((hover (create-div obj :class "w3-dropdown-hover")) + (let* ((hover (create-div obj :class (if right-align + "w3-right w3-dropdown-hover" + "w3-dropdown-hover"))) (button (create-button hover :class "w3-button" :content content)) (div (create-div hover :class class :html-id html-id))) (declare (ignore button)) diff --git a/tools/clog-builder-ace.lisp b/tools/clog-builder-ace.lisp index 76bd783..80e183e 100644 --- a/tools/clog-builder-ace.lisp +++ b/tools/clog-builder-ace.lisp @@ -71,6 +71,39 @@ (declare (ignore obj)) (when (current-editor-is-lisp app) (on-new-sys-browser editor :search data)))) + ;; find symbol in file search + (js-execute editor + (format nil + "~A.commands.addCommand({ + name: 'find-definition', + bindKey: {win: 'Alt-,', mac: 'Command-,'}, + exec: function(editor) { + var row = editor.selection.getCursor().row; + var column = editor.selection.getCursor().column; + var c; + while (column > 0) { + c=editor.session.getTextRange(new ace.Range(row, column-1, row, column)); + if (c=='(' || c==' ') { break; } + column--; + } + var s=column; + while (column < 200) { + c=editor.session.getTextRange(new ace.Range(row, column, row, column+1)); + if (c==')' || c==' ') { break; } + column++; + } + c = editor.session.getTextRange(new ace.Range(row, s, row, column)); + ~A.trigger('clog-search', c); + }, + readOnly: true, +});" + (clog-ace::js-ace editor) + (jquery editor))) + (set-on-event-with-data editor "clog-search" + (lambda (obj data) + (declare (ignore obj)) + (when (current-editor-is-lisp app) + (on-file-search editor :search data)))) ;; setup save key (js-execute editor (format nil diff --git a/tools/clog-builder-project-tree.lisp b/tools/clog-builder-project-tree.lisp index 11c1c40..95fbd8a 100644 --- a/tools/clog-builder-project-tree.lisp +++ b/tools/clog-builder-project-tree.lisp @@ -273,6 +273,7 @@ (setf (advisory-title load-btn) "Click to load") (setf (background-color load-btn) :tomato) (setf (current-project app) sel) + (setf (current-project-dir app) root) (create-clog-tree tree :fill-function (lambda (obj) (project-tree-dir-select obj dir)) diff --git a/tools/clog-builder-search.lisp b/tools/clog-builder-search.lisp index 5c680e4..28d5137 100644 --- a/tools/clog-builder-search.lisp +++ b/tools/clog-builder-search.lisp @@ -1,13 +1,11 @@ (in-package :clog-tools) -(defun on-file-search (obj &key (dir "")) +(defun on-file-search (obj &key dir search doc-maximize) "Open file search" (let* ((app (connection-data-item obj "builder-app-data")) (*default-title-class* *builder-title-class*) (*default-border-class* *builder-border-class*) - (win (create-gui-window obj :title (format nil "Search in ~A" - dir) - :top (+ (menu-bar-height obj) 20) + (win (create-gui-window obj :top (+ (menu-bar-height obj) 20) :left 20 :width 1040 :height 600 :client-movement *client-side-movement*)) @@ -17,6 +15,8 @@ (clog-ace:resize (preview-ace panel)))) (setf (current-editor-is-lisp app) "clog-user") (setup-lisp-ace (preview-ace panel) nil) + (setf (text-value (preview-ace panel)) + ";; After search, double click file name to open / single click to preview") (set-on-window-focus win (lambda (obj) (declare (ignore obj)) @@ -39,7 +39,18 @@ (clog-ace::js-ace (preview-ace panel)) regex)) (clog-ace:execute-command (preview-ace panel) "find")) (focus (result-box panel)))) - (setf (text-value (dir-input panel)) dir))) + (unless dir + (setf dir (if (and (current-project-dir app) + (not (equal (current-project-dir app) ""))) + (current-project-dir app) + (uiop:getcwd)))) + (setf (text-value (dir-input panel)) dir) + (panel-search-dir-change panel (dir-input panel)) + (when doc-maximize + (window-maximize win)) + (when search + (setf (text-value (grep-input panel)) search) + (panel-search-on-click panel nil)))) (defun panel-search-dir-change (panel target) (setf (window-title (parent (parent panel))) diff --git a/tools/clog-builder-settings.lisp b/tools/clog-builder-settings.lisp index a576a3a..ad49ca2 100644 --- a/tools/clog-builder-settings.lisp +++ b/tools/clog-builder-settings.lisp @@ -82,7 +82,7 @@ (defparameter *builder-pallete-class* "w3-light-grey w3-small") (defparameter *builder-event-list-class* "w3-light-grey w3-small") (defparameter *builder-panel-class* "w3-white w3-sans-serif w3-medium") -(defparameter *builder-menu-search-class* "w3-right w3-gray w3-bar-item") +(defparameter *builder-menu-search-class* "w3-border w3-light-grey w3-bar-item") ;; Menus (defparameter *builder-menu-bar-class* "w3-bar w3-round w3-small w3-blue-grey w3-card-4") diff --git a/tools/clog-builder.lisp b/tools/clog-builder.lisp index 1d188e5..abdabc5 100644 --- a/tools/clog-builder.lisp +++ b/tools/clog-builder.lisp @@ -411,6 +411,7 @@ clog-builder window.") (opts (create-gui-menu-drop-down menu :content "Options")) (win (create-gui-menu-drop-down menu :content "Window")) (help (create-gui-menu-drop-down menu :content "Help")) + search sysbrw) (declare (ignore icon)) ;; Menu -> File @@ -558,10 +559,19 @@ clog-builder window.") (create-gui-menu-item help :content "About CLOG Builder" :on-click #'on-help-about-builder) (create-gui-menu-window-select menu) (create-gui-menu-full-screen menu) - (setf sysbrw (create-form-element menu :search :class *builder-menu-search-class*)) + (setf search (create-gui-menu-drop-down menu :content + "              +               + 👁" :right-align t)) + (setf sysbrw (create-form-element search :search :class *builder-menu-search-class*)) (setf (place-holder sysbrw) "system browse.. (alt-.)") (set-on-change sysbrw (lambda (obj) (on-new-sys-browser obj :search (text-value obj) :doc-maximize t) + (setf (text-value obj) ""))) + (setf sysbrw (create-form-element search :search :class *builder-menu-search-class*)) + (setf (place-holder sysbrw) "regex search.. (alt-,)") + (set-on-change sysbrw (lambda (obj) + (on-file-search obj :search (text-value obj) :doc-maximize t) (setf (text-value obj) "")))) (on-show-copy-history-win body) (cond diff --git a/tools/preferences.lisp.sample b/tools/preferences.lisp.sample index fd6be81..827615e 100644 --- a/tools/preferences.lisp.sample +++ b/tools/preferences.lisp.sample @@ -120,7 +120,7 @@ (setf *builder-pallete-class* "w3-light-grey w3-small") (setf *builder-event-list-class* "w3-light-grey w3-small") (setf *builder-panel-class* "w3-white w3-sans-serif w3-medium") -(setf *builder-menu-search-class* "w3-right w3-gray w3-bar-item") +(setf *builder-menu-search-class* "w3-light-grey w3-bar-item") ;; Menus (setf *builder-menu-bar-class* "w3-bar w3-round w3-small w3-blue-grey w3-card-4")