This plugin has been adopted by JetBrains and now lives primarly at https://github.com/JetBrains/intellij-plugins/tree/master/protobuf. Future releases will be bundled with certain versions of JetBrains' tools. As such, this repository likely won't see new updates. Issue tracking and other stuff is still in a bit of a transition phase.
IntelliJ plugin for editing Google Protocol Buffers. Features include:
- Support for
proto2andproto3 - Syntax highlighting
- Code completion
- Semantic analysis
- References and navigation
- Quick documentation
- Editor enhancements (completion, brace matching, etc.)
- Navigating between protobuf files and some other languages (Java, Go, Python)
- Full support for text format, both standalone and in custom options
This is a fork of google/intellij-protocol-buffer-editor which was released unsupported.
Install from the JetBrains plugin repository, or:
This project uses Bazel.
To build protobuf-editor.jar:
bazel build //plugin
To run tests:
bazel test //...
By default, the collection of project source roots is used as the protobuf search path, and the protobuf descriptor and well-known type files are provided by the plugin JAR. These paths can be customized in the editor's language settings:
To customize:
- Uncheck
Configure automatically - Add paths that include protobuf files
- The
Prefixcolumn can be used to specify an import prefix for the path. So, for example, if the path issrc/protosand the prefix isfoo/bar, the file atsrc/protos/mine.protowould be imported asfoo/bar/mine.proto.
- The
- Organize the paths in the proper resolution order. Files found in paths at the top of the list take precedence.
Protobuf Text Format is most commonly used to specify long-form option values in .proto files. For example, as seen
in the GRPC ecosystem:
This plugin also supports standalone text format files with a .textproto or .pb. extension. Text formant by default
does not provide a way to associate a file with its schema (a message in a .proto file). But the plugin supports
the following comments in a text proto file:
# proto-file: path/to/file.proto
# proto-message: SomeMessage
# proto-import: path/to/file_with_extensions.proto
# proto-import: path/to/another_file_with_extensions.proto
foo: bar
Filenames are relative to configured roots (see Settings). The proto-message name is scoped
relatively to the package declared in the proto-file file. proto-message follows the same resolution rules as type
names in .proto files.


