Skip to content

Latest commit

 

History

History
145 lines (109 loc) · 4.41 KB

settings-migration.md

File metadata and controls

145 lines (109 loc) · 4.41 KB

Settings Migration

In v2.24.0 we migrated all settings to conform to common VS Code setting naming conventions. This improves readability in the VS Code Settings UI as well as making the settings easier to discover when typing in the JSON Settings view.

After v2.24.0, if there are old settings left in the User or Workspace scopes, this extension will show a prompt asking to migrate the settings. The user can either automatically migrate, ignore future warnings, open the Settings UI to manually migrate, or click a link for more information.

Automatic Migration

Automatic migration uses the VS Code Settings API to update your currently settings. It respects the currently set values and migrates settings only if they are set.

WARNING: Since this process uses the VS Code Settings API, it does rewrite your Settings file. VS Code may rearrange settings or remove comments in this process. If you have comments, a special order, or other customizations please chose to migrate your settings manually.

Manual Migration

The terraform.languageServer setting block has been extracted out to individual settings.

In addition, terraform.languageServer.external has been renamed to terraform.languageServer.enable

OldNew
"terraform.languageServer": {
  "external": true,
  "pathToBinary": "",
  "args": [ "serve" ],
  "ignoreSingleFileWarning": false
},
"terraform.languageServer.enable": true,
"terraform.languageServer.pathToBinary": "",
"terraform.languageServer.args": [ "serve" ],
"terraform.languageServer.ignoreSingleFileWarning": false

The terraform-ls.terraformExec settings have been moved to the terraform section and have been renamed:

OldNew
"terraform-ls.terraformExecPath": "",
"terraform-ls.terraformExecTimeout": "",
"terraform-ls.terraformExecLogFilePath": ""
"terraform.languageServer.terraform.path": "",
"terraform.languageServer.terraform.timeout": "",
"terraform.languageServer.terraform.logFilePath": ""

All settings previously under the terraform-ls section have been moved to the terraform section and a new indexing subsection:

OldNew
"terraform-ls.rootModules": [],
"terraform-ls.excludeRootModules": [],
"terraform-ls.ignoreDirectoryNames": []
"terraform.languageServer.rootModules": [],
"terraform.languageServer.indexing.ignorePaths": [],
"terraform.languageServer.indexing.ignoreDirectoryNames": []

The terraform.experimentalFeatures setting block has been extracted out to individual settings:

OldNew
"terraform.experimentalFeatures": {
  "validateOnSave": false,
  "prefillRequiredFields": false,
},
"terraform.experimentalFeatures.validateOnSave": false,
"terraform.experimentalFeatures.prefillRequiredFields": false,

For an easy to view table of settings, see the Contributions tab when viewing the Terraform Extension in the VS Code Extension Pane.

Setting Scope

This extension has several settings that allow users to customize an executable path for different functions. These paths can vary depending on where the extension is running.

As of v2.24.0, the extension uses the machine scope for the following settings:

terraform.languageServer.path
terraform.languageServer.args
terraform.languageServer.tcp.port
terraform.languageServer.terraform.path
terraform.languageServer.terraform.logFilePath
terraform.languageServer.terraform.timeout
terraform.languageServer.rootModules
terraform.languageServer.excludeRootModules
terraform.languageServer.ignoreDirectoryNames

Note: This means these settings are no longer able to be configred in the Workspace or Folder setting scopes. For more information about setting scope see the VS Code setting documentation

This will allow VS Code to know where to read each setting depending on where the extension is running. For example: running locally on a Windows desktop, or in a WSL instance, or remotely in a GitHub Codespace or a Remote SSH session. VS Code understands where the extension is "running" and can read settings from the proper location, if the settings are properly scoped.