Skip to content

Commit

Permalink
chore: remove unused files
Browse files Browse the repository at this point in the history
  • Loading branch information
HerringtonDarkholme committed Feb 13, 2024
1 parent d2b6ba0 commit b3e5bea
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 148 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
{
"type": "webview",
"id": "ast-grep.search.input",
"name": "Pattern Input"
"name": "Structural Search"
}
]
}
Expand Down
138 changes: 2 additions & 136 deletions src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,4 @@
import {
workspace,
ExtensionContext,
window,
commands,
Range,
TreeItem,
TreeItemLabel,
TreeItemCollapsibleState,
TreeDataProvider,
TextDocumentShowOptions,
Uri,
ThemeIcon,
EventEmitter,
Position
} from 'vscode'
import { workspace, ExtensionContext, window, commands } from 'vscode'

import {
LanguageClient,
Expand All @@ -23,7 +8,6 @@ import {
} from 'vscode-languageclient/node'

import { activate as activateWebview } from './view'
import { SgSearch } from './types'

let client: LanguageClient
const diagnosticCollectionName = 'ast-grep-diagnostics'
Expand All @@ -47,108 +31,6 @@ function getExecutable(isDebug: boolean): Executable {
}
}

interface FileItem {
file: string
}

interface SearchItem {
file: string
source: string
range: Range
}
class AstGrepScanTreeItem extends TreeItem {
constructor(public item: FileItem | SearchItem) {
let label
let collapsibleState = TreeItemCollapsibleState.None
if ('source' in item) {
const { start, end } = item.range
label = {
label: item.source,
highlights: [[start.character, end.character]]
} as TreeItemLabel
} else {
label = item.file
collapsibleState = TreeItemCollapsibleState.Expanded
}
super(label, collapsibleState)
if ('source' in item) {
this.command = {
title: 'ast-grep',
command: 'vscode.open',
arguments: [
this.uri,
<TextDocumentShowOptions>{
selection: item.range
}
]
}
}
}

get uri() {
// Get the current workspace folder
const workspaceFolder = workspace.workspaceFolders![0]
// Join the workspace folder path with the relative path
const filePath = Uri.joinPath(workspaceFolder.uri, this.item.file)
return filePath
}

static isSearchItem(item: FileItem | SearchItem): item is SearchItem {
return 'source' in item
}
}

type Dictionary<T> = { [key: string]: T }
export class AstGrepSearchResultProvider
implements TreeDataProvider<AstGrepScanTreeItem>
{
private scanResultDict: Dictionary<SgSearch[]> = {}
private emitter = new EventEmitter<undefined>()
onDidChangeTreeData = this.emitter.event

getTreeItem(element: AstGrepScanTreeItem): TreeItem {
// only add iconPath if the element is not a file item
if (!('source' in element.item)) {
element.contextValue = 'file-item'
element.description = true
element.iconPath = ThemeIcon.File
element.resourceUri = element.uri
}
return element
}

getChildren(element?: AstGrepScanTreeItem): Thenable<AstGrepScanTreeItem[]> {
if (!element) {
let list = Object.keys(this.scanResultDict).map(file => {
return new AstGrepScanTreeItem({ file })
})
return Promise.resolve(list)
}
if (AstGrepScanTreeItem.isSearchItem(element.item)) {
return Promise.resolve([])
}
let file = element.item.file
let list = this.scanResultDict[file].map(item => {
const { start, end } = item.range
return new AstGrepScanTreeItem({
file: item.file,
source: item.lines,
range: new Range(
new Position(start.line, start.column),
new Position(end.line, end.column)
)
})
})
return Promise.resolve(list)
}

updateResult(res: SgSearch[]) {
let grouped = groupBy(res, 'file')
this.scanResultDict = grouped
this.emitter.fire(undefined)
}
}

function activateLsp(context: ExtensionContext) {
context.subscriptions.push(
commands.registerCommand('ast-grep.restartLanguageServer', async () => {
Expand Down Expand Up @@ -196,10 +78,8 @@ function activateLsp(context: ExtensionContext) {
}

export function activate(context: ExtensionContext) {
let provider = new AstGrepSearchResultProvider()
activateLsp(context)
// TODO: fix shit code
activateWebview(context, provider)
activateWebview(context)
}

async function restart(): Promise<void> {
Expand All @@ -215,17 +95,3 @@ export function deactivate(): Promise<void> | undefined {
}
return client.stop()
}

function groupBy<T extends object>(obj: T[], key: keyof T) {
return obj.reduce(
(acc, cur) => {
let k = cur[key] as string
if (!acc[k]) {
acc[k] = []
}
acc[k].push(cur)
return acc
},
{} as Record<string, T[]>
)
}
14 changes: 3 additions & 11 deletions src/view.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,9 @@ import { execa } from 'execa'
import { Unport, ChannelMessage } from 'unport'
import * as vscode from 'vscode'
import { workspace } from 'vscode'
import { AstGrepSearchResultProvider } from './extension'

export function activate(
context: vscode.ExtensionContext,
search: AstGrepSearchResultProvider
) {
const provider = new SearchSidebarProvider(context.extensionUri, search)
export function activate(context: vscode.ExtensionContext) {
const provider = new SearchSidebarProvider(context.extensionUri)

context.subscriptions.push(
vscode.window.registerWebviewViewProvider(
Expand Down Expand Up @@ -50,10 +46,7 @@ class SearchSidebarProvider implements vscode.WebviewViewProvider {
// @ts-expect-error
private _view?: vscode.WebviewView

constructor(
private readonly _extensionUri: vscode.Uri,
private search: AstGrepSearchResultProvider
) {}
constructor(private readonly _extensionUri: vscode.Uri) {}

public resolveWebviewView(
webviewView: vscode.WebviewView,
Expand Down Expand Up @@ -92,7 +85,6 @@ class SearchSidebarProvider implements vscode.WebviewViewProvider {

parentPort.onMessage('search', async payload => {
const res = (await getPatternRes(payload.inputValue)) ?? []
this.search.updateResult(res)
parentPort.postMessage('search', { ...payload, searchResult: res })
})

Expand Down

0 comments on commit b3e5bea

Please sign in to comment.