UNPKG

@abaplint/core

Version:
58 lines 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Hover = void 0; const Tokens = require("../abap/1_lexer/tokens"); const Statements = require("../abap/2_statements/statements"); const LServer = require("vscode-languageserver-types"); const _abap_object_1 = require("../objects/_abap_object"); const _lsp_utils_1 = require("./_lsp_utils"); const _lookup_1 = require("./_lookup"); const _statement_1 = require("../abap/2_statements/statements/_statement"); class Hover { constructor(reg) { this.reg = reg; } find(pos) { const file = _lsp_utils_1.LSPUtils.getABAPFile(this.reg, pos.textDocument.uri); if (file === undefined) { return undefined; } const obj = this.reg.getObject(file.getObjectType(), file.getObjectName()); if (!(obj instanceof _abap_object_1.ABAPObject)) { return undefined; } const found = _lsp_utils_1.LSPUtils.findCursor(this.reg, pos); if (found === undefined) { return undefined; } else if (found.token instanceof Tokens.StringTemplate || found.token instanceof Tokens.StringTemplateBegin || found.token instanceof Tokens.StringTemplateEnd || found.token instanceof Tokens.StringTemplateMiddle) { return { kind: LServer.MarkupKind.Markdown, value: "String Template" }; } else if (found.snode.get() instanceof _statement_1.MacroCall) { return { kind: LServer.MarkupKind.Markdown, value: "Macro Call" }; } else if (found.snode.get() instanceof Statements.Define && found.stack.length === 2) { return { kind: LServer.MarkupKind.Markdown, value: "Macro Name" }; } else if (found.token instanceof Tokens.Comment) { let type = "Comment"; if (found.token.getStr().startsWith(`"!`)) { type = "ABAP Doc Comment"; } return { kind: LServer.MarkupKind.Markdown, value: type }; } const lookup = _lookup_1.LSPLookup.lookup(found, this.reg, obj); if (lookup === null || lookup === void 0 ? void 0 : lookup.hover) { return { kind: LServer.MarkupKind.Markdown, value: lookup.hover }; } if (found.token instanceof Tokens.StringToken) { return { kind: LServer.MarkupKind.Markdown, value: "String" }; } return undefined; } } exports.Hover = Hover; //# sourceMappingURL=hover.js.map