58 lines
1.6 KiB
TypeScript

import * as vscode from 'vscode';
import { hdlPath } from '../../hdlFs';
import { hardwareTreeProvider, softwareTreeProvider, toolTreeProvider } from './command';
import { moduleTreeProvider, ModuleDataItem } from './tree';
import { Range } from '../../hdlParser/common';
async function openFileAtPosition(uri: vscode.Uri, range: Range) {
const document = await vscode.workspace.openTextDocument(uri);
const start = new vscode.Position(range.start.line, range.start.character);
const end = new vscode.Position(range.end.line, range.end.character);
await vscode.window.showTextDocument(
document,
{
selection: new vscode.Range(start, end)
}
);
}
function openFileByUri(path: string, range: Range) {
if (range === undefined) {
vscode.window.showErrorMessage(`${path} not support jump yet`);
return;
}
if (hdlPath.exist(path)) {
const uri = vscode.Uri.file(path);
openFileAtPosition(uri, range);
}
}
function refreshArchTree(element?: ModuleDataItem) {
// TODO : diff and optimize
moduleTreeProvider.refresh(element);
}
function expandTreeView() {
vscode.commands.executeCommand('setContext', 'TOOL-tree-expand', false);
}
function collapseTreeView() {
vscode.commands.executeCommand('workbench.actions.treeView.digital-ide-treeView-arch.collapseAll');
vscode.commands.executeCommand('setContext', 'TOOL-tree-expand', true);
}
export {
hardwareTreeProvider,
softwareTreeProvider,
toolTreeProvider,
moduleTreeProvider,
expandTreeView,
collapseTreeView,
openFileByUri,
refreshArchTree
};