Struct tag autocomplete
Variable cases and options are customizable (view config)
Currently supported cases: camel
| snake
| uppersnake
| pascal
| none
Struct tag value autocomplete
Suggestion list for each tag can be configured (view config)
Any tag can be added for value suggestion (doesn't need to be supported by tag autocomplete above)
Generate struct tags command
Generated tags are configurable (view config)
Can be activated by command palette, context menu, or shortcut (⌃ + ⇧ + T)
If the autocomplete suggestion doesn't work, try adding this config in your settings.json
Open Command Palette
(⌘ + ⇧ + P) then Preferences: Open Settings (JSON)
"editor.quickSuggestions": {
"strings": true
}
-
Config Key
goStructTagAutogen.tagSuggestion
-
Config Object
{ "TAG_NAME_1": { "cases": ["CASE_1", "CASE_2", ...] "options": ["OPTION_1", "OPTION_2", ...] }, ... }
Key Description Type cases Field name formatting for this tag Case[] options Options after the field name String[] Supported cases:
camel
,snake
,uppersnake
,pascal
,none
When multiple cases are set, every cases (and every combinations of cases and options) will appear in the autocomplete suggestion.Any string can be put in the
options
array.
The only special case is-
(dash). Instead of appending after variable name likeomitempty
(json:"field,omitempty"
), it will replace the variable name (json:"-"
).Each tag needs at least one config, either
cases
oroptions
.- Config only
cases
— suggest a list of tags with the formatted field name as the value - Config only
options
— suggest a list of tags with each option as the value - Config both
cases
andoptions
- Example: The default
json
config below will suggestjson:"fieldName"
,json:"fieldName,omitempty"
andjson:"-"
- Example: The default
- Config only
-
Default Value
"goStructTagAutogen.tagSuggestion": { "json": { "cases": ["camel"], "options": ["omitempty", "-"] }, "bson": { "cases": ["snake"], "options": ["omitempty", "-"] }, "binding": { "options": ["required"] } }
The extension will fallback to the default above when no config provided.
-
Config Key
goStructTagAutogen.valueSuggestion
-
Config Object
An object with tag names as keys and arrays of string as values{ "TAG_NAME_1": ["SUGGESTION_1", "SUGGESTION_2", ...], "TAG_NAME_2": ["SUGGESTION_1", "SUGGESTION_2", ...], ... }
Tag name can be anything.
When typing a value for a tag in the config, the texts in the array will be used to build the suggestion list.
Any string can be put in the array. No special case or character that need to be escaped.Tag value autocomplete will be triggered when the typing value matched the pattern in this config. (also when typing
"
or,
) -
Default Value
"goStructTagAutogen.valueSuggestion": { "json": ["omitempty"], "bson": ["omitempty"], "binding": ["required"] }
-
Config key
goStructTagAutogen.generation
-
Config object
{ "template": "GEN_TEMPLATE" }
Key Description Type Default template Struct tag template for the command String See below -
Default value
"goStructTagAutogen.generation": { "template": "json:\"{{camel}}\" bson:\"{{snake}}\"" }
Double quotes need to be escaped (
\"
) -
Available Placeholders
{{camel}}
for the camel cased version of the field name{{snake}}
for the snake cased version of the field name{{uppersnake}}
for the upper snake cased version of the field name{{pascal}}
for the pascal cased version of the field name{{none}}
for the field name
-
Example
Config: { "tags": "json:\"{{camel}},omitempty\" bson:\"{{snake}}\" binding:\"required,gte=10\"" } Generated tags: { TotalAmount int `json:"totalAmount,omitempty" bson:"total_amount" binding:"required,gte=10"` }
If you want to add new cases, or new features, you can follow the guide in CONTRIBUTING.md.