grep from menu

This commit is contained in:
David Botton 2024-07-07 10:09:22 -04:00
parent 816f07b7a7
commit ed790a7e98
7 changed files with 67 additions and 9 deletions

View file

@ -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))

View file

@ -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

View file

@ -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))

View file

@ -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)))

View file

@ -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")

View file

@ -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
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&#x1F441;" :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

View file

@ -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")