vscode#Definition TypeScript Examples
The following examples show how to use
vscode#Definition.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: lexDefinition.ts From yash with MIT License | 6 votes |
export function doLEXFindDefinition(document: TextDocument, position: Position, lexDocument: LexDocument): Definition | null {
const offset = document.offsetAt(position);
const node = lexDocument.getEmbeddedCode(offset);
if (node) {
return null;
}
const word = document.getText(document.getWordRangeAtPosition(position));
var symbol: ISymbol | undefined = lexDocument.defines[word] || lexDocument.states[word];
let location: Location | null = null;
if (symbol) {
location = new Location(document.uri, new Range(document.positionAt(symbol.definition[0]), document.positionAt(symbol.definition[1])));
}
return location;
}
Example #2
Source File: yaccDefinitions.ts From yash with MIT License | 6 votes |
export function doYACCFindDefinition(document: TextDocument, position: Position, yaccDocument: YACCDocument): Definition | null {
const offset = document.offsetAt(position);
const node = yaccDocument.getEmbeddedNode(offset);
if (node) {
return null;
}
const word = document.getText(document.getWordRangeAtPosition(position));
var symbol: ISymbol | undefined = yaccDocument.types[word] || yaccDocument.symbols[word] || yaccDocument.tokens[word] || yaccDocument.aliases[`"${word}"`];
let location: Location | null = null;
if (symbol) {
location = new Location(document.uri, new Range(document.positionAt(symbol.definition[0]), document.positionAt(symbol.definition[1])));
}
return location;
}
Example #3
Source File: yaccTypeDefinition.ts From yash with MIT License | 6 votes |
export function doYACCFindTypeDefinition(document: TextDocument, position: Position, yaccDocument: YACCDocument): Definition | null {
const offset = document.offsetAt(position);
const node = yaccDocument.getEmbeddedNode(offset);
if (node) {
return null;
}
const word = document.getText(document.getWordRangeAtPosition(position));
var symbol: ISymbol | undefined = yaccDocument.symbols[word] || yaccDocument.tokens[word] || yaccDocument.aliases[`"${word}"`];
let location: Location | null = null;
if (symbol && symbol.type) {
const type = yaccDocument.types[symbol.type];
if (type) {
location = new Location(document.uri, new Range(document.positionAt(type.definition[0]), document.positionAt(type.definition[1])));
}
}
return location;
}
Example #4
Source File: lexMode.ts From yash with MIT License | 6 votes |
export function getLEXMode(lexLanguageService: LEXLanguageService): LanguageMode {
const cache = CreateDocumentCache<LexDocument>(10, 60, document => lexLanguageService.parseLexDocument(document));
return {
getId() {
return 'lex';
},
doValidation(document: TextDocument): Diagnostic[] {
const lex = cache.get(document);
return lexLanguageService.doValidation(document, lex);
},
doComplete(document: TextDocument, position: Position): CompletionList | CompletionItem[] {
const lex = cache.get(document);
return lexLanguageService.doComplete(document, position, lex);
},
doHover(document: TextDocument, position: Position): Hover | null {
const lex = cache.get(document);
return lexLanguageService.doHover(document, position, lex);
},
findDefinition(document: TextDocument, position: Position): Definition | null {
const lex = cache.get(document);
return lexLanguageService.findDefinition(document, position, lex);
},
findReferences(document: TextDocument, position: Position): Location[] {
const lex = cache.get(document);
return lexLanguageService.findReferences(document, position, lex);
},
doRename(document: TextDocument, position: Position, newName: string): WorkspaceEdit | null {
const lex = cache.get(document);
return lexLanguageService.doRename(document, position, newName, lex);
},
onDocumentRemoved(document: TextDocument) {
cache.onDocumentRemoved(document);
},
dispose() {
cache.dispose();
}
};
}
Example #5
Source File: macroDefinitionProvider.ts From vscode-dbt-power-user with MIT License | 6 votes |
provideDefinition(
document: TextDocument,
position: Position
): ProviderResult<Definition | DefinitionLink[]> {
return new Promise((resolve, reject) => {
const textLine = document.lineAt(position).text;
const range = document.getWordRangeAtPosition(
position,
MacroDefinitionProvider.IS_MACRO
);
const word = document.getText(range);
if (
range &&
textLine[range.end.character] === "(" &&
isEnclosedWithinCodeBlock(document, range)
) {
const packageName = this.dbtProjectContainer.getPackageName(
document.uri
);
const macroName =
packageName !== undefined && !word.includes(".")
? `${packageName}.${word}`
: word;
const definition = this.getMacroDefinition(macroName, document.uri);
if (definition !== undefined) {
resolve(definition);
return;
}
}
reject();
});
}
Example #6
Source File: macroDefinitionProvider.ts From vscode-dbt-power-user with MIT License | 6 votes |
private getMacroDefinition(
macroName: string,
currentFilePath: Uri
): Definition | undefined {
const projectRootpath = this.dbtProjectContainer.getProjectRootpath(
currentFilePath
);
if (projectRootpath === undefined) {
return;
}
const macroMap = this.macroToLocationMap.get(projectRootpath.fsPath);
if (macroMap === undefined) {
return;
}
const location = macroMap.get(macroName);
if (location) {
return new Location(
Uri.file(location.path),
new Position(location.line, location.character)
);
}
return undefined;
}
Example #7
Source File: modelDefinitionProvider.ts From vscode-dbt-power-user with MIT License | 6 votes |
provideDefinition(
document: TextDocument,
position: Position,
token: CancellationToken
): ProviderResult<Definition | DefinitionLink[]> {
return new Promise((resolve, reject) => {
const hover = document.getText(document.getWordRangeAtPosition(position));
const word = document.getText(
document.getWordRangeAtPosition(
position,
ModelDefinitionProvider.IS_REF
)
);
if (word !== undefined && hover !== "ref") {
const dbtModel = word.match(ModelDefinitionProvider.GET_DBT_MODEL);
if (dbtModel && dbtModel.length === 1) {
const definition = this.getDefinitionFor(dbtModel[0], document.uri);
resolve(definition);
return;
}
}
reject();
});
}
Example #8
Source File: modelDefinitionProvider.ts From vscode-dbt-power-user with MIT License | 6 votes |
private getDefinitionFor(
name: string,
currentFilePath: Uri
): Definition | undefined {
const projectRootpath = this.dbtProjectContainer.getProjectRootpath(
currentFilePath
);
if (projectRootpath === undefined) {
return;
}
const nodeMap = this.modelToLocationMap.get(projectRootpath.fsPath);
if (nodeMap === undefined) {
return;
}
const location = nodeMap.get(name);
if (location) {
return new Location(Uri.file(location.path), new Range(0, 0, 0, 0));
}
return undefined;
}
Example #9
Source File: sourceDefinitionProvider.ts From vscode-dbt-power-user with MIT License | 6 votes |
private getSourceDefinition(
sourceName: string,
currentFilePath: Uri,
tableName: string
): Definition | undefined {
const projectRootpath = this.dbtProjectContainer.getProjectRootpath(
currentFilePath
);
if (projectRootpath === undefined) {
return;
}
const sourceMap = this.sourceMetaMap.get(projectRootpath.fsPath);
if (sourceMap === undefined) {
return;
}
const location = sourceMap
.get(sourceName)
?.tables.find((table) => table.name === tableName);
if (location) {
const sourceFile: string = readFileSync(location.path).toString("utf8");
const sourceFileLines = sourceFile.split("\n");
for (let index = 0; index < sourceFileLines.length; index++) {
const currentLine = sourceFileLines[index];
if (currentLine.includes(tableName)) {
return new Location(
Uri.file(location.path),
new Position(index, currentLine.indexOf(tableName))
);
}
}
}
return undefined;
}
Example #10
Source File: spProviders.ts From sourcepawn-vscode with MIT License | 5 votes |
public async provideDefinition(
document: TextDocument,
position: Position,
token: CancellationToken
): Promise<Definition | LocationLink[]> {
return definitionsProvider(this.itemsRepository, document, position, token);
}
Example #11
Source File: yaccMode.ts From yash with MIT License | 5 votes |
export function getYACCMode(yaccLanguageService: YACCLanguageService): LanguageMode {
const cache = CreateDocumentCache<YACCDocument>(10, 60, document => yaccLanguageService.parseYACCDocument(document));
return {
getId() {
return 'yacc';
},
doValidation(document: TextDocument, force?:boolean): Diagnostic[] {
if (force) {
return yaccLanguageService.doValidation(document, yaccLanguageService.parseYACCDocument(document));
}
const yacc = cache.get(document);
return yaccLanguageService.doValidation(document, yacc);
},
doComplete(document: TextDocument, position: Position): CompletionList | CompletionItem[] {
const yacc = cache.get(document);
return yaccLanguageService.doComplete(document, position, yacc);
},
doHover(document: TextDocument, position: Position): Hover | null {
const yacc = cache.get(document);
return yaccLanguageService.doHover(document, position, yacc);
},
findTypeDefinition(document: TextDocument, position: Position): Definition | null {
const yacc = cache.get(document);
return yaccLanguageService.findTypeDefinition(document, position, yacc);
},
findDefinition(document: TextDocument, position: Position): Definition | null {
const yacc = cache.get(document);
return yaccLanguageService.findDefinition(document, position, yacc);
},
findReferences(document: TextDocument, position: Position): Location[] {
const yacc = cache.get(document);
return yaccLanguageService.findReferences(document, position, yacc);
},
doRename(document: TextDocument, position: Position, newName: string): WorkspaceEdit | null {
const yacc = cache.get(document);
return yaccLanguageService.doRename(document, position, newName, yacc);
},
getSemanticTokens(document: TextDocument): SemanticTokenData[] {
const yacc = cache.get(document);
return yaccLanguageService.getSemanticTokens(document, yacc);
},
getSemanticTokenLegend() {
return { types: tokenTypes, modifiers: tokenModifiers };
},
onDocumentRemoved(document: TextDocument) {
cache.onDocumentRemoved(document);
},
dispose() {
cache.dispose();
}
};
}
Example #12
Source File: sourceDefinitionProvider.ts From vscode-dbt-power-user with MIT License | 5 votes |
provideDefinition(
document: TextDocument,
position: Position,
token: CancellationToken
): ProviderResult<Definition | DefinitionLink[]> {
return new Promise((resolve, reject) => {
const hover = document.getText(document.getWordRangeAtPosition(position));
const range = document.getWordRangeAtPosition(
position,
SourceDefinitionProvider.IS_SOURCE
);
const word = document.getText(range);
const linePrefix = document
.lineAt(position)
.text.substr(0, position.character);
if (
!isEnclosedWithinCodeBlock(document, position) ||
!linePrefix.includes("source") ||
hover === "source"
) {
reject();
return;
}
const source = word.match(SourceDefinitionProvider.GET_SOURCE_INFO);
if (source === null || source === undefined) {
reject();
return;
}
if (source.length < 2) {
reject();
return;
}
const definition = this.getSourceDefinition(
source[0],
document.uri,
source[1],
);
resolve(definition);
});
}