GNAT Studio 21 Release Notes

We present here a few highlights of the new features in GNAT Studio 21. You can access the complete list here. This GNAT Studio development cycle was focused on stability and performance enhancements, and to improving source navigation, transitioning more and more features to the new engine in the Ada Language Server.

C & C++ Support

GNAT Studio has replaced its older libclang-based custom engine with it by a C and C++ language server developed as part of the LLVM project, called clangd.

As a a result of this transition, dynamic completion is now supported for C and C++ and some new features have been introduced. One of the great features that clangd brings to GNAT Studio is the signature help, which pops up when opening a parenthesis for a function call: GNAT Studio will show the function’s signature, showing the parameter expected at each point.

_images/signature_help.png

Debugger & Emulator Integration

A new Pending breakpoints debugger preference has been added to allow pending breakpoints when using the debugger. When enabled, breakpoints that are not recognized when starting the debugger (i.e: breakpoints set on dynamic libraries) won’t be rejected: the debugger will try to set them once the executable runs. This preference is enabled by default.

A new button in the Assembly view local toolbar allows setting and deleting breakpoints at given instruction addresses.

The Start/Continue button in the debugger toolbar now offers the option to stop at the beginning of the main, just like the Debug ‣Run… menu.

The integration between GNAT Studio and GNATemulator has been improved: the same GNATemulator console is now reused across debugging sessions, instead of spawning a new one each time a new debug session starts. A clean button has also been added to the console.

Projects Support

An advanced preference has been added for the Scenario view to control the way scenario variables are expanded in command lines. By default, all the scenario variables are explicitly expanded. When the preference is deactivated, only variables with a value different from their default will be expanded.

Version Control

GNAT Studio now displays a warning message on any of the VCS views (e.g: Commits view) if it’s not able to find a version control system repository for the loaded project. An hyperlink is also displayed to configure the VCS repository manually.

_images/no_vcs_warning.png

The vcs commit action has been improved: if there is no staged file, then all the modified files are automatically staged before committing.

Source Editor

Code folding has been transitioned to the Ada Language Server, which allowed us to introduce a new set of preferences to perform automatic code folding:

  • Fold_With_Use_Blocks: automatically folds ‘’with’’ and ‘’use’’ blocks when a block has more lines than the setting (0 to disable).

  • Fold_Comment_Blocks: automatically folds comment blocks when a block has more lines than the setting (0 to disable).

  • Fold_Comment_Reg[1,2,3]: automatically folds comment blocks when a block’s contents matches the regular expression.’

A new toggle comment action to comment/uncomment the current line or selection has been added. You can associate a key shortcut to it via the Preferences dialog.

Miscellaneous UI/UX improvements

For the Locations view, new previous/next tag (same weight) actions have been added to allow in the Locations view to move between messages of same importance. (i.e: if an error is selected the action will find the previous/next error).