Adie [Remove Frame]
|
Screenshots
|
Where to get it?
|
Introduction
|
General Features
|
File Access Features
|
Editing Features
|
Syntax Coloring Features.
|
Starting a New Document.
|
Opening and Saving Files the Old Fashioned Way.
|
You can quickly navigate to the desired file by typing the first few letters of the filename and then pressing Enter (Return); use Backspace to move up one directory level. Control-H moves to your home directory, Control-W moves back to the current working directory.
A nice convenience of the File Dialog is the ability to set bookmarks, so once bookmarked, you can quickly move back to a previously visited directory.
Opening Files Using the File/Directory Browser.
|
Opening Recently Visited Files.
|
Opening Files by Drag and Drop.
|
Opening a Selected Filename.
|
#include "filname.h"
or:
#include
then Adie will search for this file in a sequence of include directories, otherwise it will
search in the same directory as the currently loaded file. You can specify the list of
include directories to search with the "Include Path" option. When the selected filename is
of the form:
filename.cpp:177
then Adie will not only load the filename, but also jump to the given line number. If this
file has already been loaded, Adie will simply jump to the given line number in the current file.
This option is very useful when fixing compiler errors.
Mouse Selection.
|
Scrolling Text.
|
Adie can also take advantage of a wheel mouse; simply point the mouse inside the text area and use the wheel to scroll it up and down. Holding the Control-key while operating the wheel makes the scrolling go faster, by smoothly scrolling one page at a time. To scroll horizontally, simply point the mouse at the horizontal scroll bar. In fact, any scrollable control (including the File/Directory Browser), can be scrolled by simply pointing the cursor over it and using the mouse wheel. You can adjust the number of lines scrolled for each wheel notch by means of the Preferences dialog.
The Clipboard.
|
The Primary Selection
|
Text Drag and Drop.
|
Undo and Redo.
|
Search and Replace.
|
^ | Match begin of line |
$ | Match end of line |
. | Match any character |
| | Alternation |
( ... ) | Grouping sub pattern |
(?i ... ) | Match sub pattern case insensitive |
(?I ... ) | Match sub pattern case sensitive |
(?n ... ) | Match sub pattern with newlines |
(?N ... ) | Match sub pattern with no newlines |
(?: ... ) | Non-capturing parentheses |
(?= ... ) | Zero width positive lookahead |
(?! ... ) | Zero width negative lookahead |
[] | Character class |
* | Match 0 or more [greedy] |
+ | Match 1 or more [greedy] |
? | Match 0 or 1 [greedy] |
{} | Match 0 or more [greedy] |
{n} | Match n times [greedy] |
{,m} | Match no more than m times [greedy] |
{n,} | Match n or more [greedy] |
{n,m} | Match at least n but no more than m times [greedy] |
*? | Match 0 or more [lazy] |
+? | Match 1 or more [lazy] |
?? | Match 0 or 1 [lazy] |
{}? | Match 0 or more times [lazy] |
{n}? | Match n times [lazy] |
{,m}? | Match no more than m times [lazy] |
{n,}? | Match n or more [lazy] |
{n,m}? | Match at least n but no more than m times [lazy] |
\a | Alarm, bell |
\e | Escape character |
\t | Tab |
\f | Form feed |
\n | Newline |
\r | Return |
\v | Vertical tab |
\cx | Control character |
\033 | Octal |
\x1b | Hex |
\w | Word character [a-zA-Z_0-9] |
\W | Non-word character |
\l | Letter [a-zA-Z] |
\L | Non-letter |
\s | Space |
\S | Non-space |
\d | Digit [0-9] |
\D | Non-digit |
\h | Hex digit [0-9a-fA-F] |
\H | Non-hex digit |
\b | Word boundary |
\B | Word interior |
\u | Single uppercase character |
\U | Single lowercase character |
\p | Punctuation (not including '_') |
\P | Non punctuation |
\< | Begin of word |
\> | End of word |
\A | Match only beginning of string |
\Z | Match only and end of string |
\1...\9 | Back reference |
Keyboard Bindings.
|
Key | Action |
---|---|
Up | Move cursor up. |
Shift+Up | Move cursor up and extend selection. |
Down | Move cursor down. |
Shift+Down | Move cursor down and extend selection. |
Left | Move cursor left. |
Shift+Left | Move cursor left and extend selection. |
Right | Move cursor right. |
Shift+Right | Move cursor right and extend selection. |
Home | Move cursor to begin of line. |
Shift+Home | Move cursor to begin of line and extend selection. |
Ctl+Home | Move cursor to top of text. |
End | Move cursor to end of line. |
Ctl+End | Move cursor to bottom of text. |
Shift+End | Move cursor to end of line and extend selection. |
Page Up | Move cursor up one page. |
Shift+Page Up | Move cursor up one page and extend selection. |
Page Down | Move cursor down one page. |
Shift+Page Down | Move cursor down one page and extend selection. |
Insert | Toggle between insert mode and overstrike mode. |
Delete | Delete character after cursor, or text selection. |
Back Space | Delete character before cursor, or text selection. |
Ctl+A | Select all text. |
Ctl+X | Cut selected text to clipboard. |
Ctl+C | Copy selected text to clipboard. |
Ctl+V | Paste text from clipboard. |
Changing Font.
|
You can change font by invoking the Font Selection Dialog from the Font menu. The Font Dialog
displays four list boxes showing the font Family, Weight, Style, and Size of each font.
You can narrow down the number of fonts displayed by selecting a specific character set,
setwidth, pitch, and whether or not scalable fonts are to be listed only. The All Fonts
checkbutton causes all fonts to be listed. Use this feature if you need to select old-style
X11 bitmap fonts. The Preview window shows a sample of text in the selected font.
Changing Preferences.
|
Changing Colors.
|
The colors subpane allows you to change the colors used in the File/Directory browser,
and the Text Window. You can simply drag colors from one color well to another, or you can
double-click on a color well and bring up the Color Dialog. The Color Dialog offers a
number of ways to create a new color, either by selecting one of the pre-defined color wells,
by mixing a custom color in RGB, HSV, or CMYK color space, or by selecting a named color from a list.
The active text line, i.e. the line containing the cursor, can be drawn using a special
style when the Active background button is checked.
If Line Numbers are displayed, the line numbers and line numbers background can
also be modified.
Changing Editor Settings.
|
The editor subpane is used to change various modes of the editor:
Modes | Explanation |
---|---|
Word Wrapping. | This enables word wrapping mode for the Text Window; when word wrapping is turned on, text flowed to stay within the wrap margins. |
Auto Indent. | This causes spaces or tabs to be inserted to match the previous line; this option is meant for programmers. |
Fixed Wrap Margin. | When this feature is enabled, the text is flowed to stay within a fixed wrap column; when disabled, the Text Window is in continuous wrapping mode, and the text is flowed to fit the size of the Text Window. This option has no effect if the Word Wrapping option is off. |
Strip Carriage Returns. | When this option is selected, MS-Windows/MS-DOS text files with lines ending in CRLF are transformed into LF only files upon read; this is mostly of interest when loading DOS files on a UNIX system; when Adie runs under MS-Windows, files are normally automatically translated back and forth. |
Strip Trailing Spaces. | When selected, Adie will remove all white-space after the last printable character when reading a file. |
Append newline at end of file. | If there is no newline at the end of the last line, automatically add it when writing the file; some compilers like this. |
Insert Tab Characters. | When this option is selected, hard tab characters are inserted when entering the tab key. If the option is not selected then entering the tab key will insert the corresponding number of spaces into the text buffer. |
Warn if changed externally. | If the file is changed by another program, pop a dialog to reload the file. |
Word delimiters. | Change the set of characters which determine word boundaries for double-click and word-selections. |
Wrap Margin. | This specifies the column at which paragraphs are to be wrapped; the wrap margin only has effect if the fixed wrap margin option is selected. |
Tab Columns. | This specifies the tab spacing, in terms of spaces. |
Brace Match Time. | When entering a brace, parenthesis, or bracket, the cursor temporarily jumps to the matching brace and pauses there for a bit before hopping back to the insert position. If the brace match time is set to 0, then this feature is disabled. |
Mouse Wheel Lines. | This is the number of lines scrolled when the mouse wheel is rotated by one notch. When holding the control key while using the wheel, the text scrolls by one page at a time; when holding the alt key, it scrolls one pixel at a time. |
Line number columns. | This is the number of columns shown for line numbers; if set to zero, no line numbers are displayed. . |
Save View of File. | When this option is selected, the current view or scroll position is saved so that a subsequent visit to this file can immediately jump back to the same view. Disabling this option will cause all remembered views to be forgotten. |
Save Bookmarks. | When selected, all currently set bookmarks will be saved for this file; a subsequent visit to this file will restore the bookmarks. Disabling this option will cause all remembered bookmarks to be forgotten. |
Changing File Patterns.
|
patternname (patternlist)
Where patternname is the name of the pattern (e.g. "C Source") and the patternlist is a comma separated list of patterns (for example "*.h,*.c"). The patternname is optional. Some examples from my own setup of Adie (you can paste these from this help window if you want) are shown below:
All Files (*) All Source (*.cpp,*.cxx,*.cc,*.C,*.c,*.hpp,*.hxx,*.hh,*.H,*.h,*.y,*.l) C++ Source Files (*.cpp,*.cxx,*.cc,*.c,*.C) C++ Header Files (*.h,*.hpp,*.hxx,*.hh,*.H) C Source Files (*.c) C Header Files (*.h) Python Files (*.py) Perl Files (*.pl) Ruby Files (*.rb) Lex (*.l) Yacc (*.y) Object (*.o) X Pixmap (*.xpm) X Bitmap (*.xbm)
Some details on the allowable wild-card patterns:
Pattern | Explanation |
---|---|
? | Matches single character. |
* | Matches zero or more characters. |
[abc] | Matches a single character, which must be a, b, or c. |
[^abc] | Matches a single character, which must be anything other than a, b, or c. |
[!abc] | Ditto. |
[a-zA-Z] | Matches single character, which must be one of a-z or A-Z. |
[^a-zA-Z] | Matches single character, which must be anything other than a-z or A-Z. |
[!a-zA-Z] | Ditto. |
pat1|pat2 | Matches either pat1 or pat2. |
pat1,pat2 | Ditto. |
(pat1|pat2) | Matches either pat1 or pat2; patterns may be nested. |
(pat1,pat2) | Ditto. |
Building The Syntax File.
|
The syntax file contains a number of Language-blocks; each language block contains a number of syntax rules. Each rule may also contain a subrule. The order of the rules inside a Language-block is important; during matching, the first rule is tried first, then the second, and so on. With subrules, its the same way.
The formal syntax for the syntax file (sic!) is as follows:
SYNTAXFILE : { LANGUAGEBLOCK } ; LANGUAGEBLOCK : language STRING { DECLARATION } { RULE } end ; DECLARATION : filesmatch STRING | contentsmatch STRING | delimiters STRING | contextlines NUMBER | contextchars NUMBER ; RULE : rule STRING { PATTERN } { RULE } end ; PATTERN : pattern STRING | openpattern STRING | closepattern STRING | stoppattern STRING ; STRING : "text" ; NUMBER : digits ;
In a string, a quote (") can be embedded by prefixing with an backslash (\). Each statement must be on a single line. A hash (#) sign is used to introduce a comment, which extends to the end of the line.
To determine which language block to use for coloring, Adie first examines
the wildcards in the filesmatch string. If the filename loaded into
the editor matches the list of wildcards, the language block will be used
for syntax coloring.
Some files don't have any file extensions. In that case, you can instead
determine which language block to use by matching the first fragment of
the file (typically 512 characters) to the contentsmatch regular
expression.
Note that the order of the language blocks is important; earlier language blocks will be tried first.
The delimiters expression holds the list of characters used as delimiters when editing files of this syntax.
When the editor matches patterns for syntax incremental syntax coloring, it needs a certain amount of context around the change being made to the text. Typically, the contextchars should be set to the length of the largest pattern to be matched. The contextlines should be set to the number of lines of context. If these statements are omitted, Adie assumes the context to be one line of text. This is good in most cases.
Syntax rules are named patterns. The name of the rule is used to look up the corresponding colors in the FOX registry (so make sure the names are legal registry key names!). Thus, the colors can be easily configurable.
Rules may be either simple rules or complex rules. Simple rules match a single
regular expression pattern and have no subrules.
Complex rules have a openpattern and a closepattern, and possibly
a stoppattern. Complex rules may have any number of subrules.
The matching process is recursive, depth-first. That means, when matching
complex rules, first the open pattern is matched, then all of the subrules,
followed by the close pattern and stop pattern [if specified]. This allows
for easy to create subpatterns e.g. backslash-escape codes [see example].
The patterns are specified using the perl-like regular expressions also used for search and replace, see above.
As an example, here is a somewhat simplified version of the C++ language patterns:
language "C++" # File patterns for this language mode filesmatch "*.C,*.cpp,*.cc,*.cxx,*.c++,*.H,*.hpp,*.hh,*.h++,*.h" # Word delimiters delimiters "~.,/\`'!@#$%^&*()-=+{}|[]\":;<>?" # C++ style comment rule "CPPComment" openpattern "//" # Start of C++ comment closepattern "$" # Goes to end of line end # C style comment rule "CComment" openpattern "/\*" # Note the '\' does not have to be escaped unless followed by " closepattern "\*/" # CComment pattern is potentially expensive as it can go till end of buffer! end # String rule "String" openpattern "\"" # Opening quotes closepattern "\"" # Closing quotes stoppattern "$" # Don't scan past end of line! rule "OctalEscape" # Octal character can have more than 1 character; pattern "\\d+" # that's why this rule MUST come before "ControlEscape"! end rule "ControlEscape" # Allow an escape; subrules are matched first pattern "\\." # so a escaped closing quote is not seen by the "String" rule end end # Char constant rule "Char" openpattern "'" closepattern "'" rule "OctalEscape" pattern "\\d+" end rule "ControlEscape" pattern "\\." end end # Preprocessor rule "Preprocessor" openpattern "^\s*#" closepattern "$" rule "PreprocessorContinuation" pattern "\\n" end end rule "Keyword" pattern "\<(friend|typename|explicit|typeid|for|while|if|and_so_on)\>" end rule "Number" pattern "\<((0[xX][0-9a-fA-F]+)|((\d+\.?\d*)|(\.\d+))([eE](\+|-)?\d+)?)\>" end rule "Type" pattern "\<(unsigned|signed|int|char|short|long|float|double)\>" end rule "Operator" pattern "(\+\+|\+=|\+|--|-=|->\*|->|-|==|=|&&)" end end
Other Configuration Issues.
|
[SETTINGS] typingspeed=800 clickspeed=400 scrollspeed=80 scrolldelay=600 blinkspeed=500 animspeed=10 menupause=400 tippause=800 tiptime=3000 dragdelta=6 wheellines=1 bordercolor=black basecolor=AntiqueWhite3 hilitecolor=AntiqueWhite shadowcolor=AntiqueWhite4 backcolor=AntiqueWhite1 forecolor=black selforecolor=AntiqueWhite selbackcolor=#aea395 tipforecolor=yellow tipbackcolor=black normalfont="[lucidatypewriter] 90 700 1 1 0 1" iconpath = /usr/share/icons:/home/jeroen/icons
These settings can be either placed in $HOME/.foxrc (and thus affect all FOX programs), or in $HOME/.foxrc/FoxTest/Adie (only applying to Adie). File types may be bound to a command, mime-type, and icons using statements like the one below:
[FILETYPES] cpp = "/usr/local/bin/textedit %s &;C++ Source File;c_src.xpm;mini/c_src.xpm" /home/jeroen = ";Home Directory;home.xpm;mini/home.xpm;application/x-folder" defaultfilebinding = "/usr/local/bin/textedit %s &;Document;document.xpm;mini/document.xpm" defaultexecbinding = ";Application;exec.xpm;mini/exec.xpm;application/x-executable-file" defaultdirbinding = ";Folder;folder.xpm;mini/folder.xpm;application/x-folder"This example shows how the extension ".cpp" is bound to the program "textedit" and is associated with two icons, a big icon "c_src.xpm" and a small icon "mini/c_src.xpm", which are to be found in the directories determined by 'iconpath", in this case, "/usr/share/icons" or "/home/jeroen/icons". It also binds two icons "home.xpm" and "mini/home.xpm" to the home directory "/home/jeroen". Finally, it assigns icons, commands, and mime-types to unbound documents, executables, and directories, overriding the built-in icons of the FOX Toolkit.
Copyright © 1997-2022 Jeroen van der Zijp |