Как исправить артефакты индикатора желоба VSCode при изменении текстового редактора?

#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. Ах ладно, я только что понял, что было бы лучше, если бы он двигался вместе с содержимым. В любом случае, я собираюсь оставить это открытым для ответа при исправлении артефактов, если кому-то в будущем это понадобится.