GNOME Builder ❤️ Rust Analyzer Part 2

As promised i wanted to show off the remaining features which found their way into GNOME Builder. Be warned this is a Video heavy post!

Goto definition

There are two 2 ways to trigger this action. First you can hold off Ctrl and hover the symbol you are interested in. Clicking brings you to that symbol definition.

The second option is, if you use the vim keyboard movements, to trigger gd in normal mode. As the real vim equivalent this brings you to the definition.

Show references

This is the opposite direction to Goto definition. Show references is triggered via the right click menu of a symbol. This could be a costly operation so you may have to wait some seconds for an solution.

Format via cargo fmt

Formatting the sourcefile is especially convenient in Rust as the formatter is built into cargo/rustc. Its possible to be triggered if you use the vim movement keybindings via gq.

Rename support

Renaming a symbol with all their references? This is possible now. Just hit Ctrl+Shift+R and a popup asks what the new name should look like. Hitting Enter considers all references of that symbol too.

Hover support

It is possible to show documentation when you hover a symbol or method. Due to not that perfect markdown support in a GtkLabel it is not perfect.

Workspace search provider

This is in my opinion the best feature right now. Searching symbols across the workspace is particular convenient if you remember the names of the symbol.

Roadmap

I have several ideas how to go from here:

  • Getting all diagnostic messages into the diagnostic sidebar for workspace wide diagnostic handling.
  • The Workspace search provider is currently a Rust Analyzer only feature but not restricted to it. I want to make the implementation generic enough to handle all LSP servers out there.
  • Rust Analyzer provides very useful CodeActions to refactor code in a convenient way. GNOME Builder does not support these right now therefore i want to try a design and elaborate how to go from there.