Ride User Guide
Repository | https://github.com/dyalog/ride |
Table of Contents
About This Document
This document introduces Dyalog's cross-platform IDE (Ride). It describes the installation process and Ride's user interface (windows, menus, customisation options, keycode/keystroke mappings, etc.).
Ride can be extensively customised; this document assumes that the default configuration is in use.
Audience
It is assumed that the reader has a working knowledge of Dyalog.
The Dyalog website contains a range of resources to help you develop your knowledge. New users might also find that it is helpful to select the Show tips for glyphs check box in the General tab of the Preferences dialog box.
Conventions
Unless explicitly stated otherwise, all examples in Dyalog documentation assume that ⎕IO
and ⎕ML
are both 1.
Note
Warnings about actions that can impact the behaviour of Dyalog or have unforeseen consequences are shown in boxes like this one.
Introduction
Note
The use of Ride is subject to the conditions of the MIT licence. The installation and use of Ride does not convey any additional rights to use Dyalog or any other Dyalog products. Specifically, although the interpreter can be configured to allow Ride to debug runtime executables, you should only do this if your Dyalog licence also allows it.
Ride is a cross-platform, graphical development environment capable of producing a rich user experience. With it, you can use APL interactively to explore data, discover algorithms and create solutions – or diagnose problems, resolve issues and resume the execution of running applications.
Ride runs separately from the APL interpreter, but can communicate with any local or remote APL session. It can launch APL sessions on remote machines or to connect to APL interpreters that are already running.
An interpreter can also provide Ride's interface as a web page. This makes it possible to control a remote interpreter thorugh a browser, without installing Ride on your machine. For this zero-footprint mode to work on Windows, Ride needs to be installed on the machine where the interpreter is running, however, it comes with the interpreter installation on all other platforms.
On Windows, the interpreter has a built-in IDE, which continues to provide the richest environment, however, Ride is the recommended interface on all other platforms.
Installation
Note
Ride is built on the Electron framework. To install this version of Ride, your platform must support the Electron major release 26. Consult Electron's platform support documentation if in any doubt.
This version of Ride can connect to version 15.0 or later of the Dyalog interpreter.
Font and Keyboard Support
If Dyalog is not installed on the machine that Ride is being installed on, then the APL385 Unicode font and keyboard mappings installed with Ride mean that they are available within Ride. However, to be able to enter APL glyphs outside Ride, see APL Fonts and Keyboards.
Ride in the Browser
The use of Ride from a browser requires no installation on the machine where Ride will run; all you need is a modern browser. This is known as "zero-footprint Ride".
Note
When installing Ride, if you select the default location suggested by the installer then APL can be launched as a Ride server without creating a configuration file.
On non-Windows platforms, zero-footprint Ride is automatically installed to the default location ([DYALOG]/RIDEapp) when Dyalog is installed and no additional installation is necessary. On Windows, zero-footprint Ride needs separate installation.
For details, see Ride in the browser.
Linux
Ride requires Debian 8, Fedora 24.04, or Ubuntu 14.04 (or later). Distributions built on top of the above should also work, provided that they have libnss version 3.26 or newer.
- Download the .deb or .rpm file (whichever is appropriate for your Linux distribution) from the Ride releases page. If your Linux distribution does not support either .deb or .rpm files, then please contact support@dyalog.com.
- From the command line, use standard installation commands to install the package.
A Ride shortcut is added to the desktop.
macOS
Ride requires macOS High Sierra (10.13) or later.
Ride is the default UI for Dyalog on macOS and is installed at the same time as Dyalog (see the Dyalog for macOS Installation and Configuration Guide); no further installation is required.
You can also install Ride as a separate, stand-alone, product, for example to work exclusively with remote APL interpreters:
- Download the .pkg file from the Ride releases page.
- Double-click on Ride's .pkg file.
- Follow the instructions.
Ride is added to the Applications directory (accessed by selecting Applications from the Go menu in the Finder menu bar, or by activating Spotlight with ⌘+Space and typing Ride).
Starting Ride will add Ride's icon to the temporary "Recently Used Apps" area to the right of the dock. To keep the Ride icon in the dock permanently, right-click on the icon and select Options > Keep in Dock
from the drop-down list that appears.
Windows
Ride requires Windows 10 or later.
- Download the .zip file from the Ride releases page.
- Unzip the downloaded .zip file, placing the
setup_ride.exe
andsetup_ride.msi
files in the same location as each other. - Double-click on the
setup_ride.exe
file. - Follow the instructions.
A Ride shortcut is added to the desktop
Configuration (.ini) File
A .ini configuration file can be used to define settings for the RIDE_INIT
configuration parameter. By default, the interpreter will look for a ride.ini file in:
- the directory in which the default session and log files are stored, for example, C:\Users\JohnDoe\AppData\Local\Programs\Dyalog (on Microsoft Windows)
- $HOME/.dyalog (on all other platforms)
This file is not automatically created by Dyalog but can be created manually. Examples of the fields that you might want to include within the .ini configuration file are included in the sample configuration file.
A different name and location for the .ini configuration file can be specified by including a second mode
, CONFIG
, in the RIDE_INIT parameter and setting it so that CONFIG=<filename>
, where <filename>
is the fully-qualified path to, and name of, a .ini configuration file containing name-value pairs related to mode, certificate details, and so on.
Note
The .ini configuration file must be located on the machine on which the interpreter is running (this is not necessarily the same machine as the one on which Ride is running).
Starting a Dyalog Session
Note
When running a Dyalog Session through Ride, that Session should only be accessed through Ride. One exception to this rule is when developing or running applications that are ⎕SM
/⎕SR
based; access to the ⎕SM
window cannot be made through Ride.
When running a Dyalog Session through Ride, the Session can be:
-
local to the machine on which Ride is running.
This requires Dyalog to be installed on the machine on which Ride is running.
-
remote from the machine on which Ride is running.
Ride can start a Session using an interpreter installed on a remote machine irrespective of whether Dyalog is installed on the machine on which Ride is running. In this situation:
- The operating system on which the remote interpreter is running is irrelevant – the instructions given in this chapter apply to the operating system on which Ride is running (the two operating systems do not have to be the same).
- The remote machine does not need to have Ride installed but the Dyalog Session must be Ride-enabled.
Normally, connections between Ride and interpreters are initialised from the New Session screen. The exception to this is zero-footprint use, which always requires Dyalog to be started first with suitable configuration parameters, after which Ride will appear when you direct a web browser at the APL interpreter. See Ride in the browser for details.
New Session window
The New Session screen is displayed when Ride starts, unless "Auto-start top-most configuration when Ride starts" has been selected from Preferences > General > Session (the default on macOS). This screen allows simple and advanced use.
Simple usage
Click the 🞂 icon for the configuartion you want to launch. Configurations for all locally installed Dyalog versions are automatically shown unless manually removed.
Advanced usage
↑/↓ select the previous/next configuration. Home/End selects the first/last configuration. Alt+↑/↓ moves the currently selected configuration up/down in the list.
You can add new custom configurations (for example for remote interpreters) by clicking NEW… or modify an existing configuration by clicking its ⚙ icon.
Either of these will open the advanced configuration pane where you can choose connection type and protocol, provide the interpreter with arguments and configuration parameters, and more.
For example:
- If you want Ride to connect to a remote interpreter that has been started with the configuration parameter
RIDE_INIT="SERVE:*:4502"
then create a new configuration of type "Connect to an interpreter", then specify IP address and port 4502. - If you want Ride to await an incoming connection from a remote interpreter that will be started with the configuration parameter
RIDE_INIT="CONNECT:jaypc.dyalog.bramley:4502"
(where your address isjaypc.dyalog.bramley
) then choose "Listen", and specify port 4502.
Click OK to connect, start, or begin listening — per the current settings.
Ride in the browser
Dyalog can serve Ride to any modern web browser – this is known as "zero-footprint" operation since Ride is not installed on the client machine but is downloaded by the web browser on demand. The advantage is that an APL session can be monitored and maintained from any device without installing anything.
This mode has the following limitations:
- You can only interact with the APL interpreter that is serving you; the New Session window is not available.
- Preferences are persisted in browser storage using cookies.
- Window captions cannot be controlled.
- The floating Trace/Edit windows option is not available.
Accessing Zero-Footprint Ride from a browser
- If Dyalog is running on Windows, install zero-footprint Ride
- Set the
RIDE_INIT
configuration parameter toHTTP:address:port
(see Ride Init), for example,RIDE_INIT=HTTP:*:8080
. - Start a Dyalog session.
- Navigate to
http://<address>:<port>
, for example,http://10.0.38.1:8080
.
If Dyalog is running on non-Windows platforms, the interpreter expects to find zero-footprint Ride installed at the [DYALOG]/RIDEapp
directory; this removes the need to include the HTTPDIR
field in a configuration file.
The Dyalog Development Environment
Interactive Session Window
Ride's main interface is an interactive session, where you enter expressions and the interpreter prints results.
Along the left edge of the interactive session is a narrow area that shows input/output information. It indicates modified lines and code blocks (which will be executed next time you press Enter) and indicates which output lines belong together.
Display of the session indicator margin can be toggled via Edit > Preferences > General > Session > Show session margin
.
Multi-line Session Input
Sessions allow multi-line input.
Note
This optional feature is on by default. To disable it, set the DYALOG_LINEEDITOR_MODE configuration parameter to 0 (for more information, see the Dyalog for macOS Installation and Configuration Guide).
With multi-line input enabled: * grouped lines are syntax coloured in their entirety. * if a change is made to one or more lines in a group, then the whole group is marked to be re-executed when ER is pressed. * lines can be inserted into a group with the IL keystroke. * the current line can be cleared with the EL keystroke. (It is not possible to UNDO a delete line in the session). * if the interpreter detects an un-terminated control structure or dfn on a single line of input it: * enters a new multi-line mode which accumulates lines until the control structure or dfn is terminated. * executes a completed block of lines as if it were within a niladic defined function.
Multi-line input can be terminated by correctly terminating the input. For example, if you started a block of multi-line input with a {
character, then a matching and similarly nested }
character terminates it. Similarly, if you started a block of multi-line input with :If
then a matching and similarly nested :EndIf
terminates it. Issuing a weak interrupt aborts the multi-line input and all changes are lost.
Status Bar
Below it, you will find the status bar which provides situational awareness. Items turn blue if non-default:
Item | Description |
---|---|
&: <number> |
Number of threads currently running (minimum value is 1). |
⎕DQ: <number> |
Number of events in the APL event queue. |
⎕TRAP |
Error trap in effect. |
⎕SI: <number> |
Number of stack frames in the current thread. |
⎕IO: <number> |
Current index origin. |
⎕ML: <number> |
Current migration level. |
Pos <n>/<n>, <n> |
Cursor position in active window (line number/total lines, column number). |
Workspace Explorer
The workspace explorer provides a tree view of the current workspace (#
) and session namespace (⎕SE
). It can also be used to edit or view any item by double-clicking on the item.
Display of the workspace explorer can be toggled with the View > Show Workspace Explorer
menu option.
Debug Information Window
The debug window provides information about currently running threads and the current stack.
The Threads area shows each thread's number (⎕TID
) and name (⎕TNAME
), its state (for example, Session
, Pending
, :Hold
, ⎕NA
), and which tokens it awaits (⎕TREQ
). For information on how to use threads, see the Dyalog Programming Reference Guide.
The SI Stack area lists the functions in the execution stack, similar to the display of )SI
.
Display of the debug information window can be toggled with the View > Show Debug
menu option.
Language Bar
At the top of the interactive session, you can find the language bar. Click on an APL glyph to type it. You can also hover your mouse over a glyph for a brief description and information about how to type it without using the language bar.
Display of the language bar can be toggled with the View > Show Language Bar
menu option.
Keyboard Mappings for APL Glyphs
A set of keyboard key mappings for APL glyphs is installed with Ride. When Ride is the active application, these key mappings are automatically enabled. Ride attempts to identify a user's locale and use the appropriate key mappings; if the locale cannot be identified or the locale-specific key mappings have not been configured, then the default configuration is used (key mappings for a US keyboard).
Using this set of key mappings, APL glyphs are entered by pressing the prefix key followed by either the appropriate key or the SHIFT key with the appropriate key. The prefix key and key mappings can be customised.
Other Keyboard Options
Installing and enabling a set of key mappings allows Dyalog glyphs to be entered in other applications (for example, email). An alternative set of key mappings can also be used to replace the default key mappings for Ride.
Information and the requisite downloadable files are available from Dyalog's APL Fonts and Keyboards page.
Microsoft Windows
If you have the Dyalog Unicode IME installed, then Ride activates it by default. It can be disabled by unchecking the Also enable Dyalog IME checkbox in the Keyboard tab of the Preferences dialog box.
If Dyalog is not installed on the machine that Ride is running on, then the Dyalog Unicode IME can be downloaded and installed from Dyalog's APL Fonts and Keyboards page.
Edit and Trace Windows
Edit
An Edit window can be opened in any of the following ways:
- Enter
)ED <item name>
in the interactive session - Enter
⎕ED '<item name>'
in the interactive session - Press Shift+Enter (can be configured via
Edit > Preferences> Shortcuts > ED
) while the text cursor is on or adjacent to any item name - Double-click on or adjacent to an item name (can be toggled via
Edit > Preferences > Trace/Edit > Double click to edit
)
If the object name does not already exist, then it becomes a function or operator. Different types can be explicitly specified using the )ED
or ⎕ED
options – see )ED
or ⎕ED
in the Dyalog APL Language Reference Guide.
A Trace window can be temporarily changed into an Edit window by pressing Shift+Enter or clicking while the text cursor is not on or adjacent to any name.
To save your changes and exit the Edit window, press Esc (can be configured via Edit > Preferences> Shortcuts > EP
) or click .
To exit the Edit window without saving, press Shift+Esc (can be configured via Edit > Preferences> Shortcuts > QT
).
Trace
The Trace window aids debugging by enabling you to step through your code line by line, display variables in Edit windows and watch them change as the execution progresses.
A Trace window can be opened from the Session window by pressing Ctrl+Enter (can be configured via Edit > Preferences > Shortcuts > TC
) after typing an expression.
Note
By default, Dyalog is also configured to initiate an automatic trace whenever an error occurs, that is, the Trace window opens and becomes the active window and the line that caused the execution to suspend is selected. This is controlled by the interpreter configuration parameter TRACE_ON_ERROR
. For information on configuration parameters, see the Dyalog Installation and Configuration Guide for your operating system:
To resume execution, press the |> button (can be given a keyboard shortcut via Edit > Preferences> Shortcuts > RM
).
To resume execution until the current function returns, press the |¯\. button (can be given a keyboard shortcut via Edit > Preferences> Shortcuts > BH
).
To cut back the stack one level, press Esc (can be configured via Edit > Preferences> Shortcuts > EP
) or click .
Navigating the Windows
New Edit and Trace windows can be floating rather than docked by selecting the Floating windows checkbox in the Trace/Edit of the Preferences dialog box.
Docked or not, the Session, Edit and Trace windows form a closed loop for the purpose of navigation:
- to make the next window in this loop the active window, press Tab (can be configured via Edit > Preferences> Shortcuts > TB
)
- to make the previous window in this loop the active window, press Shift+Tab (can be configured via Edit > Preferences> Shortcuts > BT
)
You can close all Trace/Edit windows without clearing the stack by selecting the Window > Close All Windows
menu option or using 2023⌶.
Working in a Dyalog Session
The main purpose of a development environment is to enable a user to enter and execute expressions; this chapter describes how this can be achieved when running a Dyalog Session through Ride and explains the functionality that is provided to simplify the process.
Keyboard Shortcuts and Command Codes
Keyboard shortcuts are keystrokes that execute an action rather than produce a symbol. Ride supports numerous keyboard shortcuts, each of which is identified by a command code and mapped to a keystroke combination; for example, the action to open the Trace window is identified by the code TC (described in the documentation as <TC>
). For a complete list of the command codes that can be used in a Dyalog Session running through Ride and the keyboard shortcuts for those command codes, see Keyboard Shortcuts.
Positioning the cursor over the button on the right hand side of the Language bar displays a dynamic tooltip showing all configured keyboard shortcuts for command codes. Clicking on the button displays the Preferences dialog box (the same as selecting the Edit > Preferences
menu option), through which keyboard shortcuts can be customised (see Shortcuts Tab).
Entering APL Glyphs
APL glyphs can be typed by:
- typing the glyph in the Session window or Edit window using the appropriate key combination which is introduced using a prefix key.
- clicking the appropriate glyph on the Language bar – this inserts that glyph into the active Session/Edit window at the position of the cursor.
If you pause after pressing the prefix key then the autocomplete functionality displays a list of all the glyphs that can be produce together with their full key combinations and their name. If you enter the prefix key a second time then a list of all the glyphs and their full keyboard combinations is again displayed but this time with all the names (formal and informal) that are used for each glyph.
You can select an entry from the list using mouse or keyboard, or keep typing until your desired choice is active, then press Tab or Right Arrow to insert it.
Executing Expressions
Ride provides several mechanisms that assist with accuracy when entering expressions in a Dyalog Session, including, auto-closing brackets, autocompleting control structures, and highlighting of matching words and brackets. These can be toggled via Edit > Preferences > Contextual
help.
In the interactive session, you can use the cursor keys to navigate the log. Pressing Enter re-executes the current line, or all modified lines, if any. Modified lines are restored to their previous state, while their altered versions are copied to the bottom of the session log.
Alternatively, you can recall previously entered expressions using Ctrl+Shift+Backspace for going back in time and Ctrl+Shift+Enter for going forwards in time (configurable via Edit > Preferences > Shortcuts > BK
and FD
).
If you set a keyboard shortcut (configurable via Edit > Preferences > Shortcuts > VAL
) for the "Evaluate selection or name under cursor" action, then you can press your assigned shortcut to do exactly that.
Threads
Ride supports multithreading. For information on threads, see the Dyalog Programming Reference Guide.
Setting Stop, Trace, and Monitor points
For information about stop (breakpoint), trace, and monitor points, see Stop Controls, Trace Controls, and Monitor Controls.
To toggle a Stop point, click in the far left margin of a Trace or Edit window.
To toggle a Trace or Monitor point, right-click in that margin and select from the context menu.
Stop, Trace and Monitor points are indicated in the margin with a red circle, a yellow circle, and a clockface, respectively. If more than one type of point has been set on a single code line, a plus icon will be shown instead.
Interrupts
A Dyalog Session running through Ride responds to both strong and weak interrupts.
A strong interrupt suspends execution as soon as possible (generally after completing execution of the primitive currently being processed). A strong interrupt is issued by selecting Actions > Strong Interrupt
. You can assign a keyboard shortcut for this via Edit > Preferences > Shortcuts > SI
.
A weak interrupt suspends execution at the start of the next line (generally after completing execution of the statement currently being processed). A weak interrupt is issued by selecting Actions > Weak Interrupt
in the menu options or by pressing Break (usually Ctrl+Pause, but configurable via Edit > Preferences > Shortcuts > WI
).
Terminating a Dyalog Session Running Through Ride
Ride will close when the interpreter terminates, including through entering )OFF
or ⎕OFF
in the interactive session.
Ride-Specific Language Features
When running a Dyalog Session through Ride, the majority of language features remain unaltered. However, there are a few additional features (see I-beams and Ride-Specific Configuration Parameters) and some existing functionality that is meaningless (see Unsupported Language Elements) when a Session is running through Ride.
I-Beams
I-Beam is a monadic operator that provides a range of system-related services.
Syntax: R←{X}(A⌶)Y
Warning
Any service provided using an I-Beam should be considered as experimental and subject to change – without notice – from one release to the next. Any use of I-Beams in applications should, therefore, be carefully isolated in cover-functions that can be adjusted if necessary.
There are three I-Beams that are only relevant to Ride. Consult the main Dyalog documentation for details:
Microsoft Windows
By default, Ride is not enabled on run-time executables. For security reasons, enabling Ride is a two-step process rather than using (for example) a single configuration parameter. To enable Ride, two steps must be taken:
- Set the
RIDE_INIT
configuration parameter (see RIDE_INIT) on the machine on which the run-time interpreter is running to an appropriate value. - Execute
3502⌶1
in your application code.
The run time interpreter can then attempt to connect to a Ride client.
Enabling Ride to access applications that use the run-time interpreter means that the APL code of those applications can be accessed. The I-beam mechanism described above means that the APL code itself must grant the right for a Ride client to connect to the run time interpreter. Although Dyalog Ltd might change the details of this mechanism, the APL code will always need to grant connection rights. In particular, no mechanism that is only dependent on configuration parameters will be implemented.
For example, R ← 3502⌶'SERVE:*:4502'
configures the interpreter to accept incoming Ride connections from any machine on port 4502, and then enables Ride with that configuration.
- if
R
is0
, then Ride was disabled - if
R
is¯2
, then Ride was active
On a run-time interpreter, 3502⌶1
is the only way to enable Ride.
If the RIDE_INIT
configuration parameter is set but Ride DLLs/shared libraries are not available, then a run-time interpreter will start but the subsequent call to 3502⌶
will be unsuccessful.
Configuration Parameters
Some customisation can be performed using configuration parameters outside a Session. For details of other configuration parameters that can be set, and the syntax used to set them, see the Dyalog Installation and Configuration Guide specific to the operating system that you are using:
- macOS Installation and Configuration Guide
- Microsoft Windows Installation and Configuration Guide
- UNIX Installation and Configuration Guide
Changes made to configuration parameters in the dyalog.config
file only impact local interpreters (that is, interpreters that are configured by that file) and do not impact interpreters that Ride can connect with on other machines.
RIDE_EDITOR
This configuration parameter specifies the fully-qualified path to the executable of the editor to use in a Dyalog Session instead of Ride's built-in editor (for example, vim, Emacs or Notepad++).
RIDE_INIT
This configuration parameter specifies how the interpreter should behave with respect to the Ride protocol. Setting this configuration parameter on the machine that hosts the interpreter enables the interpreter-Ride connection.
The format of the value is {mode:setting}[,mode:setting]
where mode
is the action that the interpreter should take and determines the content of the setting
. Valid (case-insensitive) values are:
SERVE
– listen for incoming connections from a Ride clientCONNECT
– attempt to connect to the specified Ride client and end the session if this failsPOLL
– attempt to connect to the specified Ride client at regular intervals and reconnect if the connection is lostHTTP
– listen for incoming connections from the web browser, via Zero Footprint RideCONFIG
– retrieve values to use from a .ini configuration file
Note
If two modes are specified, then:
- one of the modes must be
CONFIG
. - the
SERVE
/CONNECT
/POLL
/HTTP
values always override the equivalent values in the .ini configuration file.
If mode
is SERVE
or HTTP
, then setting
is address:port
, where:
-
address
is the address of the interface on which the machine running the APL process should listen (that is, the address of the machine that is running the interpreter). Valid values are:<empty>
– listen on all loopback interfaces, that is, the interpreter only accepts connection from the local machine*
– listen on all local machine interfaces, that is, the interpreter listens for connections from any (local or remote) machine/interface- the host/DNS name of the machine/interface running the interpreter – listen on that specific interface on the local machine
- the IPv4 address of the machine/interface running the interpreter – listen on that specific interface on the local machine
- the IPv6 address of the machine/interface running the interpreter – listen on that specific interface on the local machine
-
port
is the TCP port to listen on
If mode
is CONNECT
or POLL
, then setting
is address:port
, where:
-
address
is the destination address to attempt to connect to (the machine/interface running Ride client). Valid values are:- the host/DNS name of a machine/interface running Ride client
- the IPv4 address of a machine/interface running Ride client
- the IPv6 address of a machine/interface running Ride client
-
port
is the TCP port to connect to
If mode
is CONFIG
, then setting
is filename
, where:
filename
is the fully-qualified path to, and name of, a .ini configuration file containing name-value pairs related to mode, certificate details, and so on. The default value forsetting
isride.ini
.
Examples
To listen on port 4502 for connection requests from a Ride client running on any machine: RIDE_INIT=SERVE:*:4502
To attempt to connect to a Ride client running on a different machine (with IPv4 address 10.0.38.1 and listening on port 4502) and end the Session if unable to do so: RIDE_INIT=CONNECT:10.0.38.1:4502
To establish a connection using the settings in the ride_sample.ini file:RIDE_INIT=CONFIG:C:/tmp/ride_sample.ini
To attempt to establish a secure connection with a Ride client running on a different machine (with IPv4 address 10.0.38.1 and listening on port 4502) using certificate details specified in the ride_sample.ini file: RIDE_INIT=CONFIG:C:\tmp\ride_sample.ini,CONNECT:10.0.38.1:4502
or RIDE_INIT=CONNECT:10.0.38.1:4502,CONFIG:C:\tmp\ride_sample.ini
With Dyalog and Ride installed on a machine with IPv4 address 10.0.38.1, to listen on port 4502 for connection requests from a web browser running on any machine (Ride in the browser): RIDE_INIT=HTTP:*:4502
To open the Zero Footprint Ride in a web browser on:
- the local machine: URL =
http://localhost:4502
- a different machine: URL =
http://10.0.38.1:4502
The RIDE_INI
configuration parameter is set automatically when launching a new Dyalog Session from Ride.
Note
If the RIDE_INIT
configuration parameter is set but Ride DLLs/shared libraries are not available, then a run-time interpreter will start but the subsequent call to 3502⌶
will be unsuccessful – see 3502⌶.
Unsupported Language Elements
When running a Dyalog Session through Ride, a few of the features that are available with non-Ride Sessions do not function as might be expected.
Underscored Characters
Underscored characters can be entered into the Session window and Edit windows using the ``_ <letter>
method (two backticks, followed by an underscore and a letter), for example, type ``_ F
to produce F.
Underscored Characters in Window Captions
Ride is restricted by the operating system when it comes to displaying underscored characters in window titles (captions). This restriction means that underscored characters can be displayed as circled characters, white rectangles, or black lozenges containing a question mark. Tab captions use the APL font, so they will display underscored characters correctly.
Underscored Characters in the Session
If Ride is connected to a Unicode edition of Dyalog, then underscored characters are displayed correctly in the Session window, Edit windows and Trace windows. If Ride is connected to a classic edition of Dyalog, then the following command must be run in every APL Session to enable the underscored alphabet to be displayed correctly:
⎕IO←0
⎕AVU[97+⍳26]←9398+⍳2
2 ⎕NQ '.' 'SetUnicodeTable' ⎕AVU
Function Key Configuration
Character strings (including command keys) can be associated with programmable function keys using the ⎕PFKEY system function. When running a Dyalog Session through Ride, ⎕PFKEY
can be used to define/display the keystrokes for a designated function key; however, that function key does not acquire the defined set of keystrokes, rendering ⎕PFKEY
of no real use. Instead, function keys should be set through the Shortcuts tab of the Preferences dialog box.
Operating System Terminal/Command Window Interaction
Features that rely on interaction with an operating system terminal/command window (that is, ⎕SR and )SH or )CMD with no argument) cannot work in a Dyalog Session that is running through Ride. Instead of behaving as documented in the Dyalog APL Language Reference Guide, their behaviour depends on the way in which the interpreter and Ride combined to start a Dyalog Session:
-
If the interpreter was started by Ride, then:
⎕SR
generates a trappable error)SH
or)CMD
with no argument produces a "Feature disabled in this environment" message.
-
If the interpreter and Ride were started independently and then connected to each other, then the use of these features will appear to hang the Dyalog Session that is running through Ride. However, the Dyalog Session can be recovered by locating the operating system terminal/command window and using it to complete the operation. If there is no operating system terminal/command window, then the Dyalog Session is irrecoverable.
Customising Your Session
The appearance and behaviour of a Dyalog Session running through the Ride can be customised to meet personal preferences and corporate guidelines. Configuration can be performed:
- through the View menu
- through the Preferences dialog box
- using configuration parameters
Customisations performed using any of these methods persist between Sessions (they also persist when the installed version of Dyalog is upgraded).
Note
To remove all customisations, reset all Ride-specific settings and return to the initial default settings, rename/delete the following directory:
- Linux:
$HOME/.config/Ride-<version>
- macOS:
$HOME/Library/Application Support/Ride-<version>
(hidden directory – access from the command line) - Microsoft Windows:
%APPDATA%\Ride-<version>
View Menu
The View menu includes options that enable the appearance of the Dyalog Session running through the Ride to be changed. Select these options to:
- show/hide the Language bar
- show/hide the Status bar
- show/hide the Workspace Explorer
- show/hide the debug information window
- change the font size in all windows in the Session
- configure the display/functionality of the Trace/Edit windows
Preferences Dialog Box
The Preferences dialog box can be used to customise:
- the automatic formatting of text in an Edit window
- the default keyboard key mappings for APL glyphs
- the keyboard shortcuts for command codes
- the style for syntax and background colouring
- the caption of the Session window
- the menu configuration
- the display of floating Trace/Edit windows
The Preferences dialog box can be opened in any of the following ways:
- selecting the
Edit > Preferences
menu option - clicking on the button on the right hand side of the Language bar
- entering the Show Preferences command (
<PRF>
)
The Preferences dialog box comprises multiple tabs. The Print button enables the contents of the Keyboard and Shortcuts tabs to be printed.
General Tab
Allows customisation of a variety of features.
To change the general configuration options
- Open the General tab.
-
Select the appropriate check boxes and set the variables as required:
-
Highlight matching brackets:
() [] {}
Select this to automatically highlight the matching start and end enclosures when positioning the cursor before or after one of them (with contiguous brackets, the bracket immediately before the cursor has its other enclosure highlighted).
-
Auto-close brackets
Select this to automatically add the paired enclosure when an opening enclosure is entered.
-
Autocompletion
Select an autocompletion option from the drop-down list (autocompletion makes suggestions when entering the name of, for example, namespaces, variables, functions, operators, user commands and system names). Options include:
- off – disables autocomplete functionality.
- classic – displays a pop-up window of suggestions based on the characters already entered and the context in which the name is being used.
- shell – resembles the autocomplete functionality of the Linux bash shell in its use of the tab key.
-
Autocompletion after
<time>
msSpecify a time interval after which the Ride's autocompletion functionality is activated.
-
Make suggestions after
<time>
charactersDecides after how many characters the suggestions shall be viewed.
-
Autocomplete control structure with snippets
Select this to be presented with auto-completion template options for control structures in the Edit window.
-
Highlight matching words
Select this to highlight all occurrences of a selected string in the same window.
-
Show value tips
Select this to display the referent of a name. When the cursor is positioned over or immediately after a name, the name is highlighted and its referent is displayed (for example, the value of a variable or the body of a function).
-
Show tips for glyphs
Select this to show the tooltip for a glyph. When the cursor is positioned over or immediately after a glyph, the glyph is highlighted and information about it is displayed – this includes the name of the glyph, the keyboard shortcut to enter it, its monadic/dyadic name and examples of its syntax, arguments and result.
-
Auto-start top-most configuration when Ride starts
Skips the New Session screen by immediately selecting the first configuration
-
Auto PW
Select this to display text in the Session window up to the full width of the Session window before wrapping (automatically updates when the Session is resized). Also sets ⎕PW to this value.
-
Persistent history
<number>
linesSelect this and define the number of lines that are available to recall using the Backward/Undo command (
<BK>
). This specifies how many input lines Ride remembers from the end of one Ride session to the start of the next session. -
Session log size
<number>
lines (0 = unlimited)Sets the number of lines in the session log.
-
Show session margin
Toggles the session indicator margin.
-
Show quit prompt
Select this to display a confirmation dialog box when exiting the Ride session.
-
Connect on quit
Select this to be returned to the Ride-Dyalog Session dialog box on exiting a Session.
-
Block cursor
Select this to display the cursor as a solid rectangular block rather than a vertical line.
-
Cursor blinking
Select a cursor animation from the drop-down list (for example, blink or solid).
-
Highlight current line
Select an option from the drop-down list to indicate how the line that the cursor is currently positioned on should be emphasised (applies to all windows). Options include:
- none – do not indicate the current line.
- gutter – display a small grey rectangle in the first column of the line.
- line – display a grey rectangle around the entire line except the first column.
- all – gutter and line.
-
Minimap enabled
Select this to display a dynamic impression of the entire (or very large portion of) contents of the Session/Edit window in a column on the right‑hand side of that window. Clicking within the minimap moves the display to that location.
-
Render characters
Only relevant when Minimap enabled is selected. Select this to use tiny rendered font in the minimap rather than greeking (showing a representation of the text).
-
Show slider
Only relevant when Minimap enabled is selected. Select an option from the drop-down list to indicate how the currently-displayed content of the window is highlighted in the minimap. Options include:
- always – the current display is always highlighted in the minimap.
- mouseover – the current display is only highlighted in the minimap when the mouse is positioned over the minimap.
-
-
Click OK to save your changes and close the Preferences dialog box, Apply to save your changes without closing the Preferences dialog box or Cancel to close the Preferences dialog box without saving your changes.
Note
Settings that impact the automatic reformatting of code can cause changes to whitespace – this can be interpreted as changes to the source code. This means that:
- opening a scripted object in the Edit window can cause the source of that object to change (when closing an Edit window, you might be prompted to save a function even though you have not made any changes to it).
- viewing an object can change its file timestamp; source code management systems can subsequently report changes due to the changed file timestamp.
- source code changes resulting from reformatting will be evident in the results of system functions such as ⎕ATX, ⎕SRC, ⎕CR, ⎕VR and ⎕NR.
Keyboard Tab
Allows customisation of the default keyboard mappings for APL glyphs. This is only relevant if a locale-specific keyboard has not been installed.
Note
To replace the keyboard with a locale-specific keyboard in the Session, or to enter Dyalog glyphs in other applications (for example, email), see Dyalog's APL Fonts and Keyboards page.
Microsoft Windows
If you have the Dyalog Unicode IME installed, then the Ride activates it at start-up when the Also enable Dyalog IME (requires Ride restart) checkbox is selected (selected by default).
If Dyalog is not installed on the machine that the Ride is running on, then the Dyalog Unicode IME can be downloaded and installed from Dyalog's APL Fonts and Keyboards page.
Linux
Most Linux distributions released after mid-2012 support Dyalog glyphs by default, for example, openSUSE 12.2, Ubuntu 12.10 and Fedora 17. For more information, see the Dyalog for UNIX Installation and Configuration Guide.
To customise the default keyboard's Prefix key
- Open the Keyboard tab and select the appropriate keyboard from the drop down list of options.
-
In the Prefix key field, enter the new prefix key (by default this is
`
).Note: in locales where
`
is a dead key,$
is a viable alternative.Be careful when selecting a new prefix key - although there are no restrictions, choosing certain keys (for example, alphanumeric characters) would restrict the information that could be entered in a Session.
-
Click OK to save your changes and close the Preferences dialog box, Apply to save your changes without closing the Preferences dialog box or Cancel to close the Preferences dialog box without saving your changes.
To customise the default keyboard's key mappings
- Open the Keyboard tab and select the appropriate keyboard from the drop down list of options.
- In the image of a keyboard, click on the glyph to be replaced (bottom right of the key for unshifted mode and top right of the key for shifted mode).
- Enter the glyph to replace the selected glyph with.
- Repeat steps 2 and 3 until the key mappings are as required.
- Click OK to save your changes and close the Preferences dialog box, Apply to save your changes without closing the Preferences dialog box or Cancel to close the Preferences dialog box without saving your changes.
Your selection of keyboard key mappings is unrestricted – you can choose to map the same glyph to multiple keys or have glyphs that are not represented on the keyboard at all. For example, when dealing with dfns on a Danish keyboard, it might be convenient to map {
and }
to a simpler key combination.
Shortcuts Tab
Allows customisation of the keyboard shortcuts for command codes. Multiple shortcuts can be defined for any command code, but each shortcut must be unique.
To change the keyboard shortcut for a command code
- Open the Shortcuts tab.
- Locate the command code for which you want to define a new keyboard shortcut. This can be done by scrolling through the list of possible command codes or by entering a string in the Search field. If a string is entered in the Search field then a dynamic search of both the command codes and descriptions is performed.
- Optionally, delete any existing shortcuts for the command by clicking the red cross to the right of the shortcut.
-
Optionally, add a new shortcut. To do this:
-
Click the plus symbol that appears to the right of any existing shortcuts when the shortcut is moused over.
A field in which to enter the shortcut is displayed.
-
In this field, enter the keystrokes to map to this action. The field closes when the keystrokes have been entered and the new shortcut is displayed on the Shortcuts tab.
If the keystrokes that you enter are already used for a different command code, then both occurrences will be highlighted and you should remove any duplicate entries (an error message will be displayed if you attempt to apply/save settings that contain duplicate entries).
-
The tooltip showing keyboard shortcuts for command codes (obtained by positioning the cursor over the button on the right hand side of the Language bar) is dynamically updated to any customisation.
Style Tab
Allows customisation of the syntax colouring. Several schemes are provided, any of which can be used as they are or further customised.
To change the syntax colouring to a predefined scheme
- Open the Style tab.
- In the Scheme field, select the syntax colouring scheme that you want to use. When a scheme is selected, the example shown is updated to use that colour scheme.
- Click OK to save your changes and close the Preferences dialog box, Apply to save your changes without closing the Preferences dialog box or Cancel to close the Preferences dialog box without saving your changes.
To define a new syntax colouring scheme
- Open the Style tab.
- In the Scheme field, select the syntax colouring scheme that is closest to the scheme that you want to define. When a scheme is selected, the example shown is updated to use that colour scheme.
-
Click Clone & Edit.
A copy is made of the selected scheme and additional options are displayed to allow customisation of the scheme's name and syntax colouring.
-
Define your colour scheme. To do this:
- Select the element that you would like to change the display of from the drop-down list or by clicking in the example. The customisation options reflect the current settings for the selection made. Some elements have a limited set of options, for example, the cursor element has no bold/italic/underline option.
- Select a foreground colour and background (highlighting) colour for that syntax as required. If a background colour is selected, then the slide bar can be used to set its transparency.
- Select the appropriate check boxes to make that syntax bold, italic or underlined as required.
- Repeat as required.
-
Optionally, rename your colour scheme. To do this:
-
Click Rename.
The name in the Scheme field becomes editable.
-
Edit the name in the Scheme field.
- Click OK to save your changes and close the Preferences dialog box, Apply to save your changes without closing the Preferences dialog box or Cancel to close the Preferences dialog box without saving your changes.
-
Title Tab
Allows customisation of the caption at the top of the Session.
To change the caption
- Open the Title tab.
- In the Window title field, enter the new name for the Session. Some variable options that can be included are listed beneath this field – clicking on these inserts them into the Window title field.
- Click OK to save your changes and close the Preferences dialog box, Apply to save your changes without closing the Preferences dialog box or Cancel to close the Preferences dialog box without saving your changes.
The default value is {CAPTION}
, which is the same as {WSID}
by default.
Changing this to {WSID} – {HOST}:{PORT} (PID: {PID})
gives a different result on every machine. For example:
/Users/nick/myws.dws – 127.0.0.1:4502 (PID: 293)
Changing this to {CHARS} {BITS}
gives information that could be the same on multiple machines. For example:
Unicode 64
Menu Tab
Allows customisation of the menu options in the menu bar.
Warning
Great care should be taken when customising the menu options; although the ability to make changes is provided, it is not an activity that Dyalog Ltd supports.
If menu options are customised, then updates to menu items are ignored when updating the installed version of Ride (this can be avoided by resetting the menu options before upgrading Ride).
Top-level options (menu names in the menu bar) can be:
- created
- renamed
- reordered
- deleted
Options within each of the menus can be:
- moved to be under a different menu name in the menu bar
- reordered under the same menu name in the menu bar
- renamed
- deleted
Changes do not take effect until the next time a Dyalog Session is started through the Ride.
Trace/Edit Tab
Allows customisation of the size and position of floating Trace/Edit windows.
To change the size/position of floating Trace/Edit windows
- Open the Trace/Edit tab.
-
Select the appropriate check boxes and set the variables as required:
-
Double click to edit
Select this to open the Edit window when double-clicking within a word rather than selecting/highlighting the whole word.
-
Show toolbar in editor/trace windows
Select this to display the toolbar in the Trace/Edit windows.
-
Floating windows
Toggles whether new Edit and Trace windows are docked inside the Session or floating (undocked). The remaining fields on this tab are only relevant if windows are floating, that is, this option is selected.
-
Include filename in editor title
Select this to include an object's associated filename in the caption at the top of the Edit window.
-
Single floating window
Select this to display a single floating window with multiple tabs for different Trace/Edit windows. If this option is not selected, then multiple floating windows are displayed for individual Trace/Edit windows.
-
Remember previous window position
Select this to open new floating windows in the positions that were occupied by previously-opened windows when they were closed. The location of the first floating window opened persists between sessions.
-
Size width and height
Specifies the width and height of new Trace/Edit windows.
-
Posn x and y
Specifies the x-y co-ordinates of the screen position for the top left corner of the first Trace/Edit window opened.
-
Offset x and y
Specifies the x-y offsets for the top left corner of Trace/Edit windows opened relative to the previously-opened window. Only relevant if Single floating window is not selected.
-
Indent content when an editor is opened
Select this to apply the indentation rules to the contents of an Edit window when it is opened.
-
Handle formatting through the interpreter
Select this to use the interpreter to reformat code. This is useful to avoid formatting changes that could be detected by source code management systems when the Ride is used to maintain a body of code that is also edited directly using the interpreter.
-
Auto-indent
<number>
spacesOnly relevant when Handle formatting through the interpreter is not selected. Select this and define the number of spaces by which each level of nested code should be indented relative to the previous level of indentation in the Edit window. If not selected, code in the Edit window will be left justified.
-
in methods:
<number>
spacesOnly relevant when Handle formatting through the interpreter is not selected. Select this and define the number of spaces by which the contents of tradfns should be indented relative to the start/end
∇
glyphs.
-
-
Indent lines that contain only a comment
Only relevant when Handle formatting through the interpreter is not selected. Select this to apply the appropriate indentation to lines that start with the
⍝
glyph. If this is not selected, then lines that start with the⍝
glyph remain as positioned by the user. -
Saved Responses
Allows saved option selections to be deleted.
When using Link, options selected in dialog boxes are recorded in this tab. For example, saving file content opens a dialog box that offers options of fixing as code in the workspace, saving the file to disk, or discarding changes; the selected option for this file (or, optionally, all files with the same file extension) is recorded in this tab.
To delete a previously-saved option selection for a file
- Open the Saved Responses tab.
- Select the file for which you want to delete the saved option.
- Click Delete.
- Click OK to save your changes and close the Preferences dialog box, Apply to save your changes without closing the Preferences dialog box or Cancel to close the Preferences dialog box without saving your changes.
-
-
Click OK to save your changes and close the Preferences dialog box, Apply to save your changes without closing the Preferences dialog box or Cancel to close the Preferences dialog box without saving your changes.
Configuration Parameters
Some customisation can be performed using configuration parameters outside a Session. For details of other configuration parameters that can be set, and the syntax used to set them, see the Dyalog for
Warning
Changes made to configuration parameters in the dyalog.config file only impact local interpreters (that is, interpreters that are configured by that file) and do not impact interpreters that the Ride can connect with on other machines.
Keyboard Shortcuts
The Dyalog keyboard shortcuts that are supported by the Ride are listed below; those that can be configured in the Shortcuts tab of the Preferences dialog box are indicated with a * character.
Code | Command | Default Keystrokes | Description |
---|---|---|---|
ABT* | About | Shift + F1 | Display the About dialog box |
AC* | Align comments | Edit : Align comments to current column | |
AO* | Comment out lines | Session/Edit : Add comment symbol at start of each tagged or current line | |
BH* | Run to exit (in tracer) | Trace : Continue execution from the current line to completion of the current function or operator. If successful, the selection advances to the next line of the calling function (if there is one). | |
BK* | Backward or Undo | Ctrl + Shift + Backspace | Session : Show previous line in input history Edit : Undo last change (where possible) Trace : Skip back one line |
BP* | Toggle breakpoint | Trace/Edit : Toggle a breakpoint on the current line | |
BT* | Back Tab between windows | Ctrl + Shift + Tab | Move to previous window in loop |
CAM* | Clear all trace/ stop/monitor | Remove any trace/stop/monitor flags (as set by ⎕TRACE , ⎕STOP and ⎕MONITOR ) from all functions in the workspace |
|
CAW* | Close all windows | Close all open Edit and Trace windows | |
CBP* | Clear stops for active object | Edit / Trace : Clear all breakpoints (resets ⎕STOP ) on the function(s). |
|
CNC* | Connect | Display the New Session screen | |
CP | Copy | Linux: Ctrl + C macOS: ⌘ + C Windows: Ctrl + C | Session / Edit : Copy highlighted block of text to the clipboard |
CT | Cut | Linux: Ctrl + X macOS: ⌘ + X Windows: Ctrl + X | Session / Edit : Delete highlighted block of text and place it on the clipboard |
DB | Backspace | Backspace | Delete character to left of cursor |
DC | Down cursor | Down Arrow | Move cursor down one character |
DI | Delete item | Linux: Delete macOS: Fn + Backspace Windows: Delete | Delete character to right of cursor |
DK* | Delete lines | Delete | Session / Edit : Delete current line (or selected lines if selection exists) |
DL | Down limit | Linux: Ctrl + End macOS: ⌘ + Down Arrow Windows: Ctrl + End | Session : Move cursor to bottom right corner of Session log Edit : Move cursor to bottom right corner of content |
DMK* | Toggle key display mode | Functionality that could be useful when presenting demonstrations. Enables you to display your keystrokes and load/run a demo file. For more information on presenting demonstrations, enter ]Demo -? in a Session. |
|
DMN* | Next line in demo | ||
DMP* | Previous line in demo | ||
DMR* | Load demo file | ||
DO* | Uncomment lines | Session/Edit : Remove comment symbol that is first non space character on each tagged or current line | |
DS | Down screen | Linux: Page Down macOS: Fn + Down Arrow Windows: Page Down | Move cursor down one screen |
ED* | Edit | Shift + Enter | Session : Open an Edit window (if there is a suspended function on the stack, this opens an Edit window for that function – this is called Naked Edit) Edit (a class or namespace): Move the cursor to the definition of the name under or immediately before/after the cursor (also see |
EP* | Exit and save changes | Esc | Edit : Fix and Close Trace : Cut stack back to calling function; close all windows to match new stack status |
ER* | Execute line | Enter | Session : Execute current line/all modified lines Edit : Insert new line Trace : Execute current line |
EXP* | Expand Selection | Shift + Alt + Up Arrow | Successive presses of |
FD* | Forward or Redo | Ctrl + Shift + Enter | Session : Show next line in input history Edit : Reapply last change Trace : Skip current line |
FX* | Fix the current function | Edit : Fixes the function without closing the Edit window | |
HLP* | Help | F1 | Display the documentation for the system command, system name, control structure keyword or primitive glyph immediately to the left of the cursor |
HO | Home cursor | Linux: Ctrl + Home macOS: ⌘ + Up Arrow Windows: Ctrl + Home | Session : Move cursor to top left corner of Session log Edit : Move cursor to top left corner of content |
JBK* | Jump back | Ctrl + Shift + J | Edit (a class or namespace): move the cursor back to where the last double-click or Edit command (<ED> ) was issued in the current Edit window. Repeatable. |
JSC* | Show JavaScript Console | F12 | Display the JavaScript console. Only necessary if requested by Dyalog Ltd. when reporting an issue. |
LBR* | Toggle Language bar | Toggle display of the Language bar at the top of the Session window | |
LC | Left cursor | Left Arrow | Move cursor left one character |
LL | Left limit | Linux: Home macOS: Fn + Left Arrow Windows: Home | Move cursor to the first non-blank character on the current line. If already there, move cursor to start of line. |
LN* | Toggle line numbers | Turn line numbers on/off in all windows of the same type as the active window | |
LOG* | Show Ride protocol log | Ctrl + F12 | Display the Ride protocol log. Only necessary if requested by Dyalog Ltd when reporting an issue. |
MA* | Continue execution of all threads | Restart execution of any paused or suspended threads. For information on threads, see the Dyalog Programming Reference Guide . | |
NEW* | New Session | Ctrl + N | Starts a new Dyalog Session (a new instance of the interpreter) |
NX* | Next match | Edit / Trace : When performing a Search/Replace, locate first match after current one | |
PF1* | Function Key 1 | user-defined functionality | |
PF2 - PF10 | Function Keys 2 ‑ 10 | F2 - F10 | user-defined functionality |
PF11 - PF48 | Function Keys 11 ‑ 48 | user-defined functionality | |
PRF* | Show preferences | Display the Preferences dialog box | |
PT | Paste | Linux: Ctrl + V macOS: ⌘ + V Windows: Ctrl + V | Session / Edit : Paste the text contents of the clipboard at cursor |
PV* | Previous match | Edit / Trace : When performing a Search/Replace, locate first match before current one | |
QCP | Quick Command Palette | Expose the underlying (Monaco) editor command palette | |
QIT* | Quit Session | Ctrl + Q | Terminate the Dyalog Session |
QT* | Close window (and lose changes) | Shift + Esc | Session : Undo changes to a previously-entered expression that has not been re-executed and advance the cursor to the next line Edit : Close without saving changes |
RC | Right cursor | Right Arrow | Move cursor right one character |
RD* | Reformat | Edit : Formats function to have correct indentation and spacing between tokens | |
RL | Right limit | Linux: End macOS: Fn + Right Arrow Windows: End | Move cursor to the last non-blank character on the current line. If already there, move to end of line. |
RP* | Replace string | Edit : Replace. To do this, enter <RP> and type the string to replace the current search string with (see <SC> ); enter <ER> to make the change. Enter <EP> to clear the field. |
|
SA* | Select all | Linux: Ctrl + A macOS: ⌘ + A Windows: Ctrl + A | Select all text in the active window |
SBR* | Toggle Status bar | Toggle display of the Status bar at the bottom of the Session window and floating Edit / Trace windows. | |
SC* | Search | Ctrl + F | Edit / Trace : Search. To do this, enter <SC> , type the string to search for and then enter <ER> to find the first occurrence of the string. Enter <EP> to clear the field. Also see related <NX> , <PV> and <RP> . |
SI* | Strong interrupt | Suspend code execution as soon as possible (generally after completing execution of the primitive currently being processed) | |
STL* | Skip to line | Trace : Move the current execution marker to the line on which the cursor is positioned | |
TB* | Tab between windows | Ctrl + Tab | Move to next window in loop |
TC* | Trace line | Ctrl + Enter | Session : If entered directly after an expression, open a Trace window for that expression (explicit trace). If there is a suspended function on the execution stack, open a Trace window for that function (naked trace). |
TGC* | Toggle comment | Session/Edit : Toggle a comment glyph at the start of the line in which the cursor is located | |
TIP* | Show value tips | For the name or glyph under or immediately before the cursor, highlight that name/glyph and display: for a name: its referent (for example, the value of a variable or the code of a function) for a glyph: the name of the glyph, the keyboard shortcut to enter it, its name and examples of its syntax, arguments and result | |
TL* | Toggle localisation | Ctrl + Up Arrow | Edit : For tradfns, the name under the cursor is added to or removed from the list of localised names on the function's header line |
TO* | Toggle fold | Edit : Open/Close outlined blocks (by default, outlines are shown) | |
TVB* | Toggle view steps | Trace/Edit : Toggle display of an additional column at the left-hand side of the window in which break-points can be set/unset. Hiding this column does not remove any previously-set break points. | |
TVO* | Toggle view outline | Edit : Toggle code folding/outlining for control structures (including :Section structures) and functions. When toggled, existing code in an open Edit window is automatically updated to reflect the new rules. |
|
TFR* | Refresh threads | Debug information window: Forces a refresh of the Threads area | |
UC | Up cursor | Up Arrow | Move cursor up one character |
UL | Up limit | Linux: Ctrl + Home macOS: ⌘ + Up Arrow Windows: Ctrl + Home | Session : Move cursor to top left corner of Session log Edit : Move cursor to top left corner of content |
US | Up screen | Linux: Page Up macOS: Fn + Up Arrow Windows: Page Up | Move cursor up one screen |
VAL* | Evaluate selection or name | Edit : Evaluate the selected expression or name and display the result in the Session window. | |
WI* | Weak interrupt | Ctrl + PauseBreak | Suspend code execution at the start of the next line (generally after completing execution of the statement currently being processed) |
WSE* | Toggle Workspace Explorer | Toggle display of the workspace explorer to the left of the Session window | |
ZM* | Toggle maximise Edit window | Toggle active Edit window between current size and full Session size | |
ZMI* | Increase font size | Ctrl + = or Ctrl + Shift + = | Increase the size of the font in all the windows |
ZMO* | Decrease font size | Ctrl + - | Decrease the size of the font in all the windows |
ZMR* | Reset font size | Ctrl + 0 | Reset the size of the font in all the windows to its default value |
Sample Configuration File
A .ini configuration file can be used to define settings for the RIDE_INIT
configuration parameter.
Examples of the fields that you might want to include within the .ini configuration file are:
[RIDE]
Direction=Listen
Address=
Port=5002
MaxBlockSize=52428800
SSLValidation=0
Protocol=IPv4
Secure=Secure
PublicCertFile= C:\apps\d150U64\TCerts\server\localhost-cert.pem
PrivateKeyFile= C:\apps\d150U64\TCerts\server\localhost-key.pem
RootCertDir= C:\apps\d150U64\TCertss\ca
Priority=
AcceptCertDir= C:\apps\d150U64\TCerts\accept
where:
Direction
,Address
andPort
– as defined for the RIDE_INIT configuration parameter.Direction
in the .ini file is equivalent tomode
in the RIDE_INIT configuration parameter and has possible values ofListen
(equivalent to RIDE_INIT'sServe
),Connect
,Poll
andHTTP
. No defaults are defined forDirection
andAddress
; the default forPort
is4502
. Overridden if defined in RIDE_INIT.MaxBlockSize
is the maximum size (in bytes) allocated to the buffer that receives data transmissions. The default is 16,777,216.SSLValidation
is the sum of the relevant TLS flags (see Section ). The default is0
. Validity depends on the value of theSecure
field.Protocol
is the communication protocol to use. Possible values are:IPv4
: use the IPv4 connection protocol; if this is not possible then generate an error.IPv6
: use the IPv6 connection protocol; if this is not possible then generate an error.: use the IPv6 connection protocol; if this is not possible then use the IPv4 connection protocol. This is the default. IPv4
: use the IPv4 connection protocol; if this is not possible then generate an error.IPv6
: use the IPv6 connection protocol; if this is not possible then generate an error.: use the IPv6 connection protocol; if this is not possible then use the IPv4 connection protocol. This is the default. Secure
specifies the security of the connection. Possible values depend on the value ofDirection
:IfDirection
isListen
, thenSecure
can be:Secure
– the connection is secure and certificates are provided. ThePublicCertFile
,PrivateKeyFile
,SSLValidation
andPriority
fields are valid.– the connection is unencrypted. This is the default.If Direction
isConnect
orPoll
, thenSecure
can be:Secure
– the connection is secure and certificates are provided. ThePublicCertFile
,PrivateKeyFile
,SSLValidation
andPriority
fields are valid.– the connection is unencrypted. This is the default. Anonymous
– the connection is secure but no certificate is provided on the client side. TheSSLValidation
andPriority fields
are valid.- If
Direction
isListen
, thenSecure
can be:Secure
– the connection is secure and certificates are provided. ThePublicCertFile
,PrivateKeyFile
,SSLValidation
andPriority
fields are valid.– the connection is unencrypted. This is the default. Secure
– the connection is secure and certificates are provided. ThePublicCertFile
,PrivateKeyFile
,SSLValidation
andPriority
fields are valid.– the connection is unencrypted. This is the default. - If
Direction
isConnect
orPoll
, thenSecure
can be:Secure
– the connection is secure and certificates are provided. ThePublicCertFile
,PrivateKeyFile
,SSLValidation
andPriority
fields are valid.– the connection is unencrypted. This is the default. Anonymous
– the connection is secure but no certificate is provided on the client side. TheSSLValidation
andPriority fields
are valid. Secure
– the connection is secure and certificates are provided. ThePublicCertFile
,PrivateKeyFile
,SSLValidation
andPriority
fields are valid.– the connection is unencrypted. This is the default. Anonymous
– the connection is secure but no certificate is provided on the client side. TheSSLValidation
andPriority fields
are valid.PublicCertFile
is the fully-qualified path to, and name of, the file containing the public certificate. Empty by default. Validity depends on the value of theSecure
field.PrivateKeyFile
is the fully-qualified path to, and name of, the file containing the private key. Empty by default. Validity depends on the value of theSecure
field.RootCertDir
is the full path to (and name of) the directory that contains Certificate Authority root certificates. Empty by default (on the Microsoft Windows operating system, Ride uses the Microsoft certicate store).Priority
is the GnuTLS priority string (for complete documentation of this, see http://www.gnutls.org/manual/gnutls.html#Priority-Strings). Empty by default. Validity depends on the value of theSecure
field.AcceptCertDir
is the full path to (and name of) the directory that contains the public certificates of all users that are allowed to connect. Empty by default.
Two additional sections can be included within the .ini configuration file to control the IP addresses that are allowed or denied access to the connection. These are:
[AllowEndPoints]
[DenyEndPoints]
For each of these, IPv6/IPv4 addresses and/or address ranges can be specified (multiple entries must be separated by commas). For example:
[AllowEndPoints]
IPV4=192.168.100.0/24,192.168.17.0/24,127.0.0.0/10
IPV6= fe80:ccbd:aa34:3cfb::0/64
[DenyEndPoints]
IPV4=212.0.0.0/8
IPV6= 2a02:2658:1012::35/64
If AllowEndPoints
is not included, all IP addresses are allowed to access the connection unless explicitly denied access with the DenyEndPoints
field.
TLS Flags
TLS flags are employed as part of the certificate checking process; they determine whether a secure client or server can connect with a peer that does not have a valid certificate. When Direction
is Connect
or Poll
, Ride acts as a server; when Direction
is Serve
, Ride acts as a client.
The code numbers of the TLS flags described below can be added together and passed to the SSLValidation
field to control the certificate checking process. If you do not require any of these flags, then the SSLValidation
field should be set to 0
.
Code | Name | Description |
---|---|---|
1 | CertAcceptIfIssuerUnknown | Accept the peer certificate even if the issuer (root certificate) cannot be found. |
2 | CertAcceptIfSignerNotCA | Accept the peer certificate even if it has been signed by a certificate not in the trusted root certificates' directory. |
4 | CertAcceptIfNotActivated | Accept the peer certificate even if it is not yet valid (according to its valid from information). |
8 | CertAcceptIfExpired | Accept the peer certificate even if it has expired (according to its valid to information). |
16 | CertAcceptIfIncorrectHostName | Accept the peer certificate even if its hostname does not match the one it was trying to connect to. |
32 | CertAcceptWithoutValidating | Accept the peer certificate without checking it (useful if the certificate is to be checked manually). |
64 | RequestClientCertificate | Only valid when Ride is acting as a server; asks the client for a certificate but allows connections even if the client does not provide one. |
128 | RequireClientCertificate | Only valid when Ride is acting as a server; asks the client for a certificate and refuses the connection if a valid certificate (subject to any other flags) is not provided by the client. |
TLS flags have the same meaning irrespective of whether Ride is acting as a server or a client. However, for a server they are applied each time a new connection is established whereas for a client they are only applied when the client object is created.