- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
GPS: relative paths in the Omnisearch
The Omnisearch can now also display project relative paths instead of absolute ones. This behavior can be controlled via a checkbox present in the Omnisearch settings.
GPS: non-exclusive key bindings in plugins
It is now possible to bind keys to actions without unbinding the key. This means that the same key binding might apply to several actions, and the action that gets executed is the first one for which the filter matches. In particular, this allows reusing keys like <enter> or <tab> in contexts other than the editor.
GPS: new action to maximize a window
A new action ("maximize window") is provided to make the central area of the desktop (that contains the editor) occupy the full GPS window, hiding all other views. Executing the action again goes back to the previous layout. You can bind a key shortcut to this action via the Preferences/Key Bindings menu.
GPS: cross-references from runtime files
It is now possible to force GPS to index runtime files so that you can perform cross-references from them (it was always possible to cross-ref from your own sources to the runtime). This takes longer to index, so is disabled by default. See the preference Project/Cross References in Runtime Files.
GPS: toolchain information in About dialog
The About dialog now contains the name of the current project's toolchain if this toolchain is not the native one.
GNATdoc: Documentation_Dir attribute
Attribute Documentation_Dir is defined in Documentation package now. Attribute with same name in package IDE is obsolete. Its support will be removed in future version of GNATdoc.
GPS: Windows view sort order
Two new settings have been added to the Windows view: you can now choose whether to show nodes for notebooks that have a single window (the default is still to display the window itself, but not its notebook in this case); and you can choose whether to sort windows alphabetically, or to preserve the order of tabs within the notebooks. When the notebooks are not displayed, and sorting is disabled, the order depends on which window had the keyboard focus last, which provides a convenient way of switching quickly between a few editors among a lot of them.
GPS: using keyboard in Outline view
It is now possible to use <enter> in the Outline to jump to the corresponding entity (same as clicking on the line).
GPS: mouse buttons 4 and 5 for locations
The mouse buttons 4 and 5 (available on some high-end mice) are mapped to the locations command, and used to move in the locations history (back to the previous position, and back). This is hard-coded, and cannot be changed.
GPS: new action “locate in Files view”
GPS now exports a new action to find the current file in the Files view. This action is not visible by default in the contextual menu (as opposed to Locate in Project view) in an effort to keep the menu simple. However, it can be added with a small python script as in:
GPS.Action("Locate in Files view").contextual("Locate in Files")The menu /Navigate/Locate in Files view has been added.
GPS: ask before overwriting read-only file
GPS now checks the permission on the disk before saving a file (rather than just the read-only status of the editor). If the file is read-only on the disk, it displays a confirmation dialog to let you chose whether to overwrite (and, in the context of Clearcase, hijack the file).
GPS: compute the GNAT Runtime menu dynamically
The Help -> GNAT Runtime menu is now computed from the runtime that is actually being used for the current project, rather than a static image of a native runtime. This is particularly helpful when working with embedded or restricted runtimes.
ECL: AJIS examples integration
A new "AJIS examples" importer is now available. It is accessible from "File > Import..." menu in Ada folder. This importer requires AJIS 17.0.20160919w or later installation. These AJIS versions contain GNATbench examples that can be imported, built, run and debugged in GNATbench without modifications.
GPS: display list of mains as flat menu
When a project (and its subprojects) have a small number of main units, and the root project is not an aggregate, we display the /Build/Project/, /Build/Run/ and /Debug/Initialize menus as a flat list of mains, rather than introduce one extra level of menu for the name of the project.
GPS: contextual menu to set watchpoint
Right-clicking on a variable while the debugger is running will now set a watchpoint, so that the debugger stops any time the variable is modified.
GPS: new menu /File/Reset All Perspectives
This menu restores the default window layout. This is in particular useful to reset the Debug perspective that has changed in this release of GPS.
GPS: GPS.Process accepts a list of args
The Python GPS.Process() now accepts the command as a list of arguments instead of a string, which makes it easier to handle arguments with spaces (no need for quoting)
GPS: GUI enhancements to the Omnisearch
The Omnisearch feature has received a number of enhancements:
- A default key shortcut (control-u) brings up the omnisearch - When bringing up the omnisearch through the key shortcut completions start appearing even before anything is typed in the entry. This allows, for instance, using the arrow keys to select one of the currently open windows. - The size of the popup window has been increased to take up to 2/3 of the main window. This is useful when listing directories with long names, for instance. - The highlighting of the fuzzy-matched characters now uses a color. - If the text in the global entry has been manually deleted, it no longer reappears next time the search is activated.
GPS: new %TP macro in builder targets
A new macro %TP is available in builder targets. It will be replaced with the name of the project file to which the main unit belongs. It is for instance used when you do not want to pass the root project to gprbuild, but directly the unit's own project
GPS: outline option to hide parameter names
A new setting for the Outline view allows you to hide the name of parameters in the profile of subprograms. This saves some space, and helps differentiate homonym subprograms.
GPS: Pass the configuration file to the builder
The configuration file (.cgpr) set by the "--config" command-line switch is now passed on to the builder. Also, GPS now also passes the configuration file which was automatically generated when the "--autoconf" option was given.
GPS: search icons in GPS_CUSTOM_PATH
Icons used in plug-ins are now also searched in any of the directories specified in the environment variable GPS_CUSTOM_PATH.
GPS: more info when reviewing a codepeer message
The CodePeer dialog for reviewing a single message now contains information about a message, similariliy to the dialog for reviewing multiple messages.
GPS: preserve more build errors after recompiling
When the Locations view contains build errors, and one of the files is being recompiled, the Locations view will now only update the entries for that file, rather than removing all build errors.
GPS: wrong file view for multi-drive projects
When the 'Show files from project only' option is enabled, the Files view now correctly displays the project files that reside on multiple logical drives.
GPS: new trace for old Xming compatibility
A new trace "Views.No_Transient_Views" has been added. When activated (in .gps/traces.cfg or via the --traceon switch), this prevents the use of "transient" windows for floating views. This is needed mostly for compatibility with the Xming X11 server which does not allow resizing transient windows, and calculates their size wrongly. Another trace "Store_Window_Positions" has been added: this is on by default, and, when switched off, will prevent GPS from saving the size and positions of floating windows.
GPS: improved behavior of the ESC key
The Escape key can now be used to close floating dialogs (such as the Search dialog, or the Preferences dialog) even when the input focus is not currently on these dialogs.
GPS: Messages are displayed with different font
CodePeer's messages with lifeage "removed" are displayed with different font to help distinguish them from regular messages.
GPS: new “All files from prj dirs” in Files view
A new local configuration has been added to the Files view, to show all files in any of the directories of the project. In particular, this shows the object and executable files in the object directories.
GPS: Show color of messages in the Locations view
For messages which have an associated background color (for instance compiler errors), the Locations view shows this background color on the side of the row for this message.
GPS: Breakpoints view can be displayed anywhere
Since we can now set breakpoints even when no debugger is running, it is also useful to edit them outside of the Debug perspective.
GPS: preserve the size of simple text input dialogs
The size of simple text input dialogs (e.g: the 'Debug/Run' dialog) is now preserved: GPS will now restore it when the dialog is displayed again in the future (either in the current session or in a later session).
GPS: changes in Bookmarks view
You now need to double-click on a bookmark to jump to the corresponding editor, or long-click to start editing (although there is still a button in the local toolbar for that purpose). This makes it more consistent with other views in GPS like the Breakpoints view. Bookmarks are no longer sorted by default. Instead, you can use drag-and-drop to organize them in the order you want. Bookmarks can be grouped: when you drag and drop a bookmark on top of another bookmark, a new group is created that contains both. These groups can be used to organize large numbers of bookmarks. Add a filter to the Bookmarks view, to match what is done for other views. Comments can be added to bookmarks, either that an explicit toolbar button or dragging and dropping text from a source editor. A new configuration "link with editor" is also available, which automatically selects the first bookmark associated with the current editor line, whenever the latter changes.
GPS: double-click in breakpoints to see editor
If you double-click on a breakpoint in the Breakpoints view, GPS will show you the corresponding editor (same as using the toolbar button, but more convenient). Likewise, a long click on the breakpoint will show its details, same as clicking on the toolbar button would do.
GPS: adjust score for runtime files in omnisearch
When you search via the omnisearch, GPS will now ensure that matches in runtime files appear only after matches in user code.
GPS: display bookmarks on the side of editors
Lines for which a bookmark has been set will now show special highlighting in the scrollbar of editors, as well as an icon on the left side of the line, as a quick way to identify them.
GPS: new toolbar parameter for GPS.Browser.create
A new browser can now be created with a custom toolbar. It is thus possible to add buttons via GPS.Action.button() that will only apply to this browser.
GPS: OpenOCD support to flash/debug boards
GPS now supports OpenOCD in order to flash and/or debug an external board. In order to use OpenOCD, set the IDE'Connection_Tool project attribute to 'openocd' and specify a board-specific OpenOCD configuration file via the IDE'Connection_Config_File project attribute (boat attributes are editable in the 'Embedded' Project Properties editor page).
GPS: remove settings to auto-resize omnisearch
The omnisearch (i.e. the search box at the top-right corner of the GPS window) had a setting to automatically resize the popup window vertically. Unfortunately, due to limitations in the gtk+ toolkit in computing the ideal size of a window, this never worked correctly. This setting has thus been removed, and the window will now always occupy the full height of the GPS window.
GPS: new menu /File/Save More/Projects
The menu /Project/Save All was moved to a new location to make its semantics easier to understand.
GPS: new function GPS.Entity.instance_of
A new python function is now available to find the generic entity that the current one instantiates.
GPS: remove lines-with-code preference
GPS no longer supports the debugger preference to show lines with code. This preference has been disabled by default for a while now, and can be slow to run since it requires a lot of interaction with the debugger (and while the debugger is working on getting us the info, we can't send other commands like setting breakpoints). It also required extra space on the left of editors to display the info. As part of the simplification of the code, we removed the source_lines_revealed hook.
GPS: setting breakpoints before debugger starts
It is now possible to set breakpoints even before a debugger is started. This can be done as usual via the Debug/Set Breakpoint contextual menu, or by clicking on the side of editor lines. These breakpoints will be set automatically when a debugger is started. The permanent breakpoints are now saved and restored for every executable in the project, not for each executable individually. Lines with breakpoints now highlight the line number, and no longer display a red dot on the side of the line. Clicking on the line numbers toggles breakpoints on and off.
GPS: display basenames in Project view
The Project view has gained a new configuration, to display only the basenames of the directories. So now if you have a project file at /some/path/file.gpr and one source directory at /some/path/sources/src1/, you can choose to display any of the following in the Project view:
/some/path/sources/src1/ (not showing basenames, and absolute paths) sources/src1/ (not showing basenames, and relatied paths) src1 (showing basenames)
GPS: improve debugger call stack view
This view now has a local configuration menu to chose which information should be displayed. When you chose not to show subprogram parameters, gdb is configured so that it also does not try to compute them, which on some systems might significantly speed up operations with the debugger.
GPS: new python function GPS.Debugger.breakpoints
GPS now exports the list of breakpoints that are currently set in the debugger. This is both more efficient and more reliable than having scripts parse it again, and avoids hard-coding gdb commands in scripts.
GPS: new functions exported to GPS.Debugger
GPS exports more debugger functions to python, allowing scripts to be more independent of which exact debugger is actually used. These are GPS.Debugger.value_of, GPS.Debugger.set_variable, GPS.Debugger.break_at_location and GPS.Debugger.unbreak_at_location.
GPS: tooltips show dirs relative to root project
The tooltips in notebook tabs, in the Project view and in the Windows view now show both the absolute name for files as well as their location relative to the root project. The latter path can often be much shorter, depending on your setup.
GPS: Improve outline view’s “with Clauses”
Do not show "with Clauses" node in outline view if no withes.
GPS: hyper links in call graph browser
In the Call Graph Browser, file locations are now clickable and open the corresponding file/line.