IntelliJ plugin for editing Google Protocol Buffers. Features include:
- Support for
proto2
andproto3
- 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
Prefix
column can be used to specify an import prefix for the path. So, for example, if the path issrc/protos
and the prefix isfoo/bar
, the file atsrc/protos/mine.proto
would 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.