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 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.
The terraform.languageServer
setting block has been extracted out to individual settings.
In addition, terraform.languageServer.external
has been renamed to terraform.languageServer.enable
Old | New |
"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:
Old | New |
"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:
Old | New |
"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:
Old | New |
"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.
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.