vscode-go
vscode-go copied to clipboard
No support for `"editor.formatOnSaveMode":` `"modifications"` and `"modificationsIfAvailable"`
What version of Go, VS Code & VS Code Go extension are you using?
Version Information
- Run
go versionto get version of Go from the VS Code integrated terminal. -
- Run
gopls -v versionto get version of Gopls from the VS Code integrated terminal. -
- Run
code -vorcode-insiders -vto get version of VS Code or VS Code Insiders. -
- Check your installed extensions to get the version of the VS Code Go extension
-
- Run Ctrl+Shift+P (Cmd+Shift+P on Mac OS) >
Go: Locate Configured Go Toolscommand. -
Share the Go related settings you have added/edited
Run Preferences: Open Settings (JSON) command to open your settings.json file.
Share all the settings with the go. or ["go"] or gopls prefixes.
"gopls": {},
"[go]": {
"editor.defaultFormatter": "golang.go",
"editor.formatOnSave": true,
"editor.formatOnSaveMode":
"file", // (default)
// "modifications" // BUG: DOESN'T FORMAT
// "modificationsIfAvailable" // BUG: USES "modifications" INSTEAD OF "file"
},
https://github.com/Malix-off/vscode-issues-203463/blob/4c506f5c9fedbd12d0295455675a63c1f45f1591/.vscode/settings.json#L8-L17
Describe the bug
"editor.formatOnSaveMode": "modifications" is broken anywhere & "editor.formatOnSaveMode": "modificationsIfAvailable" relies on modification anyway
Steps to reproduce the behavior:
- Clone https://github.com/Malix-off/vscode-issues-203463 I provided a dev container config
- Disable every extension except golang.go.
- Test with
"editor.formatOnSaveMode": "file"- Make https://github.com/Malix-off/vscode-issues-203463/blob/master/main.go unformatted (for exemple, add a tabulation before L3)
- Save
- Check results (currently works)
- Test with
"editor.formatOnSaveMode": "modifications"- Make https://github.com/Malix-off/vscode-issues-203463/blob/master/main.go unformatted (for exemple, add a tabulation before L3)
- Save
- Check results (currently doesn't work)
- Test with
"editor.formatOnSaveMode": "modificationsIfAvailable"- Make https://github.com/Malix-off/vscode-issues-203463/blob/master/main.go unformatted (for exemple, add a tabulation before L3)
- Save
- Check results (currently call
"modifications", thus doesn't work)
VS Code Go doesn't support formatOnSaveMode: "modifications". Formatting uses the same logic as gofmt, which operates on whole files at a time.
Marking this as a feature request, but it is realistically unlikely to be implemented any time soon, given that so much relies on preserving gofmt'edness for the entire file.
Understandable.
There sure would be a way to make it so modificationsIfAvailable would chose file instead of crashing on modifications (otherwise there would be no point in this option)
Moreover, there is a way in the VSCode API to make extensions enforce external settings defaults, and would be great to use it for
[go]: {
"editor.formatOnSaveMode": "modifications"
}
Until modificationsIfAvailable is fixed
@Malix-off I'm not sure. CC @hyangah, who may know.
With Go, "editor.formatOnSaveMode": "modificationsIfAvailable" is missleading and break formatting.
It should possible to differentiate from file and modification, at least, thus making it possible to use file instead of modifications when using modificationsIfAvailable.
By the way, my initial issue was more to address a bug report about modificationsIfAvailable chosing modifications instead of file than to feature request modifications to work (which would be a feature request).
References
see https://github.com/microsoft/vscode/issues/203463#issuecomment-1918864999
Poke @findleyr
This issue is not a feature request but a bug report
See https://github.com/golang/vscode-go/issues/3174#issuecomment-1947364694