如何保留 vscode 扩展的信息?

Jus*_*ner 8 visual-studio-code vscode-extensions

我打算编写一个 Visual Studio Code 扩展,它需要保存一些信息,例如计数器。用户可以按快捷键增加或减少计数器,计数器的值将保存在某个地方。下次当用户启动 Visual Studio Code 时,扩展可以加载计数器的最后一个值。我的问题是,存储这些信息的正确位置在哪里?

Gam*_*a11 16

您可能正在寻找MementoAPI。该ExtensionContext有您可以访问两个不同的纪念实例:

  • workspaceState

    在当前打开的工作空间的上下文中存储状态的备忘录对象。

  • globalState

    存储独立于当前打开的工作区的状态的备忘录对象。

据我所知,两者都在 VSCode 更新中幸存下来。

  • 我认为一些例子会有所帮助 (3认同)

Man*_*lon 5

当您希望在所有 VSCODE 窗口中查看全局状态时,可以使用globalState扩展上下文中的 。

我在扩展中使用此代码来存储string


async function activate (context) {
  const state = stateManager(context)
  
  const {
    lastPaletteTitleApplied
  } = state.read()

  await state.write({
    lastPaletteTitleApplied: 'foo bar'
  })

}


function stateManager (context) {
  return {
    read,
    write
  }

  function read () {
    return {
      lastPaletteTitleApplied: context.globalState.get('lastPaletteApplied')
    }
  }

  async function write (newState) {
    await context.globalState.update('lastPaletteApplied', newState.lastPaletteTitleApplied)
  }
}

Run Code Online (Sandbox Code Playgroud)