Как сделать, чтобы у вложенных списков маркеров уценки были разные стили маркера в vscode - PullRequest
0 голосов
/ 28 августа 2018

Я хочу иметь списки рендеринга vscode в уценке с маркерами вместо символа звездочки (*), чтобы верхний уровень использовал •, следующий - next и т. Д.

Моим первым подходом было создание лигатурного шрифта с помощью FontForge, который заменил * на ◦, пробел плюс * на ◦, два пробела плюс * на ▪ и т. Д., Но использование лигатур имеет очевидную проблему, заключающуюся в том, что он не зависит от контекста Таким образом, будут заменены все звездочки, а не только те, которые возглавляют строку.

Глядя на API-интерфейс для оформления текста vscode , кажется, что он ограничен простым изменением стиля и цвета шрифта, а не семейством шрифтов. Есть ли способ визуально заменить символы в vscode? Они по-прежнему должны быть сохранены в виде звездочек в исходном коде, чтобы иметь действительную уценку.

1 Ответ

0 голосов
/ 05 сентября 2018

Начиная с VS Code 1.27, вам лучше всего написать расширение, которое добавляет декораторы для символов *, чтобы сделать это. Посмотрите на пример расширения , чтобы начать

Я не думаю, что текущий API vscode позволяет перезаписывать сам текст *, но вы можете попробовать эмулировать его, сделав символ * прозрачным и добавив свою точку с маркером после него:

const level1DecorationType = vscode.window.createTextEditorDecorationType({
    color: 'transparent',
    after: {
        contentText: "◦"
    }
});

Тогда ваше расширение просто должно применить этот стиль к точкам маркера в документе.

Неофициально, вы также можете использовать этот взломщик декоратора, чтобы полностью заменить символ *:

const level1DecorationType = vscode.window.createTextEditorDecorationType({
    color: 'transparent',
    textDecoration: `none; display: inline-block; width: 0;`,
    after: {
        contentText: "◦"
    }
});

Однако это не гарантирует правильной работы или продолжения работы в будущем.

Попробуйте открыть запрос на добавление , чтобы получить лучшую поддержку декораторов для этого

...