From 47213538d398a3dcf5728b226fefb90283cce92d Mon Sep 17 00:00:00 2001 From: pbaksa Date: Sat, 15 Oct 2022 16:53:42 +0200 Subject: [PATCH] find other references from selected reference use extra parser for subroutine calls (don't include yet in symbols) --- README.md | 3 +- out/extension.js | 66 +++++++++++++++++++++++++--------------- out/extension.js.map | 2 +- out/jumpparser.js | 26 ++++++++++++++++ out/jumpparser.js.map | 1 + src/extension.ts | 70 +++++++++++++++++++++++++++---------------- src/jumpparser.ts | 32 ++++++++++++++++++++ 7 files changed, 148 insertions(+), 52 deletions(-) create mode 100644 out/jumpparser.js create mode 100644 out/jumpparser.js.map create mode 100644 src/jumpparser.ts diff --git a/README.md b/README.md index 6abad25..2181624 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ __hotspot__ or __hotspot2__ - length edit hotspot triplet * IntelliSense lists parameters with their description, type, flags and default value. This list can be filtered by parameter type too. * These can all be toggled on/off together with Ctrl-Shift-Space * Follow macro calls with Ctrl-click -* Go to definitions/references, find all references of subroutines in same gdl-hsf file (Ctrl-click or F12, Shift-F12, Shift-Alt-F12) +* Go to definitions/references, find all references of subroutines in same libpart (Ctrl-click or F12, Shift-F12, Shift-Alt-F12) * Show Call Hierarchy (Shift-Alt-H), Peek Call Hierarchy * Incoming or outgoing macro calls are shown, respecting the execution context of the edited scipt. Eg. all scripts are searched outgoing from a master script, but only master and 2d scripts are searched outgoing from a 2d script. * HSF library parts inside the workspace are searched. If the workspace changed in a process outside VSCode, use the "Re-scan library parts in workspace folders" command to refresh the known library parts. @@ -171,6 +171,7 @@ Some valid syntaxes won't be highlighted, and some invalid syntaxes will be high ## 1.26.2 * Intellisense reads constants from edited file too, besides saved master script version +* Find references/definition handles subroutines defined in master script ## 1.26.1 * `Show Call Hierarchy`, `Peek Call Hierarchy` context menu items list incoming or outgoing macro calls inside the workspace diff --git a/out/extension.js b/out/extension.js index 7b3476f..a59aa15 100644 --- a/out/extension.js +++ b/out/extension.js @@ -11,6 +11,7 @@ const wssymbols_1 = require("./wssymbols"); const calltree_1 = require("./calltree"); const constparser_1 = require("./constparser"); const path = require("path"); +const jumpparser_1 = require("./jumpparser"); async function activate(context) { //console.log("extension.activate"); // create extension @@ -302,7 +303,7 @@ class GDLExtension { } onDocumentOpened(document) { //console.log("GDLExtension.onDocumentOpened", document.uri.toString()); - // handle only top editor - other can be SCM virtual document + // handle only top editor - other can be SCM virtual document / other document opened by extension if (vscode.window.activeTextEditor?.document.uri === document.uri) { this.updateHsfLibpart(); this.reparseDoc(document, 0); @@ -820,14 +821,14 @@ class GDLExtension { } else { // look for subroutine calls only if not a macro call - const lineBefore = document.lineAt(position.line).text.substring(0, originRange.start.character); - if (lineBefore.match(/(then|goto|gosub)\s*["'`´“”’‘]?$/i)) { + const jumps = new jumpparser_1.Jumps(document.lineAt(position.line).text); + if (jumps.jumps.find(j => j.range.contains(position.with(0)))) { let masterFunctionSymbols = undefined; // defining same subroutines in two scripts and calling from master is possible, // but gives build warnings and not a good practice // therefore we don't check definitions in other scripts from master script, just the other way around - if (this.infoFromHSF && - HSFScriptType(document.uri) !== Parser.ScriptType.D) { + if ( //this.infoFromHSF && + HSFScriptType(document.uri) !== Parser.ScriptType.D) { const masterfile = path.normalize(path.join(document.uri.fsPath, "..", "1d.gdl")); const masterdoc = await vscode.workspace.openTextDocument(vscode.Uri.file(masterfile)); const master = new Parser.ParseXMLGDL(masterdoc.getText(), true, false, false, false, false); @@ -878,29 +879,46 @@ class GDLExtension { return undefined; } async provideReferences(document, position, _context, cancel) { - const references = []; + let references = []; await this.immediateParse(document, cancel); - const origin = this.mapOwnFuncionSymbols(Parser.ScriptType.ROOT).filter(s => { + // should we provide references of a definition? + let label = this.mapOwnFuncionSymbols(Parser.ScriptType.ROOT).filter(s => { return s.selectionRange.contains(position); })[0]?.name; // there shouldn't be more results const scriptType = HSFScriptType(document.uri); - const searchScripts = (this.infoFromHSF) - ? Parser.getRelatedScripts(scriptType).filter(script => script !== scriptType) // exclude current script - : []; - const libpart = (await this.wsSymbols.values(cancel)).find(e => e.root_uri.fsPath === this.hsflibpart.rootFolder.fsPath); - let searchUris = searchScripts.map(async (script) => libpart?.scriptUri(script)); - searchUris.push(Promise.resolve(document.uri)); // current script read from document - for await (const scriptUri of searchUris) { - if (scriptUri) { - const searchDocument = await vscode.workspace.openTextDocument(scriptUri); - for (const match of searchDocument.getText().matchAll(/(then|goto|gosub)\s*/gmi)) { - const start = searchDocument.positionAt(match.index); - const end = start.translate(undefined, match[0].length); - const end_full = end.translate(undefined, origin.length); - const rest = searchDocument.getText(new vscode.Range(end, end_full)); - if (rest === origin) { - references.push(new vscode.Location(searchDocument.uri, new vscode.Range(start, end_full))); - } + let searchScripts; + // should we provide all other references like this? + if (label === undefined) { + const jumps = new jumpparser_1.Jumps(document.getText()); + const selection = jumps.jumps.find(j => j.range.contains(position)); + if (selection !== undefined) { + label = selection.target; + // only master-defined subroutines are called from other scripts + // search all scripts only if definition is in master script + const definition = await this.provideDefinition(document, position, cancel); + if (definition.find(d => d.targetUri.fsPath.endsWith("1d.gdl"))) { + searchScripts = Parser.Scripts; + } + else { + searchScripts = [scriptType]; + } + } + } + else { + searchScripts = Parser.getRelatedScripts(scriptType); + } + //searchScripts = this.infoFromHSF ? searchScripts : [scriptType]; + if (label !== undefined) { + const libpart = (await this.wsSymbols.values(cancel)).find(e => e.root_uri.fsPath === this.hsflibpart.rootFolder.fsPath); + let searchUris = searchScripts.map(async (script) => (script === scriptType) + ? document.uri // shortcut for current document + : libpart?.scriptUri(script)); + for await (const scriptUri of searchUris) { + if (scriptUri) { + const searchDocument = await vscode.workspace.openTextDocument(scriptUri); + const jumps = new jumpparser_1.Jumps(searchDocument.getText()); + references = references.concat(jumps.jumps.filter(j => j.target === label) + .map(j => new vscode.Location(searchDocument.uri, j.range))); } } } diff --git a/out/extension.js.map b/out/extension.js.map index a94a377..c930a59 100644 --- a/out/extension.js.map +++ b/out/extension.js.map @@ -1 +1 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/out/jumpparser.js b/out/jumpparser.js new file mode 100644 index 0000000..b294464 --- /dev/null +++ b/out/jumpparser.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Jumps = void 0; +const vscode = require("vscode"); +class Jumps { + constructor(code) { + this.jumps = code.split("\n") + .flatMap(Jumps.matchLine); + } + static matchLine(line, linenumber) { + const match = line.match(Jumps.regex); + if (match) { + return [{ + command: match[1].toLowerCase(), + target: match[3], + range: new vscode.Range(linenumber, match.index, linenumber, match.index + match[0].length) + }]; + } + else { + return []; + } + } +} +exports.Jumps = Jumps; +Jumps.regex = /((then|goto|gosub)\s+)(([0-9]+)|((["'`´“”’‘])([^"'`´“”’‘]+)\6))/i; +//# sourceMappingURL=jumpparser.js.map \ No newline at end of file diff --git a/out/jumpparser.js.map b/out/jumpparser.js.map new file mode 100644 index 0000000..e6e7b5f --- /dev/null +++ b/out/jumpparser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jumpparser.js","sourceRoot":"","sources":["../src/jumpparser.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAQjC,MAAa,KAAK;IAKd,YAAY,IAAa;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aACX,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,IAAY,EAAE,UAAkB;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE;YACP,OAAO,CAAC;oBACJ,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBAC/B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;oBAChB,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAM,EACxB,UAAU,EAAE,KAAK,CAAC,KAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;iBACtE,CAAC,CAAC;SACN;aAAM;YACH,OAAO,EAAE,CAAC;SACb;IACL,CAAC;;AAtBL,sBAuBC;AAtBkB,WAAK,GAAG,kEAAkE,CAAC"} \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 80865a9..dbd7172 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -10,6 +10,7 @@ import { CallTree } from './calltree'; import { Constants } from './constparser'; import path = require('path'); +import { Jumps } from './jumpparser'; export async function activate(context: vscode.ExtensionContext) { //console.log("extension.activate"); @@ -410,7 +411,7 @@ export class GDLExtension private onDocumentOpened(document: vscode.TextDocument) { //console.log("GDLExtension.onDocumentOpened", document.uri.toString()); - // handle only top editor - other can be SCM virtual document + // handle only top editor - other can be SCM virtual document / other document opened by extension if (vscode.window.activeTextEditor?.document.uri === document.uri) { this.updateHsfLibpart(); this.reparseDoc(document, 0); @@ -1027,16 +1028,16 @@ export class GDLExtension } } else { // look for subroutine calls only if not a macro call - const lineBefore = document.lineAt(position.line).text.substring(0, originRange.start.character); + const jumps = new Jumps(document.lineAt(position.line).text); - if (lineBefore.match(/(then|goto|gosub)\s*["'`´“”’‘]?$/i)) { + if (jumps.jumps.find(j => j.range.contains(position.with(0)))) { let masterFunctionSymbols = undefined; // defining same subroutines in two scripts and calling from master is possible, // but gives build warnings and not a good practice // therefore we don't check definitions in other scripts from master script, just the other way around - if (this.infoFromHSF && + if (//this.infoFromHSF && HSFScriptType(document.uri) !== Parser.ScriptType.D) { const masterfile = path.normalize( @@ -1103,36 +1104,53 @@ export class GDLExtension async provideReferences(document: vscode.TextDocument, position: vscode.Position, _context: vscode.ReferenceContext, cancel: vscode.CancellationToken) : Promise { - const references : vscode.Location[] = []; + let references : vscode.Location[] = []; await this.immediateParse(document, cancel); - const origin = this.mapOwnFuncionSymbols(Parser.ScriptType.ROOT).filter(s => { + // should we provide references of a definition? + let label = this.mapOwnFuncionSymbols(Parser.ScriptType.ROOT).filter(s => { return s.selectionRange.contains(position); })[0]?.name; // there shouldn't be more results const scriptType = HSFScriptType(document.uri)!; - const searchScripts = (this.infoFromHSF) - ? Parser.getRelatedScripts(scriptType).filter(script => script !== scriptType) // exclude current script - : []; - - const libpart = (await this.wsSymbols.values(cancel)).find(e => e.root_uri.fsPath === this.hsflibpart!.rootFolder.fsPath); - let searchUris = searchScripts.map(async (script) => libpart?.scriptUri(script)); - searchUris.push(Promise.resolve(document.uri)); // current script read from document - - for await (const scriptUri of searchUris) { - if (scriptUri) { - const searchDocument = await vscode.workspace.openTextDocument(scriptUri); - - for (const match of searchDocument.getText().matchAll(/(then|goto|gosub)\s*/gmi)) { - const start = searchDocument.positionAt(match.index!); - const end = start.translate(undefined, match[0].length); - const end_full = end.translate(undefined, origin.length); - const rest = searchDocument.getText(new vscode.Range(end, end_full)); + let searchScripts : Parser.ScriptType[] | undefined; - if (rest === origin) { - references.push(new vscode.Location(searchDocument.uri, new vscode.Range(start, end_full))); - } + // should we provide all other references like this? + if (label === undefined) { + const jumps = new Jumps(document.getText()); + const selection = jumps.jumps.find(j => j.range.contains(position)); + if (selection !== undefined) { + label = selection.target; + // only master-defined subroutines are called from other scripts + // search all scripts only if definition is in master script + const definition = await this.provideDefinition(document, position, cancel); + if (definition.find(d => d.targetUri.fsPath.endsWith("1d.gdl"))) { + searchScripts = Parser.Scripts; + } else { + searchScripts = [scriptType]; + } + } + } else { + searchScripts = Parser.getRelatedScripts(scriptType); + } + + //searchScripts = this.infoFromHSF ? searchScripts : [scriptType]; + + if (label !== undefined) { + const libpart = (await this.wsSymbols.values(cancel)).find(e => e.root_uri.fsPath === this.hsflibpart!.rootFolder.fsPath); + + let searchUris = searchScripts!.map(async (script) => (script === scriptType) + ? document.uri // shortcut for current document + : libpart?.scriptUri(script)); + + for await (const scriptUri of searchUris) { + if (scriptUri) { + const searchDocument = await vscode.workspace.openTextDocument(scriptUri); + + const jumps = new Jumps(searchDocument.getText()); + references = references.concat(jumps.jumps.filter(j => j.target === label) + .map(j => new vscode.Location(searchDocument.uri, j.range))); } } } diff --git a/src/jumpparser.ts b/src/jumpparser.ts new file mode 100644 index 0000000..82a4ac2 --- /dev/null +++ b/src/jumpparser.ts @@ -0,0 +1,32 @@ +import * as vscode from 'vscode'; + +export type Jump = { + command: string, + target: string, + range: vscode.Range +} + +export class Jumps { + private static regex = /((then|goto|gosub)\s+)(([0-9]+)|((["'`´“”’‘])([^"'`´“”’‘]+)\6))/i; + // keep synced with Parser.GDLFunction.regex, but backreference index differs! + public readonly jumps: Array; + + constructor(code : string) { + this.jumps = code.split("\n") + .flatMap(Jumps.matchLine); + } + + private static matchLine(line: string, linenumber: number) : Jump[] { + const match = line.match(Jumps.regex); + if (match) { + return [{ + command: match[1].toLowerCase(), + target: match[3], //match[4] ?? match[7], // strings unquoted + range: new vscode.Range(linenumber, match.index!, + linenumber, match.index! + match[0].length) + }]; + } else { + return []; + } + } +} \ No newline at end of file