codemirror-languageservice
Version:
Integrate a Language Server Protocol compatible language service into CodeMirror
38 lines • 1.23 kB
JavaScript
import { fromMarkupContent } from './markup-content.js';
import { getTextDocument } from './text-document.js';
/**
* Create an LSP based hover tooltip provider.
*
* @param options
* Options to configure the hover tooltips.
* @returns
* A CodeMirror hover tooltip source that uses LSP based hover information.
*/
export function createHoverTooltipSource(options) {
return async (view, pos) => {
const textDocument = getTextDocument(view.state);
const info = await options.doHover(textDocument, textDocument.positionAt(pos));
if (!info) {
return null;
}
if (textDocument.version !== getTextDocument(view.state).version) {
return null;
}
let start = pos;
let end;
const { contents, range } = info;
if (range) {
start = textDocument.offsetAt(range.start);
end = textDocument.offsetAt(range.end);
}
const tooltipView = {
dom: await fromMarkupContent(contents, document.createElement('div'), options)
};
return {
pos: start,
end,
create: () => tooltipView
};
};
}
//# sourceMappingURL=hover-tooltip.js.map