diff --git a/actions-languageserver/src/connection.ts b/actions-languageserver/src/connection.ts index 83a046f..9b08b70 100644 --- a/actions-languageserver/src/connection.ts +++ b/actions-languageserver/src/connection.ts @@ -137,13 +137,13 @@ export function initConnection(connection: Connection) { connection.onHover(async ({position, textDocument}: HoverParams): Promise => { return timeOperation("hover", async () => { const repoContext = repos.find(repo => textDocument.uri.startsWith(repo.workspaceUri)); - - return await hover(documents.get(textDocument.uri)!, position, { - descriptionProvider: descriptionProvider(client, cache), - contextProviderConfig: repoContext && contextProviders(client, repoContext, cache), - fileProvider: getFileProvider(client, cache, repoContext?.workspaceUri, async path => { - return await connection.sendRequest(Requests.ReadFile, {path}); - }) + return await hover(documents.get(textDocument.uri)!, position, { + descriptionProvider: descriptionProvider(client, cache), + contextProviderConfig: repoContext && contextProviders(client, repoContext, cache), + fileProvider: getFileProvider(client, cache, repoContext?.workspaceUri, async path => { + return await connection.sendRequest(Requests.ReadFile, {path}); + }) + }); }); }); diff --git a/actions-languageservice/src/hover.ts b/actions-languageservice/src/hover.ts index dadbf03..4fe554f 100644 --- a/actions-languageservice/src/hover.ts +++ b/actions-languageservice/src/hover.ts @@ -81,7 +81,7 @@ export async function hover(document: TextDocument, position: Position, config?: info(`Calculating hover for token with definition ${token.definition.key}`); - if (tokenResult.parent && isCronMappingValue(tokenResult) && isString(token)) { + if (tokenResult.parent && isCronMappingValue(tokenResult)) { const tokenValue = (token as StringToken).value; const description = getCronDescription(tokenValue); if (description) { @@ -197,7 +197,7 @@ function expressionHover( function getReusableWorkflowInputDescription(workflowContext: WorkflowContext, tokenResult: TokenResult, template: WorkflowTemplate): string { const reusableWorkflowJob = workflowContext.reusableWorkflowJob - if (reusableWorkflowJob && !isReusableWorkflowJob(reusableWorkflowJob)) { + if (!reusableWorkflowJob || !isReusableWorkflowJob(reusableWorkflowJob)) { return ""; } @@ -213,8 +213,8 @@ function getReusableWorkflowInputDescription(workflowContext: WorkflowContext, t const templateJob = templateJobs.find(job => job.id.value === reusableWorkflowJob!.id.value); // Find the input description in the template, if any - if (templateJob && reusableWorkflowJob!["input-definitions"] && templateJob["input-definitions"]) { - const definition = templateJob["input-definitions"].find((tokenResult.token! as StringToken).value) + if (templateJob && reusableWorkflowJob["input-definitions"] && templateJob["input-definitions"]) { + const definition = templateJob["input-definitions"].find((tokenResult.token as StringToken).value) if (definition && isMapping(definition)) { const description = definition.find(DESCRIPTION) if (description && isString(description)) {