diff options
author | bscan <10503608+bscan@users.noreply.github.com> | 2023-01-17 20:17:23 -0500 |
---|---|---|
committer | bscan <10503608+bscan@users.noreply.github.com> | 2023-01-17 20:17:23 -0500 |
commit | 85326a2b783220e087a438a49fc9a00e33fe2eb3 (patch) | |
tree | 844dbfed802c7c230b2d79ccc96c03b85b951b9f /browser-ext | |
parent | bf2cd43067549f1164be444424a77f75002bd187 (diff) | |
download | PerlNavigator-85326a2b783220e087a438a49fc9a00e33fe2eb3.zip |
Object recognition bug in web extension, plus critic multiline regex fix
Diffstat (limited to 'browser-ext')
-rw-r--r-- | browser-ext/src/web-completion.ts | 13 | ||||
-rw-r--r-- | browser-ext/src/web-hover.ts | 10 | ||||
-rw-r--r-- | browser-ext/src/web-utils.ts | 2 |
3 files changed, 13 insertions, 12 deletions
diff --git a/browser-ext/src/web-completion.ts b/browser-ext/src/web-completion.ts index 8701383..de89080 100644 --- a/browser-ext/src/web-completion.ts +++ b/browser-ext/src/web-completion.ts @@ -70,7 +70,7 @@ function getMatches(perlDoc: PerlDocument, symbol: string, replace: Range): Com if(knownObject){ const targetVar = perlDoc.canonicalElems.get(knownObject[1]); if(targetVar){ - qualifiedSymbol = qualifiedSymbol.replace(/^\$\w+(?=:)/, targetVar.type); + qualifiedSymbol = qualifiedSymbol.replace(/^\$\w+(?=:)/, targetVar.typeDetail); bKnownObj = true; } } @@ -151,15 +151,16 @@ function buildMatches(lookupName: string, elem: PerlElem, range: Range): Complet let documentation: MarkupContent | undefined = undefined; let docs: string[] = []; - if (elem.type.length > 1 || ( ["v", "c"].includes(elem.type) && lookupName == '$self')) { + + if ( ["v", "c"].includes(elem.type) && ( elem.typeDetail.length > 1 || lookupName == '$self')) { // We either know the object type, or it's $self kind = CompletionItemKind.Variable; - if(elem.type.length > 1 ){ - detail = `${lookupName}: ${elem.type}`; - } else if (lookupName == '$self') { + if (lookupName == '$self') { // elem.package can be misleading if you use $self in two different packages in the same module. Get scoped matches will address this detail = `${lookupName}: ${elem.package}`; - } + } else if(elem.typeDetail.length > 1 ){ + detail = `${lookupName}: ${elem.typeDetail}`; + } } else if(elem.type == PerlSymbolKind.LocalVar){ kind = CompletionItemKind.Variable; } else if(elem.type == PerlSymbolKind.ImportedVar){ diff --git a/browser-ext/src/web-hover.ts b/browser-ext/src/web-hover.ts index de4aac3..9ef7f42 100644 --- a/browser-ext/src/web-hover.ts +++ b/browser-ext/src/web-hover.ts @@ -30,14 +30,14 @@ export function getHover(params: TextDocumentPositionParams, perlDoc: PerlDocume function buildHoverDoc(symbol: string, elem: PerlElem){ let desc = ""; - if (elem.type.length > 1 || ( ["v", "c"].includes(elem.type) && /^\$self/.test(symbol))) { + if ( ["v", "c"].includes(elem.type) && ( elem.typeDetail.length > 1 || /^\$self/.test(symbol))) { // We either know the object type, or it's $self desc = "(object) "; - if(elem.type.length > 1 ){ - desc += `${elem.type}`; - } else if (/^\$self/.test(symbol)) { + if (/^\$self/.test(symbol)) { desc += `${elem.package}`; - } + } else { + desc += `${elem.typeDetail}`; + } } else if(elem.type == 'v'){ // desc = `(variable) ${symbol}`; // Not very interesting info } else if (elem.type == 'n'){ diff --git a/browser-ext/src/web-utils.ts b/browser-ext/src/web-utils.ts index 0ccad67..2132f19 100644 --- a/browser-ext/src/web-utils.ts +++ b/browser-ext/src/web-utils.ts @@ -115,7 +115,7 @@ export function lookupSymbol(perlDoc: PerlDocument, symbol: string, line: number let knownObject = /^(\$\w+)\->(?:\w+)$/.exec(symbol); if(knownObject){ const targetVar = perlDoc.canonicalElems.get(knownObject[1]); - if(targetVar) qSymbol = qSymbol.replace(/^\$\w+(?=\->)/, targetVar.type); + if(targetVar) qSymbol = qSymbol.replace(/^\$\w+(?=\->)/, targetVar.typeDetail); } // Add what we mean when someone wants ->new(). |