Patrick AMAR
Bioinfo group, LISN, Univ. Paris Saclay, UMR 9015 CNRS
Synthetic & Systems Biology group, Sys2diag UMR 9005 CNRS, ALCEDIAG
History |
FLWiX is a keyboard (and to a lesser extent a mouse) oriented text editor. It works the same way under the three main operating systems: Linux, Mac OS X and Windows.
FLWiX the successor of the Unix / X Window System text editor WiX, it uses the FLTK graphical interface toolkit and is written in C++ (the original WiX text editor was written in C).
Download FLWiX |
Windows Version (April 7, 2024) |
Linux Version (April 7, 2024) |
Mac OSX (Intel, High Sierra) Version (April 7, 2024) |
Mac OSX (Intel, Catalina) Version (April 7, 2024) |
Mac OSX (ARM, Big Sur) Version (January 4, 2024) |
Download dictionaries:
FLWiX Documentation |
1. Overview
1.0. Quick start
To launch FLWiX from the command line, the easiest way is to type "flwx
file-to-edit" (without the quotes). This will run the flwx
daemon in the background, and open a window containing "file-to-edit".
If no file to edit is provided (or if it does not exist) an empty window will be opened.
From any FLWiX window, this on-line documentation can be displayed by typing esc-esc (hit the Escape key twice)
1.1. Anatomy of the editing window
Line numbers can be displayed on the left side of the window. This is
controlled by a configuration option and/or using the command
toggle-line-numbers bound by default to the key ^X^L.
On the bottom left side of the window, 6 icons show the current state
of the editing window.
They can be used to alternate respectively
between:
Dictionaries for six languages are provided with the FLWiX
package:
English ,
French ,
German ,
Italian ,
Portugese and
Spanish .
On the bottom right side of the window the name of the current editing mode is displayed. A left mouse button click pops the list of all the editing modes allowing the user to switch to another one. A right mouse button click pops the current mode wall-chart, the list of all the commands and their bindings in the current mode.
On the right side of the window, a scroll lift is permanently displayed (or automatically displayed, when the mouse pointer goes near the right side of the window). The size of the lift represents the visible part of the buffer, while its position represents the location of the window in the buffer. Configuration options control how the scroll lift is displayed and what colours are used.
The text editing cursor is displayed as a steady block containing the current character in reverse video. Standard characters are self-inserting in the buffer while the editing commands are called using combinations of special keys (Escape and Control mainly) or dedicated keys (arrows, PgUp, PgDown, ...).
Any portion of the edited text can be selected using mouse or keyboard
commands. The selection is shown inside a polygon made of up to three
rectangles. The selection background and border colours are controlled by
configuration options.
The selected text is stored into the PRIMARY_SELECTION (X
cut buffer) on Linux and into the clipboard on MacOS X and Windows.
In the next sections of this manual command Keys will be used from time to time to show examples of commands. A key is a combination of one or more keyboard key, with or without modifiers (Shift or Ctrl). The syntax used to write a key is the same as used in the keytable: mode configuration switch:
When launched with the -daemon command line option, flwx
is run as a server program that makes the different editing windows
communicate (via clipboard, kill-stack, ...); It cannot be launched
more than once per user.
Otherwise, flwx asks the server instance to edit files. If
flwx detects that there is no server running, a new one is
automatically launched.
The user configuration file, ~/.flwxrc, located in the user home directory, is automatically created the first time FLWiX is launched. This default configuration file sets the main, alternate and personal dictionaries to the names:
~/.fr_dict.gz, ~/.en_dict.gz, ~/.user_dictrespectively.
Any of the six provided dictionaries can be used for the main and alternate languages. These dictionaries can be gzipped (the default for languages) or not (the default for the personal dictionary).
The Configuration file chapter shows how it can be modified to fit the user preferences.
1.4. Command line options
flwx can be started in server mode or in client mode. Each mode has
its own options, but silently ignore those of the other mode.
When first launched, flwx detects if there is a server
instance of itself currently running. If not, flwx run as a server
program that makes the editing windows communicate (via clipboard,
kill-stack, ...); It cannot be launched in server mode more than once per user
(unless with the
-debug option).
Otherwise, when a server instance is running already,
flwx run in
client mode and asks the server to edit files.
Synopsis: flwx [options] [file-1 ...
file-N]
Regardless the mode, the file-1 ... file-N files (they must appear after the
last option) are loaded as tabs in one window.
Shared options
When no position is given, and if there is no <previous
position associated to the edited files, if the near_pointer is set, the new window is placed near
the mouse pointer, otherwise it is the system window manager
that sets the window location
1.5. Mouse usage and dialog boxes
Although a text editor, and especially FLWiX, is a keyboard oriented software,
many commands can also be triggered using the mouse. Even when it is obviously
easier with the mouse, everything can be done using the keyboard only!
If the icon is dragged outside the window, its background colour
is changed to light blue if it is on the root window (or any other
application window) or is changed to light yellow on any flwx
window. When dropped on a flwx window the tab is moved to this
window, otherwise it is moved to a newly created window.
The current tab, even when it is the only one in the window, can
be dragged the same way with a left-drag along with the modifiers
specified by the drag_tab_modifiers parameter.
The follow_mouse configuration switch controls
wether or not the text cursor follows the movements of the mouse
pointer.
In addition, for the file selector, the slash (and back-slash in
Windows) and the tabulation characters open the directory named by the
prefix (if it is a directory and if it is readable of course). When
the file selector is used to create or overwrite a file, the automatic
confirmation is disabled, only the Return key validates the dialog. In
the file list, the directories are written in blue, the executable
files in red and the other file types in black.
Of course, the native file selector (the standard one of the
operating system) can be used instead of the built-in one. The user
can choose which one with the configuration flag use_native_fsel.
There are two lists that does not have a text field associated: the special characters list and the emoji list. The only way to select something in
these lists is to left-click on it.
At startup, the flwx server try to load the user configuration file
~/.flwrc; If it cannot be found, a default one is written (if the
access rights are granted). This file contains two classes of specifications:
The global form of the startup file is something like this:
So we can for example put the global parameter block 2 and mode 1
definition into the file ~/.mode_1 and the configuration file
become:
The predefined variables the boolean expressions operate on are:
The formal grammar of the configuration language is:
To ease the modifications of the default parameters, this
help window displays both the documentation and the parameter settings for
FLWiX: the dark red links
are setting links that allow the user to pop up a dialog box in order
to set or change the value of the associated parameter, modifying directly the
configuration file.
The mode parameter preference links first pop a menu
containing the name of the modes associated with the link parameter, and then the
change value dialog box. This allows the user to specify for which mode the
new value is to be set or changed.
For almost all the parameters, the new values are immediately taken into
account. Only a few need a restart of the FLWiX server, using for instance,
the restart-the-editor command, or by quitting
it and then relaunch it. They are:
A style is defined by a colour, a type of line and its thickness;
The syntax is:
defines the umask associated to a directory. The syntax is a
string containing a list of colon (:) separated directories where
saved files will have their access rights set according to the mask
specified by the octal number between parenthesis immediately
following the directory name.
when a window is closed, FLWiX saves data about the file being edited
along with the position and size of the window in a hidden file named
"._flwx_file_info" located in the user's home directory. The
info_path parameter is a string containing a list of colon
(:) separated directories where edited files will see their
informations retained for a number of days specified by the number
between parenthesis immediately following the directory name.
The algorithm used to determine the editing mode for a file works like this:
There are two ways to specify what style is associated to a
portion of text:
FLWiX handles up to 30 user-defined styles and up to 128
additional alias names for these plain styles. There is only one
built-in style, the StandardStyle, where the associated
colour is the global parameter foreground and the
associated font is the textfont
mode parameter (see below).
The name of a plain style (or an alias style) must be made of
letters, ending with the word "Style". Each style defines 4
associated configuration switches constructed with a prefix,
followed for 3 of them by "_colour", "_font", and "_submode".
The regular expressions used in this context are restricted to
intervals "[...]" including the negation "[^...]", the beginning "^"
and end "$" of line, the "+" for one or more and "*" for zero or more
occurrences of the previous character. The pattern matched is the
shortest, rather than the longest as in standard regular expressions.
To avoid repetitions, or errors using cut
& paste, in programming language modes that share keywords, such
as C, C++, CUDA and JAVA for instance, global variables can be used to
store keyword - style associations. For example, the
c-keywords defined by:
To help the definition of the FLWX mode, used to edit the
configuration file, some specific built-in names refer to
internal lists. They are used to assign a style to a group of
names. For example, to assign the CommandStyle to all
the command names, this line can be used in the
keywords value:
This restricted regular expression describes the syntax of the
file inclusion directive used in this mode. As in the magic mode parameter, multiple regular expressions
can be searched, each one separated by the character
| (vertical bar).
associates the name "font name" to the "user_font_1" font descriptor.
The default value refers to the fixed spaced FLTK standard font
(Courier) which can be system specific. For example:
adds a positive or negative vertical offset to the corresponding user
font. Using the previous example:
Fundamental
C
C++
CUDA
For each command, its name is first displayed, then the list of the keys bound to it in the Fundamental mode, then, if this command is not bound in the Fundamental mode, the name of the first mode where the command is bound to these keys.
3.1 Moves
when a single quote is typed after the letter "e", it is replaced by the accented letter "é", and if a second quote is typed, the "é" is replaced back by "e". This is useful for typing accented letters with a standard UK or US keyboard.
when a single quote is typed after "touche", it is replaced by "touché" or if the quote is typed after "ete", it is replaced by "été".
If called with the awm argument, when the window is in auto-wrap mode, the command tries to widen the window to show the most of the folded lines.
If the window is already splitted, then the lower pane is removed.
Some options are shared by the server and client modes:
Server mode options
Uses an alternate port number for the connection
between the client and the server. This is mainly used for debug
purposes.
displays on stderr the name and the value of all
the variables. When used alone, this option does not create a server
or client instance of FLWiX. Here is an example of the output:
FLWiX Version: 2203.27
OS = Linux
OSTYPE = Linux
SYSTEM = Linux
USER = pa
LOGIN = pa
USERNAME = pa
CHARSET = ISO-8859-1
LANG = en
ROOT = false
ADMIN = false
HOSTNAME = orion.lri.fr
ALT_DISPLAY = false
SCREEN_RESOLUTION = 103
SCREEN_COUNT = 1
SCREEN_WIDTH_IN = 37
SCREEN_HEIGHT_IN = 21
SCREEN_WIDTH = 3840
SCREEN_HEIGHT = 2160
displays the list of the previously edited files
along with the time elapsed since each file has been edited (-I
reverses the order). This is related to the info_path global parameter.
loads each file into a tab of the window, then waits until this
window is closed, i.e. when all the tabs are closed, or the window is
explicitly closed using the close button of window top banner. This is
used to hide the client-server implementation to some applications
that allow the user to use an external text editor.
Client mode options
Starts flwx in server mode explicitly.
the command waits until the server terminate.
This is mainly used for debug purposes.
does not show the splash screen
does not reopen the windows opened in the last
session
uses the built-in configuration (does
not try to load the ~/.flwxrc file). This useful
when there is some error in the ~/.flwxrc file that prevents the
server to run...
set the ALT_DISPLAY variable to
true. This is useful to select one colour set for a screen
display and an other one for a video projector.
sets the size and position of the window
creation icon on the screen (defaults
32x32+0+0, the top left corner)
does not display the window creation icon
(see also the boolean configuration switch show_launch_icon)
set the default font size used in the windows
(see the Font sizes parameters).
sets the window size to the specified number on columns and lines, and
put the window at screen coordinates (xpos, ypos). Negative xpos or
ypos means xpos (resp. ypos) pixels from the right (resp. bottom) side
of the screen
force the created window to use the Fundamental mode
regardless the type of the loaded files. This behaviour remains even
when some other file is loaded, unless the toggle-auto-mode command is used.
terminate the flwx instance currently
running as server, and then exits itself.
2. The configuration file
A left-click on the mouse places the
text cursor on the character under the mouse pointer. When the mouse
pointer is on the line numbers, the cursor is moved to the beginning
of the line.
If a text was previously selected, (highlighted) it is then
redisplayed on the standard background colour (non highlighted).
When the button is released, the text cursor is placed at the
end of the selection (near the mouse pointer) and the selection is
committed (i.e.: the selected text is transferred to the
clipboard or the X-Windows cut-buffer on Linux, and
can be pasted in FLWiX and other applications.
A middle-click inserts the contents of the clipboard (or
cut buffer on Linux) where the text cursor is.
Just after a selection is made, the selected text can be cut
using the BackSpace or Delete key.
When a portion of text is already selected (therefore
highlighted) a right-click extends the selection up to the
character under the pointer. If the pointer is before the
selection, the beginning of the selection is moved; Conversely,
if the pointer is after the selection, the end of the selection
is moved.
If the pointer is inside the selection, the
selection remains unchanged.
When there is no selection (no text is highlighted) a right-drag
grabs the text and scrolls it vertically and/or laterally,
in such a way that the mouse pointer remains over the same
character in the buffer.
If the lift_always_visible configuration flag is set
to true, a scroll lift is permanently (or not if set to
false) displayed on the right side of the window. When the
user moves the mouse (without any button pressed) towards the right
side of the window, the lift appears more and more brightly (if
lift_always_visible is false).
When moving the pointer nearer the right side of the window, the
lift colour goes from red (lift_colour) to green (active_lift_colour) indicating that a left button press
will be able to action the lift.
If now the user press the left mouse button the lift colour goes
from green to purple (lift_motion_colour) and a mouse
drag will scroll the text up to the full extent of the buffer.
The mouse wheel (or track pad on laptops) allows the user to scroll
the text vertically (or laterally with the Shift modifier)
slowly or quickly (with the Ctrl modifier). The scroll speed
is controlled by the wheel_acceleration
configuration parameter.
When the mouse wheel stops turning, and after a short delay
(shape_timeout defaults to 800 ms) or immediately after
the mouse button is released when using the scroll lift, the
miniature display disappears.
FLWiX use smart lists to get
names: files, fonts, modes, emoji, special characters, ... These lists
are pulled down from the upper side of the window and use a
modal dialog type (the keyboard and mouse events are redirected
to the list until the dialog is finished). A list is made of two
components, the list itself and a text field that will ultimately
contain the desired name.
If the content of a list is too long, it can be scrolled with the
mouse wheel or with keyboard commands (arrows, PgUp, PgDown, Home,
End, ...) or using the mouse in the lift of the scrollbar displayed on
the right side of the list.
The colour selector is used in the FLWX
mode (the mode used to edit the configuration file) to enter a colour
specification (#rrggbb) as a value for a parameter. The colour
selector can show one or two panels. The left one is for the screen
colour parameter, while the right one is mainly for pdf output
corresponding colour. For the selection and highlight colours, the
right panel selects the border colour.
2.1 Overview
Of course, line comments can be placed anywhere in the file. A line comment is
simply a line that begins with a # (sharp sign).
# first parameter block
To keep things clear and simple, it is possible to include a file
(with the include directive). This directive cannot be used
inside a mode definition, but can be nested (an included file can
include an other one).
global parameter block 1
global parameter block 2
# the famous Mode 1
mode 1 definition
mode 2 definition
global parameter block 3
# Another comment
mode 3 definition
# first parameter block
Conditional expressions on built-in or system specific
variables can be used to parametrise global and mode specifications. Let's see
first the syntax of the if directive, the boolean expressions, and the
variables they can use. The syntax is derived from the C language:
global parameter block 1
# Mode 1 and parameter block 2 are stored in ~/.mode_1
include ~/.mode_1
mode 2 definition
global parameter block 3
# Another comment
mode 3 definition
if (<boolean expression>) {
statement
statement
statement
} else {
statement
statement
}
The if directive can be used at global level, as well as inside the
definition of a mode, but NOT straddling a defmode
directive. The else part can be omitted.
There are also predefined constants:
Of course the if / else directives can be nested.
# --------------------------------------------------
If the if (or else) clause contains only one statement
the curly braces can be omitted:
# On Windows
if (OS == Windows) {
Windows parameter block
# With administrator privileges
if (ADMIN) {
more
parameters when administrator on Windows
}
}
# On Linux or MacOSX
else {
Linux or MacOSX parameter block
}
global parameter block 2
# --------------------------------------------------
if (OS == Windows) switch = value
FLWXRC ::= LINST
// statement list
LINST ::= INST
| INST LINST
// single statement
INST ::= <param> '=' <value> // outside a mode definition
| <param> ':' <value> // inside a mode definition
| IF // everywhere
| SET // outside a mode definition
| DEFMODE // outside a mode definition
| DEFCMD // outside a mode definition
| INCLUDE // outside a mode definition
// variable assignation
SET ::= 'set' <name> '=' <value>
// contitional evaluation
IF ::= 'if' '(' BOOLEXP ')' BLOCK ELSE
// boolean expression
BOOLEXP ::= VAR RELOP VAR
| VAR
| '!' BOOLEXP
| '(' BOOLEXP ')'
| BOOLEXP '||' BOOLEXP
| BOOLEXP '&&' BOOLEXP
RELOP ::= '==' | '!=' | '<' | '<=' | '>' | '>='
VAR ::= <name> | <string> | <integer>
BLOCK ::= INST
| '{' LINST '}'
ELSE ::= 'else' BLOCK
| ø
// user command definition
DEFCMD ::= 'defcmd' <ident> '(' ')' '{' LCOMM '}'
LCOMM ::= COMM
| COMM LCOMM
COMM ::= <ident> '(' ARG ')' ';'
ARG ::= <string> | <integer> | ø
// mode definition
DEFMODE ::= 'defmode' <ident> INHRT '{' LINST '}'
INHRT ::= ':' <ident> | ø
// file inclusion
INCLUDE ::= 'include' <filename>
2.3 Global parameters
2.4 Mode specific parameters
The spell checker recognises words that are more or less
misspelled. Correct words are left unchanged and are not
underlined. Depending on the level of misspelling, four underline
styles can be specified.
xxx_colour = #rrggbb [<style> <thickness>]
where #rrggbb is a hex RGB colour specification (#0 meaning
transparent therefore ignored), style and thickness are not
mandatory. The thickness can range from 1 to 15 (default 1) and
the possible types of underlining are:
solid ___________ (default)
dash _ _ _ _ _ _
dot . . . . . .
dashdot _ . _ . _ .
dashdotdot _ . . _ . .
The four detected misspelling kind are reported using the
following underline styles:
The colour and style of underlining for words that are not
recognised at all by the spell checker in either the main or the
alternate languages.
the colour and style of underlining for words that contains
letters poorly accented but where only one valid accentuation exists.
In this case the word will be automatically corrected when a delimiter
(space, punctuation) will be inserted near the word. Typically, when
typing a sentence, the accents will statistically be automatically put
on the right letters.
the colour and style of underlining for words that contains
letters poorly accented and where many valid accentuation exists.
the colour and style of underlining for words that are misspelled
in the main language but correctly spelled in the alternate language.
This allows the user to mix the two languages in a text and still take
advantage of the spell checker.
the fix-spelling command, used to
correct the spelling of a word, displays a menu with alternative
possible spellings. When the word is correctly spelled but variants
exists only because of accented letters, this switch indicates wether
or not only these variants are displayed, or if the full search of
spellings must be performed.
controls whether the flwx launcher icon is displayed or not. On Windows the
launcher is always displayed.
sets the size and position of the flwx launcher icon on the
screen. The syntax is WxH+/-X+/-Y. When WxH is omitted, the size
defaults to 32x32.
The default position depends on the plateform: top left on Linux
and MacOS X, bottom right on Windows. The default size depends on the
screen resolution: 32x32 on low resolution, 48x48 on high resolution.
This is overridden by the -g command line option.
show (true) or hide (false) the tab bar when there is only one
tab.
if true, when a parameter value is changed, the configuration file
is shown in a read-only window. The cursor is placed on the line that
defines the modified parameter, with the new value.
if true, only a matching prefix of an alias is
necessary to expand the alias. Otherwise the whole alias must have
been typed to trigger the expansion. This does not apply to aliases
that contain a regular expression.
controls whether the system's standard file selector is used or
the built-in one with the quick flwx shortcuts.
indicates whether the search commands
(^S^S, ^S^R, ^S^F, ...) and replace command
(Esc-%) are case sensitive.
indicates whether the standard file selector is case sensitive
when loading a file. If set to false (the default), the
filename expansion occurs regardless the case of the characters typed.
controls wether all the occurrences or only the next pattern
found by a successful search command are highlighted.
when set to true and when the specified combination of
keyboard modifiers is pressed, the insertion cursor follows the
mouse pointer. The modifiers are set using the follow_mouse_modifiers parameter.
when set to true, selecting text also copy it into the
cut-buffer and the clipboard. Otherwise the selection is not
automatically copied.
when set to true, allows the edition of the same file
into more than one window or tab. The first occurrence only is in
read/write mode, all the others are in read only mode.
when set to true, the mouse pointer is warped inside the
window created by the flwx command. This window is then
raised and gets the keyboard focus.
when set to true, the window created by the
flwx command is placed near the mouse pointer, on the left
side of the terminal window (unless the location of this window has
been set in a previous editing session). The default value is true on
big screens (width > 3800 pixels) false otherwise.
this is the command to use to call a PDF viewer to display the
PDF output of the current buffer. The default value depends on the
operating system:
Preview on MacOSX, Evince on Linux
Acrobat on Windows.
the horizontal and vertical margins (in millimeters) surrounding
a PDF output page.
the size of the font used to convert the buffer to the PDF format.
when set to true, a rectangular frame is drawn around
each page of the PDF output.
when set to true, the page number is drawn in the middle
of bottom of each page of the PDF output.
the size of the newly created editing windows expressed in number
of columns and lines (computed using the default fixed width font: mono). The default values depends on the width of
the screen:
. 24x80 on small screens (width < 3800),
. 30x90 on medium screens (3800 ≤ width ≤ 5000),
. 40x95 on large screens (width > 5000).
the number of pixels to be added (horizontally and vertically) so
that the window manager can create a window that actually contains the
exact number of lines and of columns indicated by the -g
option of flwx (or by the parameters num_lines and
num_columns).
the offset (number of columns) added to the window size computed
by the adjust-window-size command.
the size of the font of the text. The default value depends on
the operating system and the standard installed fonts. It is 16 on
Window and 14 on Linux and MacOS X. The default value depends also on
the size / resolution of the screen.
the size of the font used in lists and selectors. The default
size is 12 for low resolution screens and 14 for high resolution
screens.
the size of the font used to display this HTML user manual. The
default value depends on the screen size and resolution (16 on low res
screens, to 18 on high res screens).
the size of the font used to display the labels of the tabs and
the text in the status bar (messages and mode name). The default value
is 14 for low res screens and 16 for high res screens.
the size of the font used in the text fields used in query boxes
and selectors (string search, load file, ...). The default value is 14
for low res screens and 16 for high res screens.
the background colour of the editing window.
the colour of the standard style text
in the editing window.
the background colour of the mono-line textfields (minibuffer).
The file, emoji and special characters popup list uses the value of
this colour to automatically display the text on a light or dark
background.
the colour of the text in the mono-line textfields.
the background colour of all the interface widgets, except main
text and text fields. On Windows the default value is #bad2ea (light blue) which match exactly the
standard window border colour (at least on Windows 7).
the background colour of all the interface widgets, when the
window does not have the keyboard focus. On Windows the default value
is #dbe8f3 (less light blue) which
match exactly the standard window border colour of inactive windows.
the foreground colour for all the interface widgets (buttons,
status line, ...)
the background colour of the active tab. The other tabs are
displayed using the inactive_gui_background
colour.
the colour of the triangle which is displayed at the end of the
lines that crosses the window boundary (long line).
the colour of the ¶ symbol which is displayed at the end of the
folded lines that would have crossed the window boundary (only when
long lines folding is enabled, see the mode specific auto_wrap flag)
colour of the question text in the yes/no dialog boxes.
the colour used to highlight the patterns found by the search commands.
the colour used to highlight the selected portion of text.
the colour used to highlight the default text value in
mono-line text fields. This is used for
example in the search commands to search again the previous
pattern.
the colour used to display the executable file names in the
standard file selector.
the colour used to display the directories names in the standard
file selector.
the colour used to display the plain file names in the standard
file selector.
the colour used to display the names of the files that match a
given suffix filter in the standard file selector.
controls wether the scroll lift is permanently visible (if true)
or progressively displayed (if false) when the mouse pointer
approaches the right side of the window.
the width in pixels of the scroll lift.
the colour of the scroll lift background. If set to #0, the
scroll lift has no background (i.e.: is transparent)
the colour of the (inactive) scroll lift.
the colour of the active scroll lift. When the mouse pointer is
near enough the right border of the window, this colour indicates that
a left-click will scroll one page of the text, or a left-drag inside
the lift will continuously scroll the text.
the colour of the in-motion scroll lift. As long as the scroll
lift is moved by a left-drag, it is displayed with this colour.
Specify the combination of keyboard modifiers that must be
pressed to activate the follow_mouse behaviour of
the insertion cursor. The possible values are: None,
Ctrl, Shift, Alt, Meta or
any combination of them separated by +.
Specify the combination of keyboard modifiers that must be
pressed to drag the current tab to another window, on to create a new
window with it. The possible values are: None,
Ctrl, Shift, Alt, Meta or
any combination of them separated by +.
Specify the combination of Ctrl and / or Shift keyboard modifiers
that must be pressed, while the Meta_L / Meta_M / Alt_L / Alt_R key is
pressed in order to pop the emoji selection
window. The default value is Alt_R on MacOS X and
Ctrl+Alt_R otherwise.
Specify the combination of Ctrl and / or Shift keyboard modifiers
that must be pressed, while the Meta_L / Meta_M / Alt_L / Alt_R key is
pressed in order to pop the special symbol
selection window.
The time interval in milliseconds between two successive clicks
of a mouse multi-click.
The list of the user-defined display styles
names. This is a comma separated list where the spaces (blank or tabs)
are ignored. If the list is too long to be clearly visible, it can be
splitted on several lines using a \ (backslash) just before the end of
line to ignore it.
Style aliases can be defined to reuse the same
style in another context, using an appropriate name. The aliases for a
style are put between parenthesis just after the main style name. (for
more details see text styles in the next section)
Example:
styles = LineCommentStyle, BlockCommentStyle, \
LibraryStyle (CommandStyle, AliasStyle), \
KeywordStyle, StringStyle
blockcomment_name [BlockCommentStyle]
[BlockCommentStyle]
These are the names used in the configuration file to denote the
line comment and block comment styles. It is important to FLWiX to
know internally what these styles are, in order to allow the adjust-paragraph command to fold correctly
the lines that contains comments, so that comments remains comments!
The period of time in milliseconds the buffer shape remains
displayed after an action on the mouse wheel.
synopsis: wheel_acceleration = Std Acc
this is the number of lines scrolled in response to an action on
the mouse wheel. The first number is used when no modifier is pressed
(standard scroll speed), and the second number when the Ctrl modifier
is pressed (accelerated scroll speed).
the number of characters inserted or destroyed that will trigger
an automatic backup of the buffer. The backup file has the original
file name followed by a "#".
[~/OpenGL/WixEdit(027):/tmp(022)]
synopsis: dir_umask = dir1(umask1):dir2(umask2):dir3(umask3)
The octal number may have up to 3 digits: PGO where P stands for the
owner of the file, G users of same group, and O all the other ussers.
Each digit is made of 3 bits: WRX where W stands for deny write access, R
for deny read access and X for deny execution access.
For example the mask value 022 means that the owner of the file will
be granted read and write accesses (and exec right if saved into an
already executable file) but only read access for the other users.
Unfortunately, this is not relevant for the Windows version of FLWiX,
due to operating system restrictions.
The default value (set in the default .flwxrc file) reflects my
personal choice and therefore could be changed to match yours!
synopsis: info_path = dir1(d1):dir2(d2):dir3(d3)
If the delay is 0 no informations about files located in the
corresponding directory will be saved.
As for the dir_umask parameter, the default value
is my personal choice and can be used only as an example.
the period of time (number of days) where the informations about
edited files will be retained when these files are not located
in a directory mentioned in info_path
synopsis:
set list = item1\
item2\
...
itemN\
last_item
This is useful to share parts of a specification list (
keywords or alias) between some related
modes. A "$" sign must be put at the beginning of the name of the
variable to get its value:
alias: $c-alias\
catch catch (|*) {|+|-}\
...
synopsis: include file
acts as if the file contents replaced the include
line. include directives can be nested.
synopsis:
defcmd new-command () { cmd_1 (); ... cmd_N (); }
defines a new editing user command made of a sequence of
primitive commands. The user commands are available to the
keytable of any modes. A new command definition can also be made
inside a mode definition, but will be nevertheless available for
any mode.
Note: the mark (primitive command "set-the-mark ()"), is local to the
user_command (i.e. the standard mark is saved, then restored when
the user command exits.
synopsis:
defmode [: basemode] { "mode parameters" }
defines (or re-defines) an editing mode. Implicitly, all the modes
derive from the Fundamental mode and then, even if
there is no explicit base mode, they inherit from the
Fundamental mode:
The Fundamental mode can also be redefined and
therefore derives itself from the built-in Fundamental mode.
When redefined, it become the new base mode of all the
modes.
Furthermore, when a mode explicitly derives from
another one, the derived mode inherits:
The "mode parameters" are keyword <==> values
associations, with various formats. They are described in
details in the next section.
Style specific options
When loading a new file in a window, the most appropriate editing
mode is searched to fit the type of the file. There are two
criteria to determine the mode: magic words
that are supposed to be specific to the type of file, and
filename patterns that are associated to the
type of file (extensions, ...).
In practice, with well chosen priorities, most of the times (all
the times for me!), this algorithm selects the more appropriate
mode.
Else, if the list is not empty (some suffixes was
matched) this list is filtered (pruned) with the magic
patterns. If this filtering leads to clear the list, forget the
magic patterns, just use the suffix list!
Again, if only one
mode remains in the list, this one is chosen. If the list is empty
then the Fundamental mode is chosen.
The file is read and the number of misspelled words are
computed using the dictionary of each mode of the list. The mode
selected is the one, among those which have less than 4% of
misspelled words, that have the highest priority. At last, if
there is more than 4% of misspelled words, the mode with the
lowest number of misspelled words is chosen, regardless the
priorities.
example: magic: ^class[
]|::|inline|operator|//
the value is a list of regular expressions that will be
searched in the first 4Kb of the file. If a match is found this
mode will be added to the list of potential modes for this file.
example:
suffix: *.cc|*.h
the value is a list of regular expressions. If the filename
match one of the regular expressions, this mode will be added to
the list of potential modes for this file.
example: priority: 4
this is a number from 0 (the highest priority) to 9 (the lowest
priority); If not set, the default value is 5, in the middle of
the range. If there is more than one mode in the list of potential
modes, the one with the highest priority is chosen.
synopsis:
alias: pattern expanded\
self-expansible
The alias table is a list of couples <pattern,
expanded> or when the pattern is the same string as the
expanded form, only one string (which is self
expansible). The pattern may be either a character string
or a regular expression. the expanded part is a string
where "|" and "\" characters have special meanings.
When the pattern is a string, depending on the global
parameter alias_prefix, the
expand-alias command (bound by default
to $T, the tabulation key) will expand a prefix or the whole
pattern. When the pattern is a regular expression, it is
searched in the portion of the line at the left of the cursor
and replaced as in ed or
sed.
In any case, when the pattern is found, it is removed and
replaced by the expanded string, which may contain:
The bar character must be escaped with a back-slash to
suppress its special meaning. Of course the back-slash
itself must also be escaped!
Here is an example:
alias: metabolite\
\([-0-9][0-9]*\)\(deg\) \1°\
{ {|+|*|-}
Any prefix of "metabolite" will be expanded to the whole word. The string
"-273deg" will be expanded to "-273°". An opening curly brace will be
expanded to:
{
*
}
where the * is the position of the cursor after the expansion.
To avoid repetitions in modes that share
aliases, such as C, C++, CUDA and JAVA for instance, global variables
can be used to store alias definitions. For example, the
c-alias defined by:
set c-alias =
{ {|+|*|-}\
case case |*:\
default:
can be used in the definition of the aliases of the C++ mode with:
alias: $c-alias\
catch catch (|*) {|+|-}\
...
Note the '$" used to take the value of the "c-alias" variable.
synopsis:
keytable: <key-1> <command-1> [(arguments)] \
<key-2> <command-2> [(arguments)] \
...
<key-N> <command-N> [(arguments)]
This table associates keys to
commands. Keys have been described in
section 1.2, and all the commands are
described in detail in chapter 3. Some
commands allow or require arguments. These arguments are
either keywords specific to the command, or numbers, or
strings.
For example:
$$R forward-char (selection)\
$R forward-char\
, replace-string ("c", "ç", "ç", "c,")\
$E- change-fontsize(-)
Each line except the last one must be terminated by a back-slash. The
built-in Fundamental mode defines the basic keytable
associating keys to all the common commands. Every modes implicitly
derive from the Fundamental mode, or explicitly from another mode
(which derives in fine from the Fundamental mode).
The keytable of a mode is inherited from its base mode and then merged
with the one built from the keytable switch leading to new or
modified key bindings. To add a common behaviour to the editor the
user can redefine the Fundamental mode.
when set to true, a spell check is performed each time a
separator is typed and therefore underline misspelled words.
Moreover, words that are poorly accentuated but where the
accentuation is unambiguous are also underlined, but then,
automatically corrected when the following separator is
typed.
Of course, at least "main_dictionary" must be set to use
the spell checker.
For modes where both "main_dictionary" and "alt_dictionary"
are set, if infer_language is set to true, flwx
automatically chooses the language that generates the fewest
errors (this can be overruled at any time using the language
button in the bottom banner).
This test is made only at load time, in order to set
the initial spell check language. Setting this flag to
false may be useful for the modes where the initial
content of the buffer can mislead the automatic choice of the main
language (for example in Mail modes, the header on a still empty
mail makes the main language set to English).
As for infer_language, when both "main_dictionary"
and "alt_dictionary" are set in a mode, when
language_recheck is set to true, the buffer
language is checked every 15 characters entered. Again,
this can be overruled at any time using the language button in the
bottom banner.
the file name of a dictionary (a list of words, one per line)
used for prefix-expansion (expand-alias)
and for spell check. When using the supplied dictionaries, the
corresponding language flag (spell logo on the bottom banner) is
automatically displayed. Dictionaries can be plain text or
compressed with gzip and sorted or not. When FLWiX loads the
dictionaries, a simple test is performed to determine if they are
already sorted. If not, FLWiX will sort them and write back the
sorted version into the original files. The sorting process can
take up to a quarter of second but is done only once (unless a
dictionary is modified by the user and left unsorted).
Do not use the standard sort command, because
FLWiX uses a specific comparison function that make no difference
between accented and non accented versions of the same characters
in the various spell-check related functions.
the file name of the alternate language dictionary.
the file name of third dictionary which will contain words
explicitly put by the user (add-word-to-dict command). When
expanding a prefix this dictionary is first searched.
comma-separated list of constants selected from:
misspell, mult_spell, accented, alt_lang. The commands
next-underlined-word (^J) and prev-underlined-word ($^J) navigate
to the next / previous misspelled word according to the
jump_type list specified in the current mode.
set the characters that are not part of a word (the space,
tab and line-feed characters are automatically added). This
controls all the word commands (moves, delete, change of case,
...), the alias expansion (the prefix to expand must be a
word), and the recognition and therefore the correct colour
and font used for the keywords.
it is a list of couples [regular expression, type] where the
regular expression defines what character combination delimits a
paragraph and the type specifies the behaviour of the
adjust-paragraph command:
The paragraph beginning is implicitly searched at the
beginning of a line so any leading "^[ \t]*" in the regular
expressions is useless. If two or more regular expressions are
matched, the longer match takes precedence; If the lengths are
the same, then the first match takes precedence.
For example:
paragraph_delimiters: "[1-9]*[0-9]*[\.:-] " par-ind\
"---[-=]" no-par\
"----*" par-noind
indicates that a dot, a colon or a dash, possibly preceded by a
one or two digits number, and followed by a space, delimits a
paragraph. When the adjust-paragraph command is called, the lines
following this delimiter will begin at the same column as after
the final space of the delimiter (since the maximal length of this
delimiter is 4 characters).
Any line beginning with 4 dashes, or 3 dashes and the equal
sign will not be considered as a paragraph delimiter.
Any line beginning with 3 dashes or more than 4 dashes will
begin a new paragraph, but without any indentation of the next
lines.
if set to true the adjust-paragraph command
will stop the folding of the paragraph if reaching a comment.
Otherwise, the rest of the paragraph beyond the comment will be
also folded.
if set to 0, the adjust-paragraph command (Esc p) folds the
lines longer than the width of the window. Otherwise the long
lines are folded at the specified value.
this is the character encoding used to save the buffer in a
file. The internal character encoding uses one byte per character
and is an extension of IsoLatin-9. The possible values are
iso-8859 and utf8. The "char encoding" icon
on the status bar (bottom of the editing window) reflects the
value of the charset flag. A left click on this icon
toggles the charset. Finally, when a file is read (load-file command ^X^F) the encoding of the
characters in the file is automatically recognised and the icon
set accordingly.
if true, the lines longer than the width of the window are
folded at a space character. The character ¶ is displayed at the
end of every folds of the line to distinguish them from a
real end of line.
The beginning-of-line and end-of-line commands (^A and ^E) moves the
cursor to the beginning and the end of the current fold, and the
beginning-of-folded-line
while the end-of-folded-line
commands ($^A and $^E) moves the cursor to the beginning and the
end of the real line.
if set to true adds a column on the left side of
the window with the line numbers. The toggle-line-numbers command (^X^L)
switches on and off the line numbers display.
adjusts the vertical spacing between lines by a number of
pixels, positive or negative. The default value is 0 on MacOS X, 2
on Windows and -1 on Linux.
if true, the new-line-indent
command indents the newly created line using first tabs then
spaces to go to the right column. Otherwise only spaces are used.
the number of spaces equivalent to a full tabulation.
In order to highlight important parts of the edited text or
inversely to blur unimportant parts (for instance keywords in
LaTex type modes) FLWiX implements display Styles. A style
is a combination of a colour and a font, which can be chosen by
the user (see xxx_colour and xxx_font below).
i) with the keywords
switch, when it is a known word that need to be displayed in a
particular style (like a keyword in a programming language),
ii) or delimited by opening and closing regular
expressions (like a C comment that begins with "/*" and ends with
"*/") when the list of patterns is not known or is too long to
enumerate.
An alias name for a plain style defines alias names for those
configuration switches, built in the same way.
The switch prefix is made by removing the "Style" terminator from
the style name, and by replacing each capital letter with an
underscore followed by the same letter in lower case (except for
the very first letter of the style name). For example
"MyOwnStyle" defines the following 4 configuration switches:
The default ~/.flwxrc configuration file defines 11
styles that are used in the provided edition modes:
The colour used to display text in MyOwnStyle
The font used to display text in MyOwnStyle (see what
is a font descriptor in text_font below).
In modes using MyOwnStyle, when the cursor is inside
a portion of text displayed in that style, the editing mode
is temporarily switched to submode_name.
this switch defines the opening / closing format that will be
used to recognise the text to display in MyOwnStyle, where:
- op_regex, cl_regex : is the regular
expression for the opening (resp. closing) delimiter
- hl_op, hl_cl : booleans; if true, the opening
(resp. closing) pattern will be displayed in MyOwnStyle, otherwise
displayed in StandardStyle
- ck_sp : boolean; if true, the spell checker will test
the spelling of the words displayed using this style.
- nested : boolean; if true, nested sub-styles are
searched inside the text displayed using this style. Usually, in
comment styles, this flag is set to false because a comment can
be made of anything that therefore must not be recognised as
anything else than a comment.
the style used for line comments, for example: // ... in C-like programming languages,
# ... in shell, or % ... in LaTex.
the style used for block comments, for example: /* ... */ in C-like programming
languages, or <!-- ... --> in
HTML.
the style used for class names in programming languages (C++,
Java, ...). A specific syntax is used in the
keywords switch to recognise class names.
the style used for constant names in programming languages.
(#define'd names in C, C++, ...)
the style used for the C-preprocessor directives themselves:
#define, #include, ...
the style used in the CUDA mode for the CUDA-specific
keywords that are not part of C++, such as "__device__",
"<<<", ...
the style used in the programming languages, LaTex, HTML
modes to highlight keywords.
the style used in the programming languages modes for library
functions.
the style used in the text and programming languages modes to
highlight quotes and some kind of constants that are enclosed
between specific delimiters.
the style used in the text and programming languages modes to
highlight strings (text enclosed between specific
delimiters, mainly double quotes ").
the style used in the C-like programming languages modes to
highlight user-defined data types.
Style regexpr
Style font
Style colour
Style submode
argument argument_font argument_colour
block_comment block_comment_font block_comment_colour block_comment_submode
ccode_colour
class class_font class_colour
constant constant_font constant_colour
cpp cpp_font cpp_colour
extension_font extension_colour
keyword keyword_font keyword_colour
library library_font library_colour
line_comment line_comment_font line_comment_colour line_comment_submode
math math_colour math_submode
quote quote_font quote_colour
string string_font string_colour string_submode
switch_colour switch_submode
typedef_font typedef_colour
value_font value_colour
variable_colour
verbatim verbatim_font verbatim_colour verbatim_submode
The other text styles parameters are:
2.4 Mode list
the font descriptor of the font used for text displayed in
StandardStyle. A font descriptor can be either the name of the
thirteen built-in fonts or one of the eight user-defined fonts.
These can be:
the association table between regular expressions defining
what a keyword is, and the style used to display it. This can
be also used to assign a style to words, because of their
relative location from a keyword:
keywords: pattern pattern_style\
pattern pattern_style other_style <\
pattern pattern_style other_style >\
pattern pattern_style other_style -
These four lines assign the style "pattern_style" to any word
matching "pattern". Furthermore, the three last lines assign
the style "other_style" to all the occurrences of the word
placed before (resp. after, resp. end of line) the word
matching the pattern. For example (from the C++ mode):
:: KeywordStyle ClassStyle <
will display the text "... WixWidget::forward_word ..." with the
ClassStyle for "WixWidget", and KeywordStyle for "::"
(assuming that ':' is NOT in the colour_delimiters
value). Furthermore, the word "WixWidget" will be displayed
in ClassStyle anywhere in the buffer.
struct KeywordStyle TypedefStyle >;
will display the text "... struct
record ..." with the
KeywordStyle for "struct", and TypedefStyle for
"record". Again, all the occurrences of the word "record" will be displayed in
TypedefStyle anywhere in the buffer.
typedef KeywordStyle TypedefStyle -
will display the text "... typedef
unsigned int uint;" with the
KeywordStyle for "typedef", and TypedefStyle
for "uint". All the occurrences of the word "uint" will be displayed in
TypedefStyle anywhere in the buffer. In the real C++
mode, the words "unsigned" and
"int" are displayed
in KeywordStyle because of some other lines in the
association table.
set c-keywords =
int KeywordStyle\
long KeywordStyle\
float KeywordStyle
can be used in the definition of the keywords list of the C++ mode with:
keywords: $c-keywords\
class KeywordStyle\
...
Note the '$" used to take the value of the "c-keywords" variable.
$commands$ CommandStyle\
The syntax of those names is $name$ where:
"Linux", "MacOSX", "Darwin", "Windows", "IsoLatin", "ISO-8859-1",
"UTF-8", "utf8", "FRE", "ENG", "GER", "SPA", "ITA", "POR"
"OS", "OSTYPE", "SYSTEM", "USER", "LOGIN", "USERNAME",
"CHARSET", "LANG", "ROOT", "ADMIN"
suffix:, magic:, line_comment:, library_colour:,
word_delimiters:, colour_delimiters:, ...
fontsize, shape_timeout, highlight_all_found,
wheel_acceleration, list_fontsize, query_fontsize,
case_sensitive, alias_prefix, num_lines, num_columns, ...
exec-user-cmd, backward-search, flasher-parenthesis,
find-opening-par, prev-line, next-line, forward-char,
backward-char, ...
from_alias_table, clipboard, selection, C, +, -
the system command line used by the process-buffer FLWiX command to
process the buffer (compilation, text processing, etc.).
For example:
g++ -O %f -o %b
would do the job for the C++ mode. The most general command would
be 'make' on Linux / MacOSX operating systems.
this is the set of characters that will be used to detect
what a word is, for the only purpose of setting a style to a
pattern.
synopsis:
include_directive: ^#include "\(.*\)"|//[
]*style_import[ ]*"\(.*\)"
The name of the included file is specified
with the \( ... \) regular sub expression. When this
parameter is set, the table that associates styles to words is
initialised by processing all the files included in the first 100
lines of the buffer. This means that the styles found in the
included files are also applied to the current buffer.
For example, in the standard C++ mode, if
header.h is included in the main.cc file,
loaded in the current editing buffer, and if header.h
contains the line:
#define my_sup(x,y) ((x)>=(y) ? (x) : (y))
then all the occurrences of my_sup in the current
buffer will be displayed using the ConstantStyle.
The second regular expression in the
standard C++ mode (the one after the '|') means that a
special comment can be used to explicitly imports words
styles from a file not necessarily included by the C++
preprocessor. This can also be used to circumvent the 100 lines
detection limit.
Note that this behaviour is
recursive: meaning that nested included files are also
processed up to a total of 64 different included files (a file is
never processed twice). Be aware that FLWiX does not know whether
or not an included file will be really included (because of
conditional compilation switches for example).
user_font_2:
[Courier] [Courier]
user_font_3:
[Courier] [Courier]
user_font_4:
[Courier] [Courier]
user_font_5:
[Courier] [Courier]
user_font_6:
[Courier] [Courier]
user_font_7:
[Courier] [Courier]
user_font_8:
[Courier] [Courier]
user_font_1: Times New Roman Italic
linecomment_font: user_font_1
The line comment font will be Times New Roman Italic in the
considered mode.
user_font_offset_2: [0] [0]
user_font_offset_3: [0] [0]
user_font_offset_4: [0] [0]
user_font_offset_5: [0] [0]
user_font_offset_6: [0] [0]
user_font_offset_7: [0] [0]
user_font_offset_8: [0] [0]
user_font_1: Times New Roman Italic
user_font_offset_1: -2
linecomment_font: user_font_1
The height of the font will be shrunk by 2 pixels.
Objective-C++
Shell
C-Shell
Python
XML
Text
German
LaTex
Bibtex
Mail
Makefile
SED
HTML
FLWX
WallChart
Hsim
The documentation of the command is displayed on the next line.
3.2 Insertions / Deletions
Move the cursor forward by numarg characters. If this command is passed the selection argument (with the Shift modifier), then the selection is extended to the final position of the cursor.
Move the cursor backwards by numarg characters. If this command is passed the selection argument (with the Shift modifier), then the selection is extended to the final position of the cursor.
Move the cursor forward by numarg words.
Move the cursor to the end of the numarg-th word.
Move the cursor backwards by numarg words.
Move the cursor to the end of the current line.
Move the cursor to the beginning of the current line.
Move the cursor to the end of the last fold of the current line.
Move the cursor to the beginning of the first fold of the current line.
Move the cursor down to the next empty line. If no empty line is found, the cursor is moved to the end of the buffer.
Move up the cursor to the previous empty line. If no empty line is found, the cursor is moved to the beginning of the buffer.
Move the cursor down by numarg lines. If this command is passed the selection argument (with the Shift modifier), then the selection is extended to the final position of the cursor.
Move the cursor up by numarg lines. If this command is passed the selection argument (with the Shift modifier), then the selection is extended to the final position of the cursor.
Move the cursor to the numarg-th line of the buffer. For example to go to the line number 25:
Go up by numarg pages (window height).
Go down by numarg pages (window height).
Move the cursor to the end of the buffer.
Move the cursor to the beginning of the buffer.
Scroll up the current view by numarg lines.
Scroll down the current view by numarg lines.
Mark the current cursor location with the mark.
Interchange the positions of the cursor and the mark, i.e. go to the marked character while remembering the current position.
Mark the current cursor location. There are 8 different marks. The mark #0 is the mark: the one that can be swapped with the current cursor position and that defines the region. The 7 other marks can only be sequentially accessed.
Go to the next previously marked location, including the one marked with the mark.
Find the closing parenthesis matching the next opening parenthesis.
Find the opening parenthesis matching the preceding closing parenthesis.
Find the closing brace matching the next opening brace.
Find the opening brace matching the preceding closing brace.
Find the closing bracket matching the next opening bracket.
Find the opening bracket matching the preceding closing bracket.
If triggered just after a string search, moves the cursor at the end of the next occurrence of the pattern found.
Otherwise, when the spell checker is on, moves the cursor at the end of the next misspelled word, according to the "jump_type" mode parameter.
If triggered just after a string search, moves the cursor at the end of the previous occurrence of the pattern found.
Otherwise, when the spell checker is on, moves the cursor at the end of the previous misspelled word, according to the "jump_type" mode parameter.
3.3 Undo / Redo
Insert the number of the current line.
When the pop_emoji key is held down, the emoji-selection popup dialog is opened. Each emoji clicked is inserted at the cursor position.
The popup dialog disappears when the pop_emoji key is released.
When the pop_symbol key is held down, the symbol-selection popup dialog is opened. Each symbol clicked is inserted at the cursor position.
The popup dialog disappears when the pop_symbol key is released.
Delete the numarg characters at the right of the cursor. If more than one character is removed, they are saved in the kill-stack
Delete the numarg characters at the left of the cursor. If more than one character is deleted, they are saved in the kill-stack
Remove the end of the current word and the numarg-1 following words, which are saved in the kill-stack.
Remove the beginning of the current word and the numarg-1 preceding words, which are saved in the kill-stack.
Change the initial of the current word from upper case to lower case and vice versa.
Change all the upper case letters between the cursor and the end of the word to lower-case.
Change all the lower case letters between the cursor and the end of the word to upper-case.
Splits a line into two parts (inserts a line-feed character).
Swap the two characters preceding the cursor. This corrects a frequent kind of typo.
Adjusts the current paragraph in order to make it fit inside the space defined by the wrap_column parameter. The lines containing a line-comment are not folded to avoid breaking the comment.
Puts the current paragraph on one, possibly long, line. That is useful, for example, when using cut & paste to fill a form on a website. The lines containing a line-comment are not coalesced with the next ones to avoid extending the comment.
Moves the cursor backward to the opening character (usually a parenthesis or a bracket or a brace) matching the one just typed, then stays there for a while, then returns.
Insert a line-feed character and position the cursor at the correct indentation level on the next line. If this command is passed the C argument, then after an opening curly brace, or a C style keyword (do, for, if, while) one more indentation level is added.
If the + (resp. -) argument is passed, then one indentation level is added (resp. subtracted).
Indents the current line to the correct indentation level and positions the cursor on the first non blank character. This is useful for the C, C++ and JAVA modes.
Inserts a line delimiter (^J or ^M^J on Windows) after the cursor. At the beginning of a line this opens an empty line above.
Replace the current character by the one just typed.
Insert the character as typed.
Inserts explicitely a tabulation character.
Insert the next typed character (unless it is an octal digit) regardless of any special command meaning it may have. If the next typed characters are octal digits, they are interpreted as an octal code, and the corresponding character is inserted.
Erase the current buffer and reset the default filename.
Delete the region: the text between the mark and the current cursor location.
Delete the end of the current line. If called twice in a row, the entire line is deleted and pushed (as a whole) onto the kill-stack. If numarg > 1, then numarg lines are deleted. This is the emacs-like kill-line command.
Delete the end of the current line. If called twice in a row, the '\n' is also deleted and appended to the deleted text in the kill-stack (the next line is joined to the current one). If numarg > 1, then numarg entire lines are deleted and pushed onto the kill-stack.
Delete numarg lines and push them (as a whole) onto the kill-stack.
Delete the beginning of the current line.
Inserts the numarg-th killed item.
Navigate backward in the kill-stack, each time putting back the previously deleted text. For example, if N items have been deleted, "yank-previous" will insert the most recently deleted, then the one deleted before, and so on until the bottom of the kill-stack is reached, or, as in "expand-alias", until another key is hit.
Try to expand the current prefix from i) the alias table of the current mode, then ii) from the words of the buffer itself and finally iii) from the main language dictionary. Each time the ^I (Tab) key is typed (in the standard key maps), the next alias (or word) matching the prefix is inserted in the buffer. This process cycles through all the possible expansions (including no expansion at all, only the initial prefix); At any time, one can escape this cycle by typing any other key than ^I, leaving the buffer as it is displayed.
When the character at the left of the cursor matches one character on the argument string, it is replaced by the following character of the argument string. For example with this key map:
keytable: ' replace-char (eééeEÉÉE)
When the character string at the left of the cursor matches the first of a pair of arguments, it is replaced by the last string of that pair of arguments. For example with this key map:
keytable: ' replace-string ("touche","touché", "ete","été")
Opens the font-selection dialog. The desired font name can be picked up with the mouse or a prefix can be entered with the keyboard (not case-sensitive). The selected font name will be inserted in the buffer (useful in the FLWX mode)
Opens the colour selector. When a colour is selected, its RGB components are inserted in the buffer using the colour format: #rrggbb. See the Colour selection paragraph at the end of section 1.5.
Copy the current selection to the clipboard (on Windows and MacOSX) or to the X cut buffer (on Linux).
Inserts into the buffer the content of the clipboard (on Windows and MacOSX) or of the X cut buffer (on Linux).
Increases (if passed the argument +) or decreases (if passed the argument -) the level of indentation of the region (extended to entire lines).
3.4 Files
Undoes the preceding command.
Almost all the commands are undoable, even loading or saving a file, and closing a window/tab! Undoing write-file means deleting the file if it was non-existent, otherwise re-writing its previous content (the same for undoing save-same-file). When the file is updated, its access and modification time stamps are also updated.
Redoes the previous undone command.
Redoing write-file or save-same-file simply means creating the file if it is non-existent, and writing the current content of the buffer.
3.5 Search / Replace
Load the file prompted for in the file selector. The editing mode corresponding to the type of the file is set, along with the appropriate language, depending on the "infer_language" flag.
Reload the current file. No confirmation is asked when the current buffer is modified (this command is undoable).
Load the file prompted for in the file selector in a new tab.
Insert the file prompted for in the file selector.
Searches the regular expression, prompted for in the query dialog box, into all the files of the current directory, whose name match the suffixes declared in the current mode. Each file containing the regular expression is loaded into a new tab (if it is not already loaded). The cursor is put at the beginning of the line that contains the first occurrence of the regular expression.
Save the buffer the file prompted for in the file selector. The new filename becomes the current filename for this editing window.
Save the buffer in the current file.
Save the current user defined macro command into the prompted file.
Load the macro command from the prompted file.
Translate the buffer to PDF then save it into the file prompted for in the file selector.
Translate the buffer to PDF then launch the user preferred PDF viewer to see it.
3.6 Miscellaneous
Search forward for a character string in an incremental way: each change made to the pattern (insertion or deletion) triggers a new search from the position in the buffer where the search command was issued. The ^N or Down Arrow (^P or Up Arrow) keys search for the next (previous) occurrence of the pattern.
If the searched string is the character ø (0340) the next (previous) non-ascii character (code > 0200) is searched.
Search backward for the previous occurrence of the character string prompted for.
If the searched string is the character ø (0340) the previous non-ascii character (code > 0200) is searched.
Search forward for the next occurrence of the regulal expression prompted for.
Search backward for the previous occurrence of the regular expression prompted for.
Search forward for the next emoji in the buffer.
Search backward for the previous emoji in the buffer.
Replace conditionally each occurrence of a character string (or a regular expression) by another one. The search (and replacement) is made starting from the current cursor position. Each time the string is found it is highlighted and the user can:
When the last change is done, only two options remains: undo or exit.
If the regexpr argument is passed to the command, it acts like the s/regexpr/new/ "sed" command. The dialog used to replace or not an occurrence is the as for the string replacement.
Search forward for the character string beginning with the last character of the key. This allows the user to have all the unbound keys of a map reached from a prefix, to be bound to the search command. Bound to ^S in the Fundamental mode, this allows the user to search for a string with "^Sstring" (instead of "^S^Sstring").
Makes a snapshot of the FLWiX windows, then terminates the flwx server (destroying all the editing windows).
Makes a snapshot of the FLWiX windows, then re-exec the flwx server to re-interpret the startup file.
Set to numarg the number of spaces represented by a tab on display. If numarg is 1, it is reset to the default value.
If the current mode has a value for the process_command parameter, the buffer is saved, then the filename (resp. basename) is substituted to the %f (resp. %b) part of the process_command, and the command is applied. The standard input is redirected to /dev/zero, the standard error and standard output are redirected to /dev/null. The command is ran in the directory containing the file to process.
Displays in the status line the number of lines, the current line number, the number of words and bytes of the buffer.
Repeat the previously executed command.
Begins to learn a new keyboard macro.
Ends the collection of the current macro.
Execute the last defined macro command.
Launch the user-command whose name is specified in the argument.
Scroll the window to display the current line at the center of the window. If called with numarg == 4, the current line is moved at the top of the window. If numarg == 16, the current line is displayed at the bottom of the window. Otherwise the current line is placed at the numarg_th vertical position.
Copy the end of the current line into the kill-stack. If the clipboard argument is passed, the end of line is also copied into the clipboard.
Copy the region (the text between the mark and the cursor) to the kill-stack. If the clipboard argument is passed the region is also copied to the clipboard.
Remove the numarg last items from the top of the kill stack.
Allows the user to enter a numeric argument.
Closes (destroys) the current window.
Restores a previously closed window or tab. The window is selected from a list displaying the name of the last file edited.
The window is restored in the same state as when being closed, including its undo/redo history.
Creates a new editing window.
If numarg is 1, the window is resized such that the widest displayed line is entirely visible, but no more. The window is resized to not less than 16 columns, and no more than the width of the screen, and might be moved to stay inside the screen. If numarg is 4, the window size is reset to the standard width. If numarg is 16, the window size is reset to the standard width and height. Values greater than 16 resize the window to numarg columns.
Splits the window in two panes, editing the same buffer. This allows the user to look at a region of the buffer while editing another one. If the regions overlap, the modifications made in one pane are visible inside the other one.
Moves the keyboard focus from one pane of a splitted window to the other pane.
Toggle the modifiable / non-modifiable buffer status of the current window of tab.
Moves the current tab to a new separate window. Does nothing if the current window has only one tab.
Moves the selected window (prompted from the list of all but the current window) into a new tab inside the current editing window. Does nothing if the selected window has already more than one tab.
Creates a new tab inside the current editing window.
Selects the next tab of the current editing window. Nothing is done when there is only one or no tab.
Selects the previous tab of the current editing window. Nothing is done when there is only one or no tab.
Opens the mode-selection dialog. The desired editing mode can be picked up with the mouse or a prefix of its name can be entered with the keyboard (not case-sensitive)
Opens the window-selection dialog. To switch to the desired window select its name with the mouse or type a prefix with the keyboard.
Clears the modified state of the buffer; the modified flag in the status bar become green.
Toggle the display of the non ascii characters between font glyph and binary (octal) representations.
Pops up the full documentation window. The documentation can be saved in HTML into ~/.FLWiX.html.
Wait for the user to enter a key, then pop up a window on top of the current editing window. This window shows the documentation of the command which is bound to the entered key in the current mode.
If the current mode has a main dictionary, and/or a personal dictionary, the current word is searched in these dictionaries. If the word is correctly spelled nothing happens. If the word exists with other spellings that differ only by accented characters then a menu pops up to select a possible variant. Else some common typos are checked: letters inversion, one bad letter, one missing letter, one letter too many, etc.
If there is only one correct spelling the erroneous word is automatically replaced by the correct one. Otherwise a menu pops up to select a replacement word. The user can navigate only using the keyboard:
When the word is correct but variants exists only because of accented letters, the global switch accented_variants_only indicates wether or not only these variants are displayed, or if the full search of spellings must be performed.
If there is a main dictionary defined for the current mode, all the words of the buffer are searched in this dictionary. The misspelled, bad-accented, and alternate language words are underlined accordingly.
Turns on and off the check spelling. When turned on, the automatic language discovery is turned off, conversely, when turned off, the automatic language discovery is turned on.
Add to the personal dictionary the word where the text cursor is located.
Bound to all the keys that are not bound to a command (free keys). This command can be used to invalidate unwanted inherited keys bindings.
Show/Hide the line numbers on the left side of the window
Called with the + (resp. -) argument, this command increases (resp. decreases) the size of fonts used in this window.
Switches on or off the automatic discovery of the editing mode when loading a file. If switched off, the window will remain in Fundamental mode regardless the type of the loaded file.
Enters or quits the submode where any character typed replaces those of the current word, then inserts them after the end of the word. Any other command than self-insert quits this submode.
Website designed & maintained by Patrick Amar (patrick DOT amar AT lri DOT fr)
[ last: 24/04/2024] 2618 hits since 09/01/2020