Protobuf 3 support for Visual Studio Code — syntax, validation, snippets, and quick compile/renumber workflows.
⚠️ Project is no longer maintained. Please consider using Protobuf VSC instead. This extension will receive no further updates and is marked as deprecated on the VS Code Marketplace. A big thank you to all users and contributors!
![]()
.protoprotocclang-format
Open the command palette (Ctrl+Shift+P / Cmd+Shift+P) and run:
| Command | Description |
|---|---|
proto3: Compile All Protos | Compile all workspace protos using configured protoc.options. |
proto3: Compile This Proto | Compile the active proto using configured protoc.options. |
proto3: Renumber Fields/Enum Values | Renumber fields from 1 and enum values from 0 in the current scope. |
While inside a message or enum, run proto3: Renumber Fields/Enum Values.
Tags are rewritten so fields count up from 1 and enums from 0.
| prefix | body |
|---|---|
| sp2 | syntax = "proto2"; |
| sp3 | syntax = "proto3"; |
| pkg | package package.name; |
| imp | import "path/to/other/protos.proto"; |
| ojp | option java_package = "java.package.name"; |
| ojoc | option java_outer_classname = "ClassName"; |
| o4s | option optimize_for = SPEED; |
| o4cs | option optimize_for = CODE_SIZE; |
| o4lr | option optimize_for = LITE_RUNTIME; |
| odep | option deprecated = true; |
| oaa | option allow_alias = true; |
| msg | message MessageName {} |
| fbo | bool field_name = tag; |
| fi32 | int32 field_name = tag; |
| fi64 | int64 field_name = tag; |
| fu32 | uint32 field_name = tag; |
| fu64 | uint64 field_name = tag; |
| fs32 | sint32 field_name = tag; |
| fs64 | sint64 field_name = tag; |
| ff32 | fixed32 field_name = tag; |
| ff64 | fixed64 field_name = tag; |
| fsf32 | sfixed32 field_name = tag; |
| fsf64 | sfixed64 field_name = tag; |
| ffl | float field_name = tag; |
| fdo | double field_name = tag; |
| fst | string field_name = tag; |
| fby | bytes field_name = tag; |
| fm | map<key, val> field_name = tag; |
| foo | oneof name {} |
| en | enum EnumName {} |
| sv | service ServiceName {} |
| rpc | rpc MethodName (Request) returns (Response); |
| svgapi | Google API standard methods |
clang-format if available. Configure via settings:{
"clang-format.style": "google",
"clang-format.executable": "clang-format"
}
Example .vscode/settings.json (see example/.vscode):
{
"protoc": {
"path": "/path/to/protoc",
"compile_on_save": false,
"options": [
"--proto_path=protos/v3",
"--proto_path=protos/v2",
"--proto_path=${workspaceRoot}/proto",
"--proto_path=${env.GOPATH}/src",
"--java_out=gen/java"
]
}
}
| Field | Type | Default | Description |
|---|---|---|---|
path | string | protoc in PATH | Protoc binary path. |
compile_on_save | boolean | false | Compile current file on save. |
renumber_on_save | boolean | false | Renumber fields/enums on save. |
compile_all_path | string | Workspace root | Search path for Compile All. |
use_absolute_path | boolean | false | Use absolute paths when searching. |
options | string[] | [] | Protoc flags for validation/compilation. |
Inline variables supported: config.*, env.*, workspaceRoot.
npm installnpm run verify (lint, markdown lint, format check, tests with --forbid-only)npm run package:vsixv*.*.* to trigger CI packaging and GitHub release attachment (no marketplace publish)spawnsync clang-format enoent: install clang-format (brew install clang-format on macOS) or update clang-format.executable.See CONTRIBUTING. PRs that add tests and keep npm run verify passing are welcome.
See the full list on GitHub in the contributors graph.
See CHANGELOG.md.
TypeScript
98.6%
Protobuf 3 support for Visual Studio Code — syntax, validation, snippets, and quick compile/renumber workflows.
⚠️ Project is no longer maintained. Please consider using Protobuf VSC instead. This extension will receive no further updates and is marked as deprecated on the VS Code Marketplace. A big thank you to all users and contributors!
![]()
.protoprotocclang-format
Open the command palette (Ctrl+Shift+P / Cmd+Shift+P) and run:
| Command | Description |
|---|---|
proto3: Compile All Protos | Compile all workspace protos using configured protoc.options. |
proto3: Compile This Proto | Compile the active proto using configured protoc.options. |
proto3: Renumber Fields/Enum Values | Renumber fields from 1 and enum values from 0 in the current scope. |
While inside a message or enum, run proto3: Renumber Fields/Enum Values.
Tags are rewritten so fields count up from 1 and enums from 0.
| prefix | body |
|---|---|
| sp2 | syntax = "proto2"; |
| sp3 | syntax = "proto3"; |
| pkg | package package.name; |
| imp | import "path/to/other/protos.proto"; |
| ojp | option java_package = "java.package.name"; |
| ojoc | option java_outer_classname = "ClassName"; |
| o4s | option optimize_for = SPEED; |
| o4cs | option optimize_for = CODE_SIZE; |
| o4lr | option optimize_for = LITE_RUNTIME; |
| odep | option deprecated = true; |
| oaa | option allow_alias = true; |
| msg | message MessageName {} |
| fbo | bool field_name = tag; |
| fi32 | int32 field_name = tag; |
| fi64 | int64 field_name = tag; |
| fu32 | uint32 field_name = tag; |
| fu64 | uint64 field_name = tag; |
| fs32 | sint32 field_name = tag; |
| fs64 | sint64 field_name = tag; |
| ff32 | fixed32 field_name = tag; |
| ff64 | fixed64 field_name = tag; |
| fsf32 | sfixed32 field_name = tag; |
| fsf64 | sfixed64 field_name = tag; |
| ffl | float field_name = tag; |
| fdo | double field_name = tag; |
| fst | string field_name = tag; |
| fby | bytes field_name = tag; |
| fm | map<key, val> field_name = tag; |
| foo | oneof name {} |
| en | enum EnumName {} |
| sv | service ServiceName {} |
| rpc | rpc MethodName (Request) returns (Response); |
| svgapi | Google API standard methods |
clang-format if available. Configure via settings:{
"clang-format.style": "google",
"clang-format.executable": "clang-format"
}
Example .vscode/settings.json (see example/.vscode):
{
"protoc": {
"path": "/path/to/protoc",
"compile_on_save": false,
"options": [
"--proto_path=protos/v3",
"--proto_path=protos/v2",
"--proto_path=${workspaceRoot}/proto",
"--proto_path=${env.GOPATH}/src",
"--java_out=gen/java"
]
}
}
| Field | Type | Default | Description |
|---|---|---|---|
path | string | protoc in PATH | Protoc binary path. |
compile_on_save | boolean | false | Compile current file on save. |
renumber_on_save | boolean | false | Renumber fields/enums on save. |
compile_all_path | string | Workspace root | Search path for Compile All. |
use_absolute_path | boolean | false | Use absolute paths when searching. |
options | string[] | [] | Protoc flags for validation/compilation. |
Inline variables supported: config.*, env.*, workspaceRoot.
npm installnpm run verify (lint, markdown lint, format check, tests with --forbid-only)npm run package:vsixv*.*.* to trigger CI packaging and GitHub release attachment (no marketplace publish)spawnsync clang-format enoent: install clang-format (brew install clang-format on macOS) or update clang-format.executable.See CONTRIBUTING. PRs that add tests and keep npm run verify passing are welcome.
See the full list on GitHub in the contributors graph.
See CHANGELOG.md.
TypeScript
98.6%