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_Text Decorations_Gutter - Fatal编程技术网

Visual studio code 如何在VSCode扩展中获取当前装饰列表或处理装饰位置的更改?

Visual studio code 如何在VSCode扩展中获取当前装饰列表或处理装饰位置的更改?,visual-studio-code,vscode-extensions,text-decorations,gutter,Visual Studio Code,Vscode Extensions,Text Decorations,Gutter,让我们考虑一下这个例子。 我有一个包含以下内容的文件: 1: one 2: two 3: three 我为第二行创建了一个线条装饰: 这给了我 1: one * 2: two 3: three 下一步: 我通过在第“2”行之前添加新行来更改文件内容。 之后,该文件如下所示: 1: one 2: * 3: two 4: three 正如您所看到的,VSCode已经更新了我的线条装饰,现在它被定位在第3行(而不是第2行),这是完全正确的,我也希望如此 现在是问

让我们考虑一下这个例子。
我有一个包含以下内容的文件:

  1: one
  2: two
  3: three
我为第二行创建了一个线条装饰:

这给了我

  1: one
* 2: two
  3: three
下一步: 我通过在第“2”行之前添加新行来更改文件内容。
之后,该文件如下所示:

  1: one
  2: 
* 3: two
  4: three
正如您所看到的,VSCode已经更新了我的线条装饰,现在它被定位在第3行(而不是第2行),这是完全正确的,我也希望如此

现在是问题: 如何获取我的线路装饰的当前更新位置? 如果我保持
范围
参考-它仍然指向第2行

处理这种装饰变化的正确方法是什么

这两个选项中的任何一个都能满足我的要求:

  • 查询当前打开文件显示的所有当前装饰位置的方法
  • 订阅
    装饰
    /
    范围
    更改的方法,以便我可以手动处理这些更改
  • 也许我完全错了,应该用另一种方式来做。

    请告知

    因此,显然无法在VSCode中获取打开文件的所有当前装饰。这是一个没有明确计划要解决的老问题

    我找到了一个内部方法
    getLineDecorations
    ——我试图通过

    vscode.window.activeTextEditor?._proxy
    vscode.window.activeTextEditor?._runOnProxy
    
    但我没有成功

    因此,目前我们在这里提到的唯一选择可能是:

    • 保存所有装饰位置的副本
    • 通过
      vscode.workspace.onDidChangeTextDocument
      处理程序在每次文本更新时手动更新
    这是可行的,但非常恼人的是,我们必须手动做这件事。¯_(ツ)_/'
    (也非常容易出错)

    vscode.window.activeTextEditor?._proxy
    vscode.window.activeTextEditor?._runOnProxy