@abaplint/core
Version:
abaplint - Core API
58 lines • 2.52 kB
JavaScript
;
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