Я правильно понимаю поведение API VS Code? Настройки * объекта * не по умолчанию (если имеются) всегда объединяются? - PullRequest
0 голосов
/ 26 октября 2019

Я работаю над расширением кода VS, и я думаю, что, возможно, я что-то упустил в документах, или же поведение, которое я вижу, просто там не указано, и мои предположения неверны ...?

Я определил некоторые настройки по умолчанию для своего расширения, например ...

package.json

  "contributes": {
    "configuration": {
      "title": "ToggleSettingsChanges",
      "properties": {
        "toggleSettingsChanges.settingsToToggle": {
          "scope": "resource",
          "type": "object",
          "default": {
            "window.zoomLevel": 2,
            "editor.fontSize": 22,
            "terminal.integrated.fontSize": 16,
            "scm.diffDecorations": "none",
            "workbench.statusBar.visible": false,
            "editor.cursorBlinking": "solid",
            "workbench.activityBar.visible": false
          },
          "description": "[ snip ]"
        }
      }
    }
  },

расширение.js

// In the "main" method that runs when a command is activated:

const config = vscode.workspace.getConfiguration("toggleSettingsChanges");
const settingsToToggle = config.get("settingsToToggle");
const inspectedSettingsToToggle = config.inspect("settingsToToggle");

console.log("settingsToToggle:", JSON.stringify(settingsToToggle), "\n\n")
console.log("inspected settingsToToggle:", JSON.stringify(inspectedSettingsToToggle), "\n\n")
return;

В экземпляре узла расширения можно настроить и настроить параметры, в том числе:

Настройки пользователя или рабочей области JSON

// ... 
"toggleSettingsChanges.settingsToToggle": {
  "editor.fontSize": 11,
  "pumpkins_are_great": true
},

В выводе консоли я вижу следующее:

settingsToToggle: {"window.zoomLevel":2,"editor.fontSize":11,"terminal.integrated.fontSize":16,"scm.diffDecorations":"none","workbench.statusBar.visible":false,"editor.cursorBlinking":"solid","workbench.activityBar.visible":false,"pumpkins_are_great":true} 

inspected settingsToToggle: {"key":"toggleSettingsChanges.settingsToToggle","defaultValue":{"window.zoomLevel":2,"editor.fontSize":22,"terminal.integrated.fontSize":16,"scm.diffDecorations":"none","workbench.statusBar.visible":false,"editor.cursorBlinking":"solid","workbench.activityBar.visible":false},"globalValue":{"editor.fontSize":11,"pumpkins_are_great":true}} 

Для строки settingsToToggle я ожидал , чтобы видеть только следующие настройки:

{"editor.fontSize":11,"pumpkins_are_great":true}

Похоже , что если вы задаете объект по умолчанию, любая предоставленная конфигурация объединяется с этим объектом, а не заменяется полностью.

Это тот случай? Я пропустил это в документации?

Мне кажется, что значение (даже объект) будет перезаписано, а не просто объединено.

...