Note: this plugin has moved to JetBrains
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.
Protocol Buffers support for IntelliJ
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.
Installation
Install from the JetBrains plugin repository, or:
Building and Testing
This project uses Bazel.
To build protobuf-editor.jar
:
bazel build //plugin
To run tests:
bazel test //...
Path Settings
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.
Text Format
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.