Skip to content

Commit

Permalink
feat: implment find in folder
Browse files Browse the repository at this point in the history
fix #186
  • Loading branch information
HerringtonDarkholme committed Feb 19, 2024
1 parent 7ddc41f commit ded46dc
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 11 deletions.
3 changes: 3 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ export type Definition = {
id: number
error: Error
}
setIncludeFile: {
includeFile: string
}
}
child2parent: {
search: SearchQuery & {
Expand Down
9 changes: 6 additions & 3 deletions src/view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,9 @@ function openFile({
})
}

function setupParentPort(webviewView: vscode.WebviewView) {
const parentPort: ParentPort = new Unport()
const parentPort: ParentPort = new Unport()

function setupParentPort(webviewView: vscode.WebviewView) {
parentPort.implementChannel({
async send(message) {
webviewView.webview.postMessage(message)
Expand Down Expand Up @@ -298,5 +298,8 @@ export function findInFolder(data: any) {
window.showErrorMessage('ast-grep Error: folder is not in the workspace')
return
}
window.showInformationMessage('ast-grep: searching in ' + relative)
vscode.commands.executeCommand('ast-grep.search.input.focus')
parentPort.postMessage('setIncludeFile', {
includeFile: relative
})
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { CSSProperties } from 'react'
import { VscEllipsis } from 'react-icons/vsc'
import { useBoolean } from 'react-use'
import IncludeFile from './IncludeFile'

const buttonStyle: CSSProperties = {
Expand Down Expand Up @@ -29,14 +28,17 @@ interface SearchOptionsProps {
includeFile: string
setIncludeFile: (value: string) => void
refreshResult: () => void
showOptions: boolean
toggleOptions: () => void
}

export default function SearchOptions({
includeFile,
setIncludeFile,
refreshResult
refreshResult,
showOptions,
toggleOptions
}: SearchOptionsProps) {
const [showOptions, toggleOptions] = useBoolean(false)
return (
<div style={optionsStyle}>
<button style={buttonStyle} onClick={toggleOptions}>
Expand All @@ -49,7 +51,7 @@ export default function SearchOptions({
setIncludeFile={setIncludeFile}
refreshResult={refreshResult}
/>
{/* TODO: add file include*/}
{/* TODO: add file exclude*/}
</div>
)}
</div>
Expand Down
4 changes: 4 additions & 0 deletions src/webview/SearchSidebar/SearchWidgetContainer/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ const SearchWidgetContainer = ({ onQueryChange }: Props) => {
setInputValue,
includeFile,
setIncludeFile,
showOptions,
toggleOptions,
refreshResult
} = useSearchQuery(onQueryChange)

Expand All @@ -26,6 +28,8 @@ const SearchWidgetContainer = ({ onQueryChange }: Props) => {
includeFile={includeFile}
setIncludeFile={setIncludeFile}
refreshResult={refreshResult}
showOptions={showOptions}
toggleOptions={toggleOptions}
/>
</div>
)
Expand Down
18 changes: 14 additions & 4 deletions src/webview/hooks/useQuery.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useCallback } from 'react'
import { useLocalStorage } from 'react-use'
import { useDebounce } from 'react-use'
import { useCallback, useEffect } from 'react'
import { useLocalStorage, useDebounce, useBoolean } from 'react-use'
import { SearchQuery } from '../../types'
import { childPort } from '../postMessage'
export { SearchQuery }

export function useSearchQuery(startSearch: (query: SearchQuery) => void) {
Expand All @@ -13,13 +13,21 @@ export function useSearchQuery(startSearch: (query: SearchQuery) => void) {
'ast-grep-search-panel-include-value',
''
)
const [showOptions, toggleOptions] = useBoolean(Boolean(includeFile))
const refreshResult = useCallback(() => {
startSearch({
inputValue,
includeFile
})
}, [inputValue, includeFile, startSearch])

useEffect(() => {
childPort.onMessage('setIncludeFile', val => {
setIncludeFile(val.includeFile)
toggleOptions(true)
})
}, [])

// auto refresh result when input value changes
useDebounce(refreshResult, 100, [inputValue, includeFile])

Expand All @@ -28,6 +36,8 @@ export function useSearchQuery(startSearch: (query: SearchQuery) => void) {
setInputValue,
includeFile,
setIncludeFile,
refreshResult
refreshResult,
showOptions,
toggleOptions
}
}

0 comments on commit ded46dc

Please sign in to comment.