summaryrefslogtreecommitdiff
path: root/browser-ext
diff options
context:
space:
mode:
authorbscan <10503608+bscan@users.noreply.github.com>2023-01-17 20:17:23 -0500
committerbscan <10503608+bscan@users.noreply.github.com>2023-01-17 20:17:23 -0500
commit85326a2b783220e087a438a49fc9a00e33fe2eb3 (patch)
tree844dbfed802c7c230b2d79ccc96c03b85b951b9f /browser-ext
parentbf2cd43067549f1164be444424a77f75002bd187 (diff)
downloadPerlNavigator-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.ts13
-rw-r--r--browser-ext/src/web-hover.ts10
-rw-r--r--browser-ext/src/web-utils.ts2
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().