Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code 在VSCode扩展中更改代码的可视表示形式_Visual Studio Code_Vscode Extensions - Fatal编程技术网

Visual studio code 在VSCode扩展中更改代码的可视表示形式

Visual studio code 在VSCode扩展中更改代码的可视表示形式,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我的问题: 有没有一种方法可以编写一个扩展,在不更改底层代码的情况下更改vscode显示的内容?Vscode似乎有很多不同类型的扩展,我很难找到从哪里开始 上下文: 我想试着写一个vscode扩展,我已经有一段时间的想法了。(如果已经存在,请告诉我。) ASCII中的“制表符”字符实际上是一个“水平制表”键。它最初是用来与“垂直制表”一起制表的。您的打印机/终端将有一个列和行停止点,HT和VT字符可以前进到该点。恢复tab键的原始用途会有点酷。换句话说,这样编写的代码: On the disk:

我的问题: 有没有一种方法可以编写一个扩展,在不更改底层代码的情况下更改vscode显示的内容?Vscode似乎有很多不同类型的扩展,我很难找到从哪里开始

上下文: 我想试着写一个vscode扩展,我已经有一段时间的想法了。(如果已经存在,请告诉我。)

ASCII中的“制表符”字符实际上是一个“水平制表”键。它最初是用来与“垂直制表”一起制表的。您的打印机/终端将有一个列和行停止点,HT和VT字符可以前进到该点。恢复tab键的原始用途会有点酷。换句话说,这样编写的代码:

On the disk:
#␉Comment␉Here␉for␉Columns␊
thing =␉"howdy",␉"doody",␉"mein froind",␉"!"␊
␉" I love",␉"what you've",␉"done with",␉"the place";␊

What's displayed (vertical line would be partly transparent):
#       | Comment    | Here           | for            | Columns
thing = | "howdy",   | "doody",       | "mein froind", | "!"
        | " I love", | "what you've", | "done with",   | "the place";
因此,通过查看后续行并尝试对齐水平制表符后面的任何内容,可以神奇地对齐制表符。Tab将不再表示宽度为8或4的列,而是灵活地与前面和后面的代码行对齐

这意味着您不需要手动对齐任何内容。您也可以有它,使您的最大线长度溢出将自动包装和自动对齐标签。我可能会避免使用垂直制表符,因为大多数代码解释器可能无法正确地忽略它。不过,大多数人应该忽略常规的水平选项卡


那么,这是什么类型的扩展呢?如何显示与磁盘上不同的代码?提前谢谢。

我找到了一种黑客的方法。不理想,因为渲染不稳定

创建装饰器类型扩展。定义装饰类型时,设置字母间距(对于文本,设置不透明度),以基本上使匹配内容不可见,并减少空间

const tabDecorationType = vscode.window.createTextEditorDecorationType({
    letterSpacing: '-1em',
    opacity: '0'
});
当以后设置装饰时,让您的装饰选项对象在之前和之后设置文本,以便基本上为您的装饰提供新文本

const regEx = /\t/g;
const text = activeEditor.document.getText();
const tabs: vscode.DecorationOptions[] = [];
let match;
while (match = regEx.exec(text)) {
    const startPos = activeEditor.document.positionAt(match.index);
    const endPos = activeEditor.document.positionAt(match.index + 1);
    const decoration: vscode.DecorationOptions = {
        range: new vscode.Range(startPos, endPos),
        renderOptions: {
            after: {contentText: "| "},
            before: {contentText: "  "}, // <-- replace with correct number of spaces
        }
    };
    tabs.push(decoration);
}
activeEditor.setDecorations(tabDecorationType, tabs);
const regEx=/\t/g;
const text=activeEditor.document.getText();
常量选项卡:vscode.DecorationOptions[]=[];
让我们比赛;
while(match=regEx.exec(text)){
const startPos=activeEditor.document.positionAt(match.index);
const endPos=activeEditor.document.positionAt(match.index+1);
常量装饰:vscode.DecorationOptions={
范围:新vscode.range(起始位置、结束位置),
渲染:{
在:{contentText:“|”}之后,

before:{contentText:”“},//而不是重写所有可以使用标记的内容甚至支持表,我相信vscode中的标记扩展可以显示这一点。这是不可编译的。关键是要在代码中这样做,并使其仍能正常编译。我只想知道如何编写vscode扩展以显示不同于底层字符的内容。我还希望有一天>=被绘制为≥ 诸如此类。我只是找不到任何好的示例或vscode扩展的起始位置显示这样的translate。我知道符号可以用连字完成。这就是我现在使用的。我只是想知道是否可以在vscode中显示translate。如果不可以,我想也可以。我不知道有这样的功能,如果你看不到的话在vscodeapi引用()上进行类似的操作可能是不可能的。