#typescript #visual-studio-code #vscode-extensions
Вопрос:
В моей активной функции:
const updateTrigger = () => {
if (vscode.window.activeTextEditor) {
updateDecorations(context);
pickupOutJumpPoints(context);
}
};
vscode.window.onDidChangeActiveTextEditor(
updateTrigger,
null,
context.subscriptions
);
Обновленные исправления:
const PINLINEDECORATION = vscode.window.createTextEditorDecorationType({
gutterIconPath: PUSHPINPATH,
gutterIconSize: "contain",
rangeBehavior: vscode.DecorationRangeBehavior.ClosedClosed,
});
function updateDecorations(ctx: vscode.ExtensionContext): void {
const jps = getJumpPoints(ctx);
const editor = getEditor();
if (jps === undefined) {
return;
} else {
editor.setDecorations(
PINLINEDECORATION,
jps.map(function (point: JumpPoint): vscode.DecorationOptions {
return {
range: new vscode.Range(point.to.position, point.to.position),
hoverMessage: "$(alert)",
};
})
);
}
}
Поскольку мне нужно, чтобы мои украшения оставались закрепленными в одной строке, мне приходится сбрасывать украшения после каждого изменения текстового редактора, это создает артефакты значков, есть ли лучший способ добиться того же закрепленного эффекта?
Демонстрация артефакта: https://i.gyazo.com/383d8e5979e72131e3b61a33ca8769ae.mp4
Ответ №1:
По умолчанию украшения следуют за строкой, поэтому, если вы хотите «Зафиксировать в строке 8», даже если «Содержимое строки 8 перемещается в строку 9» (честно говоря, я не видел прецедента), тогда то, что у вас есть, будет сделано 👍 🏻
Комментарии:
1. Ах ладно, я только что понял, что было бы лучше, если бы он двигался вместе с содержимым. В любом случае, я собираюсь оставить это открытым для ответа при исправлении артефактов, если кому-то в будущем это понадобится.