Embarcadero RAD Studio 113 enables customization of code editor look

Embarcadero RAD Studio 11.3 enables customization of code editor look and feel with ToolsAPI and introduces a new biometric authentication component for mobile platforms

Embarcadero RAD Studio 113 enables customization of code editor look
RAD Studio 11 Alexandria – Version 3 (aka 11.3) is available for installation. With RAD Studio 11.3, users can customize the look and feel of the Code Editor with the new ToolsAPI and use the Highlight Matching Words feature in the Code Editor. In addition, version 11.3 introduces a new biometric authentication component for mobile platforms and many quality and performance improvements in Delphi LSP and the various RAD Studio libraries.

Embarcadero is pleased to announce the release of RAD Studio 11 Alexandria Release 3, also known as RAD Studio 11.3, along with Delphi 11.3 and C++Builder 11.3. This version focuses on quality and improvements and builds on the great new features of the previous three versions of RAD Studio 11 Alexandria.

RAD Studio 11.3 adds support for newer versions of multiple operating systems, adds a new ToolsAPI to the RAD Studio IDE to customize the way source code is drawn in the code editor, introduces new biometric authentication for mobile platforms, and a few other features and improvements.

Also in this release the main focus was on quality in terms of usability, performance and stability as requested by our customers. Quality improvements cover all areas of the product, with a particular focus on Delphi Code Insight with Delphi LSP, the high-DPI IDE introduced in version 11.0, and VCL styles. There are notable improvements in compilers and toolchains, Delphi and C++ RTL, VCL, FireMonkey, FireDAC and other database libraries, Internet access and services, including Delphi and C++ personalities.++Builder.

It should also be noted that RAD Studio is now shipping with the recently released InterBase 2020 Update 4 Developer’s Edition and IBLite/ToGo.

ToolsAPI support for code editor

RAD Studio 11.3 provides users with a complete, comprehensive, and highly detailed set of API tools interfaces that allow users to customize the code editor, such as:

This version therefore brings a new ToolsAPI for painting in the code editor. This is a new foundation that will allow developers to customize the editor without impacting its stability, and the team hopes this will deliver a rich and useful API that will spur innovation from its third-party providers as it eases the writing of plugins relieved to do things The team might not have thought.

Some of the most interesting and useful plugins work in the editor. Therefore, RAD Studio aims to provide a rich and valuable set of APIs that provides comprehensive data coverage and code editor presentation. Not only does this provide an officially supported API for plugins that previously required hacks to work, but the new API also makes it easier to write plugins that integrate directly into the code editor. We hope the new API will drive innovation in plugins and productivity add-ons, and we can’t wait to see what you and others come up with*!

These APIs allow users to intercept all drawing steps in the editor, either by editor line, editor bar, or editor body, and with events raised both before and after each step. You can also decide to add or replace things to the features of the IDE.

With an editor, users can query its status with a wealth of information available, and query a more detailed status for each line. Paint events contain full context. Use it to do any editor painting you can think of, or get any information you need about editors and their content, even without paint.

The new ToolsAPI unit contains its documentation for classes, methods and properties.

1677902808 306 Embarcadero RAD Studio 113 enables customization of code editor look
Highlight matching words in the code editor

The RAD Studio code editor has a new feature that allows you to display instances of the same word you select where the cursor is present and highlighted on the screen. Words are matched anywhere on the screen, including in comments. In addition, the feature offers the following options*:

  • Highlight matching words when a word is selected (double-click to select a word).
  • Highlight matching words when the cursor is inside or next to a word. Users can disable the feature if needed.
  • Disable highlighted keywords as a match feature with UI setting. This behavior is enabled by default.

1677902809 618 Embarcadero RAD Studio 113 enables customization of code editor look
Matching word highlighting
Other IDE improvements

Delphi LSP

In version 11.3, RAD Studio aims to focus heavily on quality and address key issues.

Delphi Code Insight via DelphiLSP is seeing very significant quality improvements to further enhance our Code Insight functionality, making it faster and more reliable, even on large applications. These improvements include code completion, help information, and navigation, with a focus on overall reliability, as well as providing completion or navigation results in areas where they were not previously provided.

In addition, the Delphi compiler now stores XmlDoc in a compiled DCU, which means that HelpInsight can display information in many areas where it was not able to before.

Delphi LSP enhancements include a strong focus on quality. Major issues have been resolved. In addition, the following items have been added*:

  • The HelpInsight window uses a different method of calculating its size and now fits the content much better.
  • Hovering over a static method implementation works as expected.
  • Ctrl+left click navigation works as expected when using a read-only file.
  • The IDE no longer adds an incorrect semicolon (“end*;”) when pressing Enter in an incomplete anonymous method.
  • Fixed an issue where Ctrl-click to navigate didn’t work when the navigation pane was surrounded by compiler directives. The parser can now handle simple conditional compiler directives like *:

    {$IF CompilerVersion > 24 and Defined(Windows)}The team clarifies that this does not affect parsing directives in the uses clause when adding entities from the IDE using a non-DelphiLSP system.

  • Code completing generic types within a generic method declaration, both the result type and within the <> generic type declaration, now works: function Test(a:T) : TResult; // TResult is now suggested in both places.
  • Fixed an issue where DelphiLSP could not determine the source path of a module when there were two or more different files with the same names in different projects.
  • Fixed an issue where code completion didn’t work in an “if statement” containing the symbols < oder > used in their condition.
  • When completing a type declaration, the private types declared in that type are now shown in code completion.

VCL and high-resolution form designer

RAD Studio 11.3 provides improvements to the High DPI IDE and in particular to the quality of the VCL Forms Designer under High DPI, with specific improvements in scaling non-visual components, including in frames.

Icons for SyncEdit and structure flow in the editor have been replaced with high-resolution icons.

1677902811 484 Embarcadero RAD Studio 113 enables customization of code editor look
Subversion DLLs

For security reasons, Embarcadero no longer provides Subversion DLLs, but recommends that you install and maintain your own client-side Subversion DLLs: the IDE can transparently connect to them if you use this version control system and plan to use it from RAD Studio to use IDE. This is similar to the support and integration that RAD Studio offers for Git and Mercurial.

Compiler and toolchain improvements (Delphi and C++)

RAD Studio 11.3 includes several quality improvements for most compilers that ship with RAD Studio.

Delphi compiler

Version 11.3 fixed several compiler issues in various areas including*:

  • Delphi LSP processing improvements and performance improvements.
  • Fixes for managed records and for generics and restrictions issues.
  • Codegen improvements and fixes.
  • Fixed a regression that caused the compiler to report wildly incorrect total lines in the build progress dialog. This was visible when building Spring4D.

C++ compiler and toolchain

RAD Studio 11.3 includes some quality fixes like:

  • Using a library suffix of $(Auto) now works for C++ projects.
  • Fixed an issue where the static library dependency checker used the wrong name, causing them to be rebuilt unnecessarily.

debugger

The LLDB debugger for Linux has been rebuilt with Ubuntu 18.x and Python 3.7.x as the minimum requirements. In addition, issues for macOS and Linux have been fixed in this version.

  • In version 11.3, all non-Windows platforms are LLDB-passed. As a result, GDB is no longer supported.
  • Format specifiers are supported in expression evaluation for LLDB.
  • Fixed issues with attaching to processes and loading symbols with LLDB.
  • Fixed issues for Android32 related to the evaluation of sentences and expressions related to the LLDB pass.
  • New versions of PAServer.
  • Users can detach from a program using the C++ Win64 debugger.
  • The Range menu option in the inspector is now available for tables.
  • Android64 supports thread naming.

library improvements

RAD Studio 11.3 includes some improvements and many quality fixes in all libraries, Delphi RTL, C++ RTL, VCL, FireMonkey, FireDAC, DB RTL, HTTP Client Libraries and HTTP Server. Here are the main changes.

Delphi RTL

Version 11.3 brings the following Delphi RTL improvements.

  • Since Android versions 12 and 13 changed the underlying C-Realloc API implementation of Android’s native memory manager, RAD changed the pre-allocation logic (256 bytes are added for each length change for strings and dynamic arrays when memory needs are larger than 64K bytes) to pre-allocate more than necessary to reduce operating system remapping calls and their copy operations.
  • The System Move RTL feature has been optimized for better performance on modern CPUs, running 2-5x faster depending on CPU family and actual bit count.
  • ZLib library updated to version 1.2.13.
  • Improved performance of _InitializeRecord.
  • Improved performance of TDirectory.GetFiles for many files.

VCL

Version 11.3 brings the following improvements to VCL.

  • The VCL TControlList component now provides the ability to select multiple items using the following new properties and events*:
    • TCustomControlList.MultiSelect property
    • TCustomControlList.Selected property
    • TCustomControlList.ClearSelection method
    • TCustomControlList.SelectAll Method
  • Fixed scaling issues in the TDBGrid, TComboBox, and TStringGrid controls, among others, and DPI change issues in several components, including the TListView, TComboBox, and TStringGrid controls. Also, the general behavior has been improved when a Scaled property of the form is False.
  • Fixed some TBalloonHint regressions.
  • Improved StyleHook code to avoid possible access violations.
  • TreeView graphics improvements in scaling and graphics object rendering improvements for several other controls.
  • Fixed a conflict in TRichEdit control between spell check and custom context menus.
  • Improved NumberBox entry with MinValue active.
  • Better support for TControlList controls with a very large number of (virtual) items.
  • Fixed issues with custom placement and size of buttons in the title bar, including canvas size and left caption border.

fire monkey

RAD Studio 11.3 introduces the new TBiometricAuth component that provides the means for authorization via biometrics, such as Face ID, fingerprints, on Android and iOS devices.

Use TBiometricAuth from the component palette to set the desired properties. When the app will be available for Android, ensure that the prompt properties of at least PromptDescription and PromptTitle have values. Also, be sure to specify the desired strengths for the BiometricStrengths property. You can also create handlers for the OnAuthenticateSuccess or OnAuthenticateFail events to handle what should happen in these scenarios.

Version 11.3 also brings the following FireMonkey improvements:

  • Added new interface service IFMXPhoneDialerListenerService, which aims to track changes in phone system service state (calls, carrier, call status).
  • FireMonkey applications now correctly handle shutdown requests from the Windows restart manager.
  • Added macOS ARM 64 platform supported by Radiant Shapes.
  • Improved accessibility support for Firemonkey for Windows when inspecting with Accessibility Insights and fixed an AV in FMX.ScreenReader.Win.pas.
  • Several improvements to TWebBrowser for the Windows platform, including the availability of 3D FMX applications and the implementation of TCustomWebBrowser.CaptureBitmap for Edge.
  • Some iOS platform translation improvements for iOS VirtualKeyboard Done button and iOS* selector buttons; Fixed iOS scrolling for TDateEdit, TTimeEdit, TComboBox and TiOSAddressBook.SaveContact.
  • DocumentFile provider support for Android.
  • Android improvements when moving the cursor in a TMemo with finger swiping, TAddressBook component.
  • Windows improvements with TForm Cursor, TWinMultiDisplay.FindDisplay.
  • FireMonkey graphics improvements in TBitmap.AssignFromSurface, TCanvas.TransformRect, TBitmap.Canvas.BeginScene, and removal of artifact lines in TMemo and TGridPanelLayout.
  • Improvements and fixes for many controls including Multiview (with controltype=platform), SpeedButton (isPressed when used in a TFrame), Label (FocusControl), IsChecked by TTreeViewItem, TEdit works inside a TVertScrollBar.
  • ClipChildren now supports XRadius and YRadius.
  • Made improvements to the tab key that cycles through all controls.

Source: release note