Skip to content
This repository has been archived by the owner on Dec 23, 2022. It is now read-only.

jvolkman/intellij-protobuf-editor

Repository files navigation

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

Run Tests Join the chat at https://gitter.im/intellij-protobuf-editor/community

IntelliJ plugin for editing Google Protocol Buffers. Features include:

  • Support for proto2 and proto3
  • 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

Editor

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:

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 is src/protos and the prefix is foo/bar, the file at src/protos/mine.proto would be imported as foo/bar/mine.proto.
  • 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:

GRPC example

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.