File tree Expand file tree Collapse file tree 5 files changed +33
-11
lines changed Expand file tree Collapse file tree 5 files changed +33
-11
lines changed Original file line number Diff line number Diff line change @@ -50,6 +50,9 @@ export type Definition = {
5050 id : number
5151 error : Error
5252 }
53+ setIncludeFile : {
54+ includeFile : string
55+ }
5356 }
5457 child2parent : {
5558 search : SearchQuery & {
Original file line number Diff line number Diff line change @@ -177,9 +177,9 @@ function openFile({
177177 } )
178178}
179179
180- function setupParentPort ( webviewView : vscode . WebviewView ) {
181- const parentPort : ParentPort = new Unport ( )
180+ const parentPort : ParentPort = new Unport ( )
182181
182+ function setupParentPort ( webviewView : vscode . WebviewView ) {
183183 parentPort . implementChannel ( {
184184 async send ( message ) {
185185 webviewView . webview . postMessage ( message )
@@ -298,5 +298,8 @@ export function findInFolder(data: any) {
298298 window . showErrorMessage ( 'ast-grep Error: folder is not in the workspace' )
299299 return
300300 }
301- window . showInformationMessage ( 'ast-grep: searching in ' + relative )
301+ vscode . commands . executeCommand ( 'ast-grep.search.input.focus' )
302+ parentPort . postMessage ( 'setIncludeFile' , {
303+ includeFile : relative
304+ } )
302305}
Original file line number Diff line number Diff line change 11import type { CSSProperties } from 'react'
22import { VscEllipsis } from 'react-icons/vsc'
3- import { useBoolean } from 'react-use'
43import IncludeFile from './IncludeFile'
54
65const buttonStyle : CSSProperties = {
@@ -29,14 +28,17 @@ interface SearchOptionsProps {
2928 includeFile : string
3029 setIncludeFile : ( value : string ) => void
3130 refreshResult : ( ) => void
31+ showOptions : boolean
32+ toggleOptions : ( ) => void
3233}
3334
3435export default function SearchOptions ( {
3536 includeFile,
3637 setIncludeFile,
37- refreshResult
38+ refreshResult,
39+ showOptions,
40+ toggleOptions
3841} : SearchOptionsProps ) {
39- const [ showOptions , toggleOptions ] = useBoolean ( false )
4042 return (
4143 < div style = { optionsStyle } >
4244 < button style = { buttonStyle } onClick = { toggleOptions } >
@@ -49,7 +51,7 @@ export default function SearchOptions({
4951 setIncludeFile = { setIncludeFile }
5052 refreshResult = { refreshResult }
5153 />
52- { /* TODO: add file include */ }
54+ { /* TODO: add file exclude */ }
5355 </ div >
5456 ) }
5557 </ div >
Original file line number Diff line number Diff line change @@ -12,6 +12,8 @@ const SearchWidgetContainer = ({ onQueryChange }: Props) => {
1212 setInputValue,
1313 includeFile,
1414 setIncludeFile,
15+ showOptions,
16+ toggleOptions,
1517 refreshResult
1618 } = useSearchQuery ( onQueryChange )
1719
@@ -26,6 +28,8 @@ const SearchWidgetContainer = ({ onQueryChange }: Props) => {
2628 includeFile = { includeFile }
2729 setIncludeFile = { setIncludeFile }
2830 refreshResult = { refreshResult }
31+ showOptions = { showOptions }
32+ toggleOptions = { toggleOptions }
2933 />
3034 </ div >
3135 )
Original file line number Diff line number Diff line change 1- import { useCallback } from 'react'
2- import { useLocalStorage } from 'react-use'
3- import { useDebounce } from 'react-use'
1+ import { useCallback , useEffect } from 'react'
2+ import { useLocalStorage , useDebounce , useBoolean } from 'react-use'
43import { SearchQuery } from '../../types'
4+ import { childPort } from '../postMessage'
55export { SearchQuery }
66
77export function useSearchQuery ( startSearch : ( query : SearchQuery ) => void ) {
@@ -13,13 +13,21 @@ export function useSearchQuery(startSearch: (query: SearchQuery) => void) {
1313 'ast-grep-search-panel-include-value' ,
1414 ''
1515 )
16+ const [ showOptions , toggleOptions ] = useBoolean ( Boolean ( includeFile ) )
1617 const refreshResult = useCallback ( ( ) => {
1718 startSearch ( {
1819 inputValue,
1920 includeFile
2021 } )
2122 } , [ inputValue , includeFile , startSearch ] )
2223
24+ useEffect ( ( ) => {
25+ childPort . onMessage ( 'setIncludeFile' , val => {
26+ setIncludeFile ( val . includeFile )
27+ toggleOptions ( true )
28+ } )
29+ } , [ ] )
30+
2331 // auto refresh result when input value changes
2432 useDebounce ( refreshResult , 100 , [ inputValue , includeFile ] )
2533
@@ -28,6 +36,8 @@ export function useSearchQuery(startSearch: (query: SearchQuery) => void) {
2836 setInputValue,
2937 includeFile,
3038 setIncludeFile,
31- refreshResult
39+ refreshResult,
40+ showOptions,
41+ toggleOptions
3242 }
3343}
You can’t perform that action at this time.
0 commit comments