========================
IDE 21 NEW FEATURES LIST
========================

Copyright (C) 2021, AdaCore

This file contains a complete list of new features in version 21.
A full description of all features can be found in the GPS or GNATbench
documentation.

An ISO date (YYYY-MM-DD) appears in parentheses after the description line.
This date shows the implementation date of the feature. Any 21.0w wavefront
subsequent to this date will contain the indicated feature, as will any
subsequent 21 or later release.

The following tags are used on the feature entries to indicate:

- gs:            this entry is specific to GNAT Studio
- gps:           this entry is specific to GPS (obsolete, superseded by "gs")
- gnatdoc:       this entry is specific for GNATdoc
- gnatdashboard: this entry is specific to GNATdashboard
- gb:            this entry is specific to GNATbench
- wb:            this entry is specific to GNATbench for WorkBench
- ecl:           this entry is specific to GNATbench for Eclipse

If no tag is specified, the entry is relevant to all IDEs.

NF-U429-012 GS: Strip whitespaces when creating Ada units (2021-07-05)

  GNAT Studio now automatically strips trailing and ending
  whitespaces when creating Ada units via the New/Ada package and
  New/Ada Main contextual menus.

NF-U412-038 GS: Visual feedback for empty Outline view (2021-04-15)

  The Outline view now displays a 'No symbols available' label when
  there are no symbols available in the current context. This can be
  the case for empty files or if a given language is not supported
  by GNAT Studio.

NF-U326-032 GS: Error feedback in GPS.Process API (2021-04-15)

  When using GPS.Process methods (like kill or send) return an
  exception if the process is dead or not started.

NF-U128-046 GS: Hierarchical directories in the Project view (2021-02-23)

  The "Hierarchical directories" local configuration menu has been
  added to the Project view. When set, source directories are shown
  as a tree, corresponding to their real positions on disk. Works
  together with 'Group by directories'.

NF-TB30-020 GS: New menus to reset language servers (2020-12-09)

  A submenu has been added to the Navigate global menu, allowing
  resetting of the language servers (that is, the underlying engine
  for a given language) spawned for the current project. This is
  useful for resolving strange navigation issues that may occur from
  time to time.

NF-TA06-032 GS: New 'expand all' action for the Project view (2020-10-20)

  A new 'expand all' action has been added, allowing expansion of
  all the nodes of the Project view at once. A local toolbar button
  has also been added.

NF-T924-005 GS: Commenting/uncommenting blocks in project files (2020-09-29)

  It is now possible to use Comment/Uncomment Lines actions in
  project files.

NF-T923-040 GS: "Pretty Print" in toolbar and contextual menu (2020-10-06)

  "Pretty print" icon has been added in the toolbar and also into
  the contextual menu.

NF-T908-025 GB: GNATbench ALS adds minimal debug capability (2020-09-10)

  Minimal support for debugging was added to the GNATbench ALS
  plugin, including support for setting and removal of breakpoints,
  and for running a debug session.

NF-T817-009 GS: New "Pending breakpoints" debugger preference (2020-08-27)

  A new 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.

NF-T811-009 GS: Phase information in task manager (2020-10-20)

  Command-line tools can now display phase information in the task
  manager in addition to progress information.

NF-T807-069 GS: Show only errors preference (2020-09-30)

  Add a new local preference named "Show only errors" in the
  Locations view. When enabled, it will filter the view to only show
  high importance messages.

NF-T804-011 GS: Support for LSP textDocument/signatureHelp (2020-08-12)

  GNAT Studio now supports the textDdocument/signatureHelp request.
  When implemented by the server (for example, clangd), this request
  is used to provide information on parameters (for example, the
  function's profile) while writing a function call. It's usually
  triggered when opening a parenthesis after a function name.

NF-T714-013 GS: Improved warnings on illegal package names (2020-08-07)

  When creating a package via the New/Ada package contextual menu,
  GNAT Studio now warns the user if the specified name is incorrect
  (for example, if a keyword is used for the package name).

NF-T701-032 GS: Set breakpoints with the Assembly view (2020-07-29)

  The new tool button in the Assembly local toolbar allows setting
  and deleting breakpoints at given addresses.

NF-T615-034 GS: Display Ada version switches as radio buttons (2020-06-26)

  Ada version switches (e.g.: -gnat05) are now displayed as radio
  buttons in the Project Properties, to avoid being able to select
  multiple versions at the same time.

NF-T610-018 GS: Explicit/Implicit expansion of the Scenario (2020-06-18)

  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.

NF-T609-006 WB: Improve RUNTIME handling in Workbench projects (2020-06-15)

  The RUNTIME value defined by scenario variables and GNAT project
  files is now used by the generated makefile for WindRiver
  Workbench projects.

NF-T601-020 GS: Gather messages sharing a location (2020-06-17)

  Messages sharing the same location are now gathered together in
  the Locations view.

NF-T520-041 GS: Fuzzy completion filtering (2020-12-09)

  A new 'Completion filter mode' preference has been added to
  control the way completion items are filtered once the completion
  window is opened. When set to 'Fuzzy', filtering is done in a
  fuzzy way, allowing matching items from a subset of the letters.

NF-T430-047 GS: More extensions recognized as C++ (2020-05-07)

  GNAT Studio now recognizes as C++ files with the extensions .cc,
  .cp, .cxx, .c++, .hpp, .hxx, .inl (in addition to .hh and .cpp).
  This allows easier setup for projects that import libraries which
  use these extensions.

NF-T429-008 GNATDASHBOARD: Support for SonarQube 7.9 LTS (2020-05-15)

  The Sonar Ada plugin was updated in order to support SonarQube 7.9
  LTS. The older versions of SonarQube are no longer supported.

NF-T421-014 GS: Improvements regarding GNATemulator integration (2020-05-01)

  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 the
  user starts a new debug session. A clean button has also been
  added to the console. An issue regarding the debuggee's output has
  also been fixed: the output is now properly displayed even when
  the GDB-mi mode is enabled.

NF-T330-042 GS: Take env changes into account for navigation (2020-03-31)

  The capability to reload the language servers after changes in
  environment has been implemented.

NF-T327-033 GS: Support for LSP completion snippets (2020-05-04)

  Support for LSP completion snippets has been introduced in GNAT
  Studio. Completion snippets can be sent by the underlying language
  server to speed up development (that is, snippets for subprogram
  calls, with placeholders for all the needed parameters).

NF-T311-021 GS: Add contextual menus for copy_file_name plugin (2020-03-19)

  Contextual menus have been added for the "copy_file_name" and
  "copy_base_name" actions defined in the copy_file_name.py plugin.
  The behavior has also been corrected to avoid conflicts between
  opened editors and the Project view.

NF-T309-006 GS: Shift+Enter now searches backwards (2020-03-10)

  Pressing Shift+Enter while the Search view is active now searches
  backwards, like most editors and browsers.

NF-T305-033 GS: New 'Close all other tabs' contextual menu (2020-12-10)

  The old 'Close all editors' menu has been renamed to 'Close all
  editor tabs', allowing users to close all the other tabs of a
  given notebook in GNAT Studio, and not only the other editors.

NF-T304-055 GS: Untyped variables returned by scenario_variables (2020-11-26)

  The scenario_variables Python API request now also returns untyped
  variables.

NF-T210-040 GS: Dialogs to report messages in initialization (2020-02-12)

  Dialogs are now generated to display more information about some
  errors which could occur during the initialization of GNAT Studio,
  such as an invalid or unreadable home directory.

NF-T210-012 GS: Allow running from the debugger toolbar (2020-02-10)

  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.

NF-T128-034 GNATDASHBOARD: Filter GNATcheck exempted violations (2020-02-07)

  The GNAThub report was enhanced in order to filter GNATcheck
  report exempted violation part when imported in the database.

NF-T122-009 GS: New 'Display ancestry on navigation' preference (2020-10-05)

  This preference allows controlling the behavior of navigation
  requests (for example: ctrl-click or 'Goto declaration') on
  subprogram primitives.

NF-T110-034 GS: LSP-based completion in GNAT Studio (2020-05-04)

  LSP-based completion has been implemented in GNAT Studio. It is
  disabled by default but can be enabled via the GPS.LSP.COMPLETION
  trace. Note that the feature is still in development.

NF-T109-054 GS: Exception filter in GPS.MDI.file_selector (2020-02-10)

  An exception filter can be defined to show only files that don't
  match the specified pattern. For instance, if you need files
  without extension, pass except_filter='*.*' here.

NF-SC04-033 GS: New get_expanded_command_line Python API method (2020-01-30)

  This method has been added to the GPS.BuildTarget class and should
  be used to retrieve the command line of a Build Target with all
  its macros expanded.

NF-SB26-063 GS: Run OS shell from the Project View (2020-09-30)

  New contextual menu was added to run an OS shell from the Project
  View. This opens a shell in the directory containing the
  corresponding project file.

NF-SB19-011 GS: Improvement in elaboration of project templates (2019-11-20)

  A minor change in the elaboration order of project templates; when
  specifying an helper script with an on_apply method, this method
  is now called before project load.

NF-SB18-057 GS: Removal of project info from editor tabs (2019-11-21)

  When an aggregate project is loaded, the project information was
  displayed in the tabs for source editors; this has been removed in
  the interest of screen real-estate. The project information is
  available in a tooltip over the tab.

NF-SB15-049 GS: Trace to disable the Learn view (2019-11-19)

  Add the trace GPS.INTERNAL.MODULE_LEARN to control the Learn view.

NF-SB05-025 GS: Add a new "replace" completion insert mode (2020-04-17)

  A new preference has been added to allow replacing text on the
  right of the cursor when completing.

NF-SB05-022 GS: Navigation between messages of same importance (2019-12-09)

  Add "previous/next tag (same weight)" actions which 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).

NF-SA30-034 GS: Disable automatic reload of unsaved files (2020-01-09)

  A dialog will always be shown when detecting conflicts between
  unsaved editors and the actual files on the disk. Thus, the
  automatic reload preference now only affects the saved editors.

NF-SA22-032 GS: Code folding preferences (2020-04-01)

  'The following preferences have been introduced:
  Fold_With_Use_Blocks: Automatically fold ''with'' and ''use''
  blocks when a block has more lines than the setting (0 to
  disable). Fold_Comment_Blocks: Automatically fold comment blocks
  when a block has more lines than the setting (0 to disable).
  Fold_Comment_Reg[1,2,3]: Automatically fold comment blocks when a
  block's contents matches the regular expression.'

NF-SA22-030 GS: New filters for 'find references...' action (2020-01-20)

  New filters have been added for the 'find references...' action,
  allowing users to filter in/out type derivations and simple read
  references.

NF-SA22-029 GS: Refactoring/rename in comments (2019-11-29)

  The rename dialog has now a new "Also rename entities in all
  comments" checkbox: when enabled, GNAT Studio will also rename
  this entity in the comments.

NF-SA21-029 GS: LSP support for the Outline view (2020-05-11)

  Asynchronous fill of the Outline view via the LSP protocol.

NF-SA19-005 GS: "Reuse last pattern" search preference (2019-10-30)

  A new local "Reuse last pattern" preference in the search window
  controls whether the last search text will automatically be set in
  the "Find" field when the window is opened.

NF-SA14-030 GS: Improved "vcs commit" action (2019-10-29)

  If there is no file staged and the user executes the action "vcs
  commit", then all the modified files are automatically staged
  before committing.

NF-SA14-010 GS: With-clauses quick-fixes alphabetically sorted (2019-10-29)

  When inserting a new with-clause with a quick-fix, GNAT Studio now
  uses the alphabetical order to decide where to insert it.

NF-SA14-008 GS: Auto-completion for aggregates (2020-06-14)

  The Ada Language Server now supports auto-completion for
  aggregates. Opening a parenthesis while initializing/assigning a
  variable that may expect an aggregate will open the completion
  window with snippets proposals to create an aggregate of a given
  shape.

NF-SA14-007 GS: Navigation to parent/child implementations (2019-12-17)

  When navigating to the definition or implementation of a
  subprogram via ctrl-click or via the contextual menu, if this is
  requested on a primitive of a tagged type, GNAT Studio will
  propose the option to navigate to the declarations that override
  or that are overridden by the current one.

NF-SA10-035 GS: New actions to move block up/down one line (2019-12-05)

  New actions "Move block up" and "Move block down" have been added
  to move the current line or selected block up or down one line.
  These actions can be bound to keys via the Preferences dialog.

NF-SA10-032 GS: New action 'toggle comment' (2019-10-29)

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

     * toggles the comments on the currently selected
       line or block

     * comments start at the indentation of the line/block

     * when indenting a single line, the cursor is placed on the
  following
       line, to make it convenient to toggle several in a row

     * when commenting a whole block in a language that has end of
  line
       comment markers, align nicely the end-of-line markers in the
       commented-out block

     * when chaining single-line comments, align start-of-line
  markers
       to that of the previous line.

NF-SA10-029 GS: Locations view action copy to clipboard (2019-12-06)

  A new action "locations copy to clipboard" has been added that
  copies the selected rows of the Locations view to the clipboard.
  It uses the same formatting as the export action.

NF-SA08-033 GS: Fewer disk access during normal operations (2019-10-21)

  GNAT Studio now performs much fewer disk accesses when performing
  regular operations such as navigating or editing source files.

NF-SA04-008 GNATDASHBOARD: --dry-run without project file (2020-06-16)

  New behavior added for --dry-run gnathub switch to list all
  predefined GNAThub plugins when no GNAT project file is provided
  as -P parameter.

NF-SA02-038 GS: New macro %fo to list the opened files (2019-10-29)

  A new %fo macro has been added to retrieve the list of the
  currently opened files.

NF-S905-020 GS: Better indication for the current color theme (2019-10-15)

  The current color theme is now explicitly and visually selected in
  the Preferences/Color Themes page.

NF-S823-007 GS: Add implicit -P in the command line (2019-11-04)

  The -P option is now optional to open GNAT Studio on a given
  project via the command line.

NF-S419-015 GS: Collapse/Expand all actions in Outline (2020-05-11)

  Add 2 actions to collapse/expand all the rows in the Outline view.

NF-S405-012 GS: Rewrite of the Outline view (2020-05-11)

  List of notable improvements: Remove unnecessary refresh | Better
  sorting control allowing to mix the alphabetical, lines and
  categories sorts | Faster filtering | Refreshing preserve the
  expanded nodes | Fix "Dynamic link with Editor" for the "Flat
  view" and the "group by categories" preferences.'

NF-RB28-024 GS: Checking preferences when updating them (2019-11-12)

  Unchanged preferences are no longer saved in preferences.xml file.

NF-RA05-038 GS: GPS.Project.get_main_units method in Python API (2020-01-13)

  It processes the project hierarchy and returns a list of strings
  where each string is the name of the main unit.

NF-R919-019 GS: Disable read-only sections in an editor (2020-09-30)

  New action was added to toggle read-only regions in an editor.
  That is useful in the context of gnattest generated files.

NF-R910-034 GS: Clangd for C/C++ code formatting (2020-07-31)

  GS now uses clangd for c/c++ code formatting. Also it is possible
  to use the Astyle plugin for formatting if astyle is present on
  your host.

NF-R821-007 GS: Codefixes now also applied on specifications (2019-12-10)

  "could be 'in'..." and "'in' could be omitted" codefixes are now
  also applied on the subprogram specifications. That was not the
  case before, which led to compilation errors when trying to
  rebuild the application after applying this kind of codefixes.

NF-R705-010 GS: Export data from the variables view (2020-06-09)

  The variables view now has a "Save variables to a file" tool
  button in the local toolbox to export its data.

NF-R405-038 GNATDOC: Text-formatting control tags (2019-10-15)

  New tags @format and @noformat have been added to enable or
  disable automatic text formatting.

NF-R228-025 GS: Highlight the searched area (2020-04-22)

  GNAT Studio now highlights the searched area when opening the
  Search view while an editor has a multiline selection. This allows
  users to visualize better the searched area.

NF-Q913-027 GS: Bookmarks "Move dynamically" preference (2019-12-05)

  A new preference is accessible in the bookmarks view local menu:
  when enabled, GNAT Studio will try to move the bookmarks
  dynamically if the location of the pointed code changes (i.e: due
  to a Version Control system checkout).

NF-Q615-042 GS: New 'Show dependencies for selected items' menus (2020-12-15)

  New contextual menus are now available in the Dependency Browsers
  to allow showing the dependencies of all the selected items in the
  focused browser.

NF-N120-049 GS: Automatic ClearCase checkout (2019-11-05)

  Add a preference "Automatic checkout" which when enabled will use
  automatic checkouts for any action trying to make a file writable.
