volar-service-typescript-twoslash-queries
Advanced tools
Comparing version 0.0.11 to 0.0.12
import type { Service } from '@volar/language-service'; | ||
declare const _default: () => Service; | ||
export default _default; | ||
export declare function create(): Service; | ||
export default create; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.default = () => (context) => ({ | ||
provideInlayHints(document, range) { | ||
if (isTsDocument(document.languageId)) { | ||
const ts = context.inject('typescript/typescript'); | ||
const languageService = context.inject('typescript/languageService'); | ||
const inlayHints = []; | ||
for (const pointer of document.getText(range).matchAll(/^\s*\/\/\s*\^\?/gm)) { | ||
const pointerOffset = pointer.index + pointer[0].indexOf('^?') + document.offsetAt(range.start); | ||
const pointerPosition = document.positionAt(pointerOffset); | ||
const hoverOffset = document.offsetAt({ | ||
line: pointerPosition.line - 1, | ||
character: pointerPosition.character, | ||
}); | ||
const quickInfo = languageService.getQuickInfoAtPosition(context.env.uriToFileName(document.uri), hoverOffset); | ||
if (quickInfo) { | ||
inlayHints.push({ | ||
position: { line: pointerPosition.line, character: pointerPosition.character + 2 }, | ||
label: ts.displayPartsToString(quickInfo.displayParts), | ||
paddingLeft: true, | ||
paddingRight: false, | ||
}); | ||
exports.create = void 0; | ||
function create() { | ||
return (context) => { | ||
return { | ||
provideInlayHints(document, range) { | ||
if (isTsDocument(document.languageId)) { | ||
const ts = context.inject('typescript/typescript'); | ||
const languageService = context.inject('typescript/languageService'); | ||
const inlayHints = []; | ||
for (const pointer of document.getText(range).matchAll(/^\s*\/\/\s*\^\?/gm)) { | ||
const pointerOffset = pointer.index + pointer[0].indexOf('^?') + document.offsetAt(range.start); | ||
const pointerPosition = document.positionAt(pointerOffset); | ||
const hoverOffset = document.offsetAt({ | ||
line: pointerPosition.line - 1, | ||
character: pointerPosition.character, | ||
}); | ||
const quickInfo = languageService.getQuickInfoAtPosition(context.env.uriToFileName(document.uri), hoverOffset); | ||
if (quickInfo) { | ||
inlayHints.push({ | ||
position: { line: pointerPosition.line, character: pointerPosition.character + 2 }, | ||
label: ts.displayPartsToString(quickInfo.displayParts), | ||
paddingLeft: true, | ||
paddingRight: false, | ||
}); | ||
} | ||
} | ||
return inlayHints; | ||
} | ||
} | ||
return inlayHints; | ||
} | ||
}, | ||
}); | ||
}, | ||
}; | ||
}; | ||
} | ||
exports.create = create; | ||
exports.default = create; | ||
function isTsDocument(languageId) { | ||
@@ -31,0 +38,0 @@ return languageId === 'javascript' || |
{ | ||
"name": "volar-service-typescript-twoslash-queries", | ||
"version": "0.0.11", | ||
"version": "0.0.12", | ||
"main": "out/index.js", | ||
@@ -23,3 +23,3 @@ "license": "MIT", | ||
}, | ||
"gitHead": "5be7c0c4fc41f4ebe3d8f3d272d3a0d8377973ad" | ||
"gitHead": "7422c8d99d498df660ff9be3491545a5b45b3622" | ||
} |
2638
45