=========================
GPS 5.0 NEW FEATURES LIST
=========================

Copyright (C) 2009-2010, AdaCore

This file contains a list of new features introduced in GPS.
A full description of all GPS features can be found in the GPS
documentation.

An ISO date (YYYY-MM-DD) appears in parentheses after the
description line. This date shows the implementation date
of the feature.

New features in 5.0.0
---------------------

NF-50-J928-023 Automatic indentation of C and C++ comments (2010-09-29)

  The GPS editor is now able to indent C and C++ comments and automatically
  takes into account various styles of multiple line comments.

NF-50-J918-004 Support for Ada 2012 (2010-09-20)

  GPS now supports Ada 2012 syntax and keywords when highlighting Ada
  sources or indenting.

NF-50-J917-024 Improved customizability of the toolbar (2010-09-20)

  The Python/Shell interface now allows creating Toolbar buttons, rather than
  just buttons, through the GPS.ToolButton class. In addition, these buttons
  can be inserted in the toolbar at any location through GPS.Toolbar.insert.

  The Cut/Copy/Paste buttons are now taking advantage of this: they are now
  hidden, and can be activated through the plugin toobar_cut_copy_paste.py.

NF-50-J915-025 Highlight of dispatching calls (2010-09-15)

  The dispatching.py plug-in which highlights dispatching calls in the
  source editor is now enabled by default, and supports both Ada and
  C++.

NF-50-J913-040 Breakpoints editor part of the MDI (2010-09-13)

  The breakpoints editor can now be embedded in the MDI, instead of
  always being a floating window.

NF-50-J913-020 Rectangles plugin loaded by default (2010-09-13)

  The rectangles.py plugin is now loaded by default, providing extra
  menu items under Edit->Rectangles to manipulate rectangle/block selections.

NF-50-J910-014 Completion filters on raise statements (2010-09-17)

  The completion mechanism will now only offer exception and packages entities
  when completing a raise statement.

NF-50-J907-015 Completion for task entries (2010-09-09)

  GPS now offers smart completion for task entries and accept statements.

NF-50-J813-008 Centralized font handling in the source editor (2010-09-02)

  The selection of fonts in the source editor has been simplified. In the
  section Editor->Fonts & Colors of the Preferences dialog, all fonts are
  represented as variants of the default font.

NF-50-J811-011 Syntax highlighting for declarations (2010-08-12)

  Types and blocks (subprograms, tasks, ...) are now highlighted in a
  different color in declarations to make it easier to read and understand
  the source code.

NF-50-J806-005 Docgen to detect entity names in comments (2010-08-10)

  The documentation generator can now detect entity names in comments and
  generate the appropriate link to their definition.

NF-50-J805-011 Docgen allows specifying index.html (2010-08-06)

  The GPS document generator now allows the user to specify the index.html file
  to use when generating the document. This is done via the shell command
  register_main_index.

NF-50-J804-023 Documentation generator now handles 'code' tag (2010-08-05)

  The GPS document generator now defines a new default tag 'code' that allows
  the text in it to keep its layout when displayed in the documentation.

NF-50-J804-022 Allow customization of the documentation directory (2010-08-05)

  A new attribute documentation_dir has been added to the projects so that the
  directory in which the documentation is generated can now be customized.

NF-50-J804-010 Improved tag handling in documentation generator (2010-08-04)

  The GPS document generator now handles lists and on-purpose line return in
  structured comments. Lists are detected if a line starts with a * or -
  surrounded with spaces, while on-purpose line returns are detected if a line
  starts with a capital letter.

NF-50-J722-013 Improved filedeps.py plug-in (2010-07-22)

  The filedeps.py plug-in which provides a way to display the dependency
  path between two files/units is now improved and will in particular
  display the path both in the Messages view and in the Locations view
  for easier navigation and visualization.

NF-50-J720-004 More precise call graph (2010-08-06)

  When using a recent version of GNAT (starting with 2010-08-06), GPS
  can take advantage of more precise call graph information and will not
  generate misleading information for some references to subprograms which
  are not function calls.

NF-50-J713-015 'Replace' field kept between searches (2010-08-10)

  The contents of the 'Replace' field in the Search/Replace dialog is
  now preserved between two search sessions.

NF-50-J713-014 Case-preserving replacement (2010-07-21)

  GPS is now capable of preserving the casing of words when performing
  text replacement. Three casings are detected and preserved: all lower,
  all UPPER, and Smart_Mixed.
  This is controlled using the checkbox "Case Preserving Replace" in the
  Search dialog and is enabled by default.

NF-50-J629-027 Faster viewer for switches (2010-08-31)

  Major speed enhancement for the /Project/Edit Switches view for projects
  with hundreds of files.

NF-50-J628-026 Fail search indicates context (2010-06-29)

  When a search fails, the dialog now indicates in which context the search
  was done (in particular the name of the file when searching in
  "Current File".
  This is in particular useful when in all windows floating mode, since it is
  sometimes ambiguous which editor has the focus.

NF-50-J628-017 Project-aware Locations history (2010-07-05)

  The Locations history used by the Back/Forward toolbar buttons is now
  project-aware: for instance, clicking "Back" when working on project A will
  cause GPS not visit locations that were visited in a previous GPS session on
  project B.

NF-50-J621-010 New preference to control current line highlighting (2010-06-21)

  A new preference "Draw current line as thin line" in the Editor->Fonts and
  Colors section controls the aspect of the highlighting of the current line
  and allows displaying a thin underline rather than highlighting the whole
  background of the line.

NF-50-J528-009 New contextual menu: Refactoring/Extract Subprogram (2010-06-01)

  This refactoring can be used to extract some code and create a new
  subprogram from it. It replaces the old instance of the code by a call
  to the new subprogram

NF-50-J519-008 New key shortcuts to open search dialog (2010-05-26)

  Through the /Edit/Key Shortcuts dialog (in the Search category), it is
  now possible to define your own key shortcuts to open the search dialog
  with a preset search context (current file, files from project,...)

NF-50-J514-023 Possibility to export Locations view to an editor (2010-05-18)

  A new menu File->Messages->Export Locations to editor exports the contents
  of the Locations view to an editor. This is useful to print the contents
  of the Locations view or save it for future reference, for instance.

NF-50-J511-031 New build macros %baseattr and %dirattr (2010-05-12)

  These two macros can be used to extract the directory part or the base
  name from an attribute in a project. For instance, it could be used to
  change to that directory before spawning the build command.

NF-50-J426-027 Shell/Python interfacing to GPS styles (2010-04-28)

  It is now possible to manipulate through GPS Shell and/or Python the colors
  and properties used when displaying messages in the editors.

NF-50-J419-013 Completion on qualified aggregates (2010-05-05)

  Smart completion now offers to complete qualified aggregates.

NF-50-J416-020 Loop indexes offered in completion (2010-04-16)

  Loop variables are now offered by the smart completion.

NF-50-J326-009 Subcategory order in locations view for CodePeer (2010-03-26)

  Sorting by subcategory in locations view is now applied to CodePeer messages
  and messages are ordered by their ranking.

NF-50-J308-011 Filters when completing variables & parameters (2010-03-08)

  When completing a variable or parameter type, the completion will only
  offer package and type names.

NF-50-J302-046 Load CodePeer annotations in open editors (2010-04-06)

  CodePeer annotations are now displayed automatically for all open editors
  when the CodePeer report is displayed.

NF-50-J302-031 New preference Hyper links (2010-04-26)

  This new preference allows to activate or deactivate the hyper links created
  in the editors when the Control key is pressed.

NF-50-J302-017 Shell/Python interfacing to messaging system (2010-04-23)

  There is a possibility of manipulating GPS messages through GPS Shell or
  Python. Messages can be created and removed through this API, and it is also
  possible to add actions to each message.

NF-50-J225-017 Better handling of incomplete with/use clauses (2010-02-25)

  The outline and smart completion will now work correctly even when the user
  is in the process of writing use and with clauses, and the file is parsed
  before the clause is completely written.

NF-50-J225-012 Completion for generic instances (2010-04-06)

  The smart complete is now able to follow generic instances, and to propose
  completions even when formal generic parameters are involved.

NF-50-J224-017 Completion for case inside record (2010-02-24)

  Fields declared in a case statement inside a record are now offered in the
  list of completions.

NF-50-J211-009 Add "Goto Entity" dialog (2010-02-11)

  This new dialog allows browsing the entities in the project, with the same
  interface as the Entity view. This dialog can be summoned through the menu
  Navigate->Goto Entity... or through the key binding Control-T.

NF-50-J210-027 Support for assembler language (2010-02-11)

  The project editor now supports adding assembler language for use by
  GPRbuild during compilation and builds.

NF-50-J208-020 Background compilation (2010-07-22)

  GPS is now capable of launching build targets in the background automatically
  when source code is modified in an editor. This is activated through the
  Target Configuration dialog (menu Build->Settings->Targets), by setting
  the launch mode of a target to "In background".

NF-50-J208-019 Automatic highlighting of occurrences (2010-07-21)

  When the cursor is positioned on an entity in a source editor, GPS will
  highlight all other occurrences of this entity in the editor.
  This is controlled by the plugin auto_highlight_occurrences.py and is
  activated by default.

NF-50-J208-014 Project templates (2010-09-15)

  GPS is now capable of creating new projects from templates. This is done
  either by selecting the first item "Create new project from template" in
  the welcome dialog, or by using the menu Project->New from template...

NF-50-J208-013 Memory view embedded in the MDI (2010-09-13)

  The debugger memory view can now be embedded in the MDI, as opposed to
  being a separate dialog. This provides a more integrated workflow

NF-50-J208-007 Partial navigation without compilation (2010-02-19)

  GPS now provides a navigation mode working even when files are not compiled.
  This mode works on goto body from an entity declaration, goto declaration
  from an entity body, and on simple cases when trying to retrieve the
  declaration from any reference, using e.g. goto declaration or hyperlink.

NF-50-J208-006 Builder error icons on the side of editors (2010-02-25)

  When compiling, icons that propose automatic code fixing appear on the side
  of the source editors, in addition to the Locations View.
  Also, new icons appear on the side of the editors to mark the location of
  errors, warnings and style issues.

NF-50-J205-016 Preference to automatically close Locations view (2010-05-18)

  A new preference "Auto close Locations view" is present in the General
  section. When this preference is enabled, GPS will automatically close the
  Locations view when it becomes empty.

NF-50-J128-026 Support for generic parameters (2010-02-15)

  Generics parameters are now supported in the Ada outline view and smart
  completion.

NF-50-J120-032 Better external run under Windows (2010-03-05)

  Under Windows, running commands under an external terminal now keeps the
  terminal open after execution.

NF-50-J113-016 Completion triggered on "with", "use" and "pragma" (2010-01-13)

  The smart completion is now automatically trigerred when inserting a space
  after the keywords "with", "use" and "pragma".

NF-50-IC17-028 New auto-fixes for warnings (2009-12-21)

  GPS is now able to auto-fix the following warnings:
     redundant attribute, "A_Type" is its own base type
     pragma Pack has no effect, no unplaced components
     renaming function result object is suspicious
     implicit dereference
     useless assignment
     abs applied to known non-negative value has no effect
     comparison with True is redundant

NF-50-IC15-023 New CodePeer menus (2009-12-16)

  The CodePeer integration now provides additional menus: Analyze Root Project,
  Analyze File, Remove SCIL and Remove SCIL & DB.

NF-50-IC11-011 New auto-fixes for style checks (2009-12-17)

  GPS is now able to auto-fix the following style errors:
     index number not allowed for one dimensional array
     index number required for multi-dimensional array
     "and then" required
     "or else" required
     subprogram body "something" not in alphabetical order
     redundant parentheses
     no statements may follow "then" on same line
     "in" should be omitted

NF-50-IC10-047 Changing background of views (2009-12-14)

  It is now possible to chose a background color of than white for views,
  by changing the Default Style preference. This was already doable for
  editors.

NF-50-IC10-032 Auto-fix "blank line not allowed at end of file" (2009-12-10)

  An auto fix is now provided for messages like "blank line not allowed at end
  of file".

NF-50-IC10-030 Better emulation of Emacs's split features (2009-12-10)

  If you loaded the emacs.xml plugin, the control-x 2 and control-x 3 key
  shortcuts will now better emulate Emacs, and create new views of the
  editors, and properly reuse existing notebooks rather than create new
  ones

NF-50-IC07-012 All call-trees are now grouped into the same window (2009-12-10)

  The call trees are now sharing the same window. This avoids cluttering
  the GUI with multiple windows. It is also consistent with the location
  view for example.

NF-50-IC04-030 Auto-fix for "warning, var is unreferenced" (2009-12-09)

  When the compiler detects that a variable with a pragma unreferenced is
  used, and issue a warning, an auto-fix is now automatically offered.

NF-50-IC01-026 Auto-fix for unexpected tilde or percent in SPARK (2009-12-02)

  Semantic errors 317, 318, 319, 320 and 321 raised by SPARK Examiner complain
  about an unexpected or misplaced tilde or percent. An auto-fix for such
  errors is offered, which consists either in removing the offending tilde or
  percent, or in replacing it correctly.

NF-50-IB20-006 Better fixes for undefined entities (2009-11-20)

  Problems such as "entity is undefined" can now be provided with an auto-fix
  even if the compiler didn't find any potential match. A fix is offered if
  there is a unique entity in the project of the appropriate name.

NF-50-IB15-005 Apply multiple code fixes at once (2009-11-23)

  A new menu "Auto-fix" is now available when right clicking on an error
  message associated with a fix, allowing the user to apply fixes to multiple
  messages at once.

NF-50-IB13-028 Sort by file name in locations view for CodePeer (2010-03-16)

  Messages from CodePeer in the locations view are now sorted by file name
  so that it's easier to find a specific file in the report.

NF-50-IB10-017 Auto fix for "no space allowed" (2009-11-16)

  Messages "no space allowed" are now auto-fixed by gps.

NF-50-IB10-011 New contextual menu "Close all other editors (2009-11-17)

  When right-clicking on a notebook tab of an editor, a new contextual
  menu entry is shown, to close all other open editors

NF-50-IB09-016 Filter improvement for locations view (2010-09-21)

  When a filter is applied to locations view, file rows that do not have any
  visible messages are now hidden.

NF-50-IA28-022 Custom Run/Build contextual menus (2010-02-22)

  It is now possible through the Build->Settings dialog to tell GPS
  to add menus to build or run certain targets on the contextual menus
  for files and for projects.

NF-50-IA27-021 Support for perspectives (2009-11-30)

  GPS's Multiple Document Interface now supports perspectives. These are
  activity-specific desktops (for instance one dedicated to debugging
  sessions, one to VCS operations,...) with their own set of windows. But
  editors are always visible in all of these, so switching to another
  perspective does not lose your current work.

NF-50-IA23-015 Warn when assigning existing shortcut to action (2009-11-18)

  In the /Edit/Key Shortcuts dialog, a warning is now displayed when you
  try to reassign an existing key binding to another action

NF-50-IA22-010 Auto-completion for entities from Standard (2010-01-13)

  The smart completion now completes entities coming from the Ada Standard
  package.

NF-50-IA13-016 New menu /File/Close All Editors Except Current (2009-10-14)

  This menu closes all editors except the one that currently has the focus.

NF-50-IA11-001 Smart completion now completes formal profiles (2010-05-21)

  The smart completion mechanism now completes automatically formal profiles
  on generic instantiations.

NF-50-IA01-003 New plugin: highlight_selection.py (2009-10-12)

  When some text is selected in a buffer, this plugin will automatically
  highlight other occurrences of the selected text in the buffer.

NF-50-I922-014 Fewer system calls for cross-references (2009-09-29)

  The number of system calls performed when loading the cross-reference
  information from the disk (the .ali files) has been significantly
  reduced. This results in a speed up, especially noticeable when using
  sources from a remote server.

NF-50-I810-019 Remote mode now synchronizes files upon save (2009-10-28)

  When using the GPS remote mode, locally saved files are now synchronized
  to the remote servers immediately. This allows external programs running
  on the server to immediately have access to them, and also allows faster
  sync operations before GPS launches an action on the remote server.

NF-50-I702-007 Support for interfaces in completion (2010-02-24)

  On completion like Iface., Iface being typed after an interface, all
  primitives will now be offered by the completion, even the ones coming from
  multiple inheritance.

NF-50-I601-013 Key binding to remove messages in locations view (2010-09-22)

  A new key binding (alt-del by default, can be configured via the
  Edit->Key Shortcuts menu) is available to remove individual messages
  in the locations view.

NF-50-I501-009 New shell function: GPS.version (2010-02-18)

  A new function that can be used in plug-ins is provided to query the
  current GPS version: GPS.version(), which can be useful when e.g. writing
  plug-ins that need to support multiple versions of GPS.

NF-50-I325-006 Easy toolchain selection in project editor (2010-09-23)

  The selection of a toolchain from the project editor has been greatly
  improved, implementing automatic detection of installed toolchains and
  easy selection of predefined toolchains.

NF-50-I120-044 Preferences for CodePeer messages colors (2010-03-30)

  A set of color properties can now be used to customize the background color
  of CodePeer messages and annotations.

NF-50-H721-006 New engine for C and C++ navigation (2010-09-08)

  GPS has a new engine to navigate in C and C++ sources, now based on the cross
  reference information generated by the compiler (gcc -fdump-xref).
  While this capability is still in progress on the compiler side, this will
  provide in general a much better source navigation experience.

NF-50-H208-025 Warning displayed when editing read-only editors (2010-06-23)

  When trying to insert text in a read-only editor, GPS will display a warning
  in the Messages window.

NF-50-GA24-019 Smart completion for discriminants (2010-01-26)

  The smart completion now offers to complete with record discriminants.

NF-50-G626-028 Smart completion for pragmas and attributes (2010-01-11)

  GPS is now able to offer auto completions for Ada pragmas and attributes,
  including display of the corresponding documentation. This replaces the
  predef_ada_entity_insertions.py plug-in which has been removed.

NF-50-G428-003 Display call graph recursively (2010-06-30)

  GPS now provides a new contextual menu Browsers->xxx calls (recursively)
  to display a complete call graph from a given subprogram.
