如何使嵌套的Markdown项目符号列表在vscode中具有不同的项目符号样式

时间:2018-08-28 16:51:11

标签: visual-studio-code markdown vscode-extensions monaco-editor ligature

我想在Markdown中使用vscode渲染列表而不是星号(*)来标记项目符号,以便顶层使用•,下一层使用◦,等等。

我的第一种方法是用FontForge创建连字字体,用*替换◦,空格加*替换为◦,两个空格加*替换为▪,依此类推,但是使用连字存在一个明显的问题,即它对上下文不敏感,因此所有星号都将被替换,而不仅仅是前导星号。

vscode text decoration API看,似乎仅限于更改字体样式和颜色,而不是字体系列。有什么方法可以直观地替换vscode中的字符吗?它们仍应在源代码中另存为星号,以确保有效的降价。

1 个答案:

答案 0 :(得分:2)

从VS Code 1.27开始,最好的办法是编写一个扩展程序,在*字符上添加修饰符以实现此目的。看一下decorator example extension入门

我不认为当前的vscode API允许您覆盖*文本本身,但是您可以通过使*字符透明并在其后添加自定义项目符号来尝试模仿此文本: / p>

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: "◦"
    }
});

但是,不能保证它可以正常工作或将来继续工作。

考虑opening a feature request,以获得对此更好的装饰器支持

相关问题