Go to the first, previous, next, last section, table of contents.


Menu Items

The `File' Menu

The Menu Entry `File/Open'

This opens a file read-write. However, if you don't have write permissions, it will be opened read-only automatically (see section The Menu Entry `File/View'). If the file is already open, this will just open a new editor (see section The Menu Entry `File/New editor'), without changing the read-write/read-only status.

If the file does not exist (but its directory exists), this function will open a new empty text editor which will be written to that file name when you save it (see section The Menu Entry `File/Save').

The Menu Entry `File/Open file at cursor'

This works like `File/Open' (see section The Menu Entry `File/Open'), but copies the word under the cursor from the current editor window as the initial content and allows you to copy characters from the current editor window.

The Menu Entry `File/View'

This opens a file read-only. Read-only files can be viewed and copied from with the usual editor keys, but they cannot be modified. They can be written to a new file name, however (see section The Menu Entry `File/Save as'). If the file is already open, this will just create a new editor (see section The Menu Entry `File/New editor'), without changing the read-write/read-only status.

The Menu Entry `File/View file at cursor'

This works like `File/View' (see section The Menu Entry `File/View'), but copies the word under the cursor from the current editor window as the initial content and allows you to copy characters from the current editor window.

The Menu Entry `File/New file'

This opens a new (read-write) unnamed text editor. When you try to save it (see section The Menu Entry `File/Save'), you will be prompted for a file name.

If you want to give the filename immediately, you can do this with `File/Open' (see section The Menu Entry `File/Open') instaed.

The Menu Entry `File/New editor'

Opens a new editor for the file in the current editor. The new editor will start at the same position as the current one (so one might be misled into thinking the function didn't work...). Several editors for one file will be marked by `:n', with consecutive numbers n.

The Menu Entry `File/Close'

Closes the current window. This is equivalent to `Window/Close' (see section The Menu Entry `Window/Close') to suit different preferences. :-)

The Menu Entry `File/Change directory'

Changes the current working directory for PENG as well as OS shells (see section The Menu Entry `File/OS shell') and tools (see section Tools) subsequently spawned by PENG.

The Menu Entry `File/Save'

Saves the current editor. If it is read-only, it will ask for a new file name to save it to, just like `File/Save as' (see section The Menu Entry `File/Save as').

The Menu Entry `File/Save as'

Saves the current editor under a new file name. This also makes it possible to save read-only files and non-file windows, e.g., the message window or info readers, to a file.

The Menu Entry `File/Save all'

Saves all editor windows which contain modified changes. If `Options/Auto save options' (see section The Menu Entry `Options/Auto save options') is on, it also saves the configuration to the current config file.

The Menu Entry `File/Shortcut paths'

In this menu, you can enter some path shortcuts which you can easily access in file selection boxes (see section Keys Used In File Selection Boxes).

The Menu Entry `File/OS shell'

Invokes an OS shell and resumes to PENG when you leave the shell (in most shells, this is done by entering `exit'). The name of the shell is taken from the usual environment variable containing it (`SHELL' under Unix, `COMSPEC' under Dos).

The Menu Entry `File/Suspend'

Suspends PENG if your system and shell support job control (just like CTRL-Z does with most programs).

You can also use CTRL-Z to suspend PENG if `Options/Environment/Control-Z to suspend' (see section The Menu Entry `Options/Environment/Control-Z to suspend') is enabled.

If any editor window contains unsaved changes, PENG will save them automatically if autosave is active (see section The Menu Entry `Options/Autosave/Autosave').

PENG can be continued with the normal continue command of your shell, usually called `fg'.

The Menu Entry `File/Exit'

Exits PENG. If any editor window contains unsaved changes, PENG will save them automatically if autosave is active (see section The Menu Entry `Options/Autosave/Autosave'), and otherwise ask you whether you want to save them.

You can also use CTRL-C to exit PENG if `Options/Environment/Control-C to exit' (see section The Menu Entry `Options/Environment/Control-C to exit') is enabled.

The `Edit' Menu

The Menu Entry `Edit/Undo'

Undoes the effect of the last operation(s) in an editor. Several operations of the same kind (movement, insertion, deletion) are undone by a single undo. It is possible to use undo multiple times (up to 128 times currently) in a row.

An operation undone inadvertently can be redone (see section The Menu Entry `Edit/Redo'), but only immediately after the undo.

Please note: undos may not be correct if the same file is opened in several windows, and changes are made in one window between an operation and the corresponding undo in another window.

The Menu Entry `Edit/Redo'

Redoes an operation that was undone in an editor (see section The Menu Entry `Edit/Undo'). It works only immediately after the undo.

The Menu Entry `Edit/Cut'

Cuts the marked text from a text editor or an input box to the clipboard.

The Menu Entry `Edit/Copy'

Copies the marked text from a text editor or an input box to the clipboard, without removing it from the text editor or input box.

The Menu Entry `Edit/Paste'

Pastes the active text in the clipboard to a text editor or an input box.

The Menu Entry `Edit/Delete'

Deletes the marked text from a text editor or an input box, without copying it to the clipboard.

The Menu Entry `Edit/Edit'

This brings you to the topmost window. Pressing ESC while in the main menu or a top-level submenu does the same. The hotkey ALT-. can be used to get from several menu levels or input boxes to the window faster than by repeatedly pressing ESC.

The Menu Entry `Edit/Open clipboard'

Opens the clipboard so you can edit it. Text cut or copied from elsewhere is always appended at the end of the clipboard, but you can mark text anywhere within the clipboard to select it for following paste operations.

The Menu Entry `Edit/Clear clipboard'

Clears the clipboard. Especially useful if you store the clipboard in a permanent file (see section The Menu Entry `Options/Editor2/Clipboard file').

The `Search' Menu

The Menu Entry `Search/Search'

Finds an occurrence of a string or regular expression in the current editor, depending on various options in the `Search' menu (see section The `Search' Menu).

The Menu Entry `Search/Replace'

Replaces one or all occurrences of a string or regular expression in the current editor by another string, depending on various options in the `Search' menu (see section The `Search' Menu).

C-like escape sequences (in particular `\n', but not `\007' because of conflicts with the backreference syntax, see below) are recognized in the replacement string.

If `Search/Regular expression' (see section The Menu Entry `Search/Regular expression') is enabled, the replacement string may also contain backreferences, i.e., it can reference

The Menu Entry `Search/Search or replace again'

Repeats the last search or replace operation. The new operation will always start after the current cursor position, regardless of the setting of `Search/From cursor' (see section The Menu Entry `Search/From cursor').

The Menu Entry `Search/Case sensitive'

Besides the usual two options (`Never' and `Always') there is the option `Smart' which causes a search to be case sensitive if and only if the search string contains any upper case letter (just like the `-i' option to `less(1)').

The Menu Entry `Search/Whole words only'

If this option is on, search (see section The Menu Entry `Search/Search') and replace (see section The Menu Entry `Search/Replace') operations will only find whole words, consisting of letters, digits and underscores (`_').

The Menu Entry `Search/Regular expression'

If this is enabled, you can search for regular expressions, and replace them using subexpression references. The difference between basic and extended regular expressions (see section The Menu Entry `Search/Extended regex') is not functionality, but only syntax. These concepts are explained more extensively in the man pages of programs like `grep(1)' and `sed(1)', so here's only a short reference on regular expressions:

Basic `.'`[aei-z]'`[^aei-z]'`[[:alnum:]]'`[^[:digit:]]'`[a[:space:]]'... `\w'`\W'`^'`$'`*'`\+'`\?'`\{n\}'`\{m,n\}'`a b'`a\|b'`\(   \)'`\7'`\'rest
Extended Meaning
`.' matches any single character
`[aei-z]' matches either `a', `e', or any character from `i' to `z'
`[^aei-z]' matches any character but `a', `e', or `i' .. `z' To include in such a list the characters `]', `^', or `-', put them first, anywhere but first, or first or last, respectively.
`[[:alnum:]]' matches any alphanumeric character
`[^[:digit:]]' matches anything but a digit
`[a[:space:]]' matches the letter `a' or a space character (space, tab, ...)
(there are more classes available)
`\w' = `[[:alnum:]]'
`\W' = `[^[:alnum:]]'
`^' matches the empty string at the beginning of a line
`$' matches the empty string at the end of a line
`*' matches zero or more occurences of the preceding expression
`+' matches one or more occurences of the preceding expression
`?' matches zero or one occurence of the preceding expression
`{n}' matches exactly n occurences of the preceding expression (n is an integer number)
`{m,n}' matches m to n occurences of the preceding expression (m and n are integer numbers, m <= n)
`a b' matches a followed by b (a and b are regular expressions)
`a|b' matches a or b (a and b are regular expressions)
`(   )' forms a subexpression, to override precedence, and for subexpression references
`\7' matches the 7'th subexpression (counted by their start in the regex), where 7 is a number from 1 to 9 ;-). Please note: using this feature can be very slow or take very much memory (exponential time and space in the worst case, if you know what that means...).
`\' quotes the following character if it's special (i.e., listed above)
rest any other character matches itself
Precedence, from highest to lowest: Regular expression matches follow the principle leftmost longest, i.e., if there are several possible matches, they will find the one that starts leftmost, and if there are several ones starting at the same leftmost position, the longest one of those. The length is particularly important when replacing. Of course, continued searches will also find matches further to the right, but they will not find shorter ones starting at the same position. E.g., if you search for `f.*o' in the text `foofo', the search will first find the whole text (`foofo'), and then the right `fo', but never the left `foo'. Please note: when you're surprised about a regex search not finding what you expect, please check (besides the regex syntax, of course) the setting of `Search/Whole words only' (see section The Menu Entry `Search/Whole words only'). This switch is respected in regex searches as well, but might be confusing sometimes.

The Menu Entry `Search/Extended regex'

This option selects between basic and extended regular expressions if regular expressions are enabled for searching (see section The Menu Entry `Search/Regular expression').

The Menu Entry `Search/Backwards'

If this option is on, search and replace operations will go through the text in backward direction, from the ending towards the beginning -- but note `Search/From cursor' (see section The Menu Entry `Search/From cursor').

The Menu Entry `Search/From cursor'

If this option is on, search and replace operations will only consider the text from the current cursor position to the end of the file -- or to the beginning if `Search/Backwards' (see section The Menu Entry `Search/Backwards') is on. Otherwise, they will start at the beginning (ending) of the file. But note `Search/Marked text only' (see section The Menu Entry `Search/Marked text only').

The Menu Entry `Search/Marked text only'

If this option is on, PENG will only consider marked text for search and replace operations, whenever some text is marked (otherwise the whole file).

This is in addition to restrictions set by `Search/From cursor' (see section The Menu Entry `Search/From cursor').

The Menu Entry `Search/Prompt on replace'

If this option is on, PENG will ask for confirmation before each replacement caused by `Search/Replace' (see section The Menu Entry `Search/Replace'). An answer of `y' will do the replacement, `n' will skip it, and ESC will abort the replacement operation altogether.

If the replacement string contains back-references to regular expressions (see section The Menu Entry `Search/Regular expression'), PENG will also show the actual replacement text for each possible replacement while asking for confirmation.

The Menu Entry `Search/Replace all'

If this option is on, replacement operations (see section The Menu Entry `Search/Replace') will only consider the first match found, otherwise every match found.

The Menu Entry `Search/Go to line'

This lets you enter a line number to go to in the current file.

The Menu Entry `Search/Replace identifier'

This function replaces an identifier in all open windows, after verifying that the new identifier does not exist in any window (unless the new identifier matches the original one except for case). This is useful for changing identifiers in large projects without missing them in some files and without getting conflicting identifiers. Of course, all files that belong to the project must be open in order for this to work correctly. OTOH, be sure not to do unwanted replacements in windows opened that don't belong to the project. The search and replacement used here is always case-insensitive.

The `Run' Menu

Besides the items listed here, this menu may contain additional tools and variables defined with a `/Run' prefix (see section Tools).

The PENG Built-In Tool `Run/Run'

Compiles and links a source file, automatically updating the units used when necessary, like `Compile/Make' (see section The PENG Built-In Tool `Compile/Make') does, and then starts the resulting executable. The file to compile is the one in the current editor, or the one given under `Compile/Main file' (see section The PENG Built-In Tool Variable `Compile/Main file') if it is given.

Currently implemented for Pascal using GPC (see section `GNU Pascal' in the GNU Pascal manual), C using GCC (see section `Introduction' in the GCC manual), LaTeX (see section `Overview' in the LaTeX manual) and Texinfo (see section `Texinfo' in the Texinfo manual). For LaTeX and Texinfo, starting the executable means opening the document created in `xdvi' (if possible) or in PENG's info reader, respectively.

The PENG Built-In Tool Variable `Run/Arguments'

Here you can specify command line arguments that are given when running a compiled executable with `Run/Run' (see section The PENG Built-In Tool `Run/Run').

Effective for Pascal and C.

The `Compile' Menu

Besides the items listed here, this menu may contain additional tools and variables defined with a `/Compile' prefix (see section Tools).

The PENG Built-In Tool `Compile/Compile'

Compiles a source file without trying to link it. The file to compile is the one in the current editor, or the one given under `Compile/Main file' (see section The PENG Built-In Tool Variable `Compile/Main file') if it is given.

Currently implemented for Pascal using GPC (see section `GNU Pascal' in the GNU Pascal manual), C using GCC (see section `Introduction' in the GCC manual), LaTeX (see section `Overview' in the LaTeX manual) and Texinfo (see section `Texinfo' in the Texinfo manual).

The PENG Built-In Tool `Compile/Make'

Compiles and links a source file, automatically updating the units used when necessary. The file to compile is the one in the current editor, or the one given under `Compile/Main file' (see section The PENG Built-In Tool Variable `Compile/Main file') if it is given.

Currently implemented for Pascal using GPC (see section `GNU Pascal' in the GNU Pascal manual), C using GCC (see section `Introduction' in the GCC manual), LaTeX (see section `Overview' in the LaTeX manual) and Texinfo (see section `Texinfo' in the Texinfo manual). For LaTeX and Texinfo, it does the same as `Compile/Compile' (see section The PENG Built-In Tool `Compile/Compile').

The PENG Built-In Tool `Compile/Build'

Compiles a source file, recompiling all units used whether changed or not. The file to compile is the one in the current editor, or the one given under `Compile/Main file' (see section The PENG Built-In Tool Variable `Compile/Main file') if it is given.

Currently implemented only for Pascal using GPC (see section `GNU Pascal' in the GNU Pascal manual).

The PENG Built-In Tool `Compile/Set current file as main file'

Sets the file name of the current editor as the main file, as if you had entered it under `Compile/Main file' (see section The PENG Built-In Tool Variable `Compile/Main file').

The PENG Built-In Tool `Compile/Clear main file'

Clears the main file, as if you had entered an empty string under `Compile/Main file' (see section The PENG Built-In Tool Variable `Compile/Main file').

The PENG Built-In Tool Variable `Compile/Main file'

If you enter a file name here, this file will be used rather than the current file for all compile operations such as `Compile/Compile' (see section The PENG Built-In Tool `Compile/Compile'), `Compile/Make' (see section The PENG Built-In Tool `Compile/Make'), `Compile/Build' (see section The PENG Built-In Tool `Compile/Build') and `Run/Run' (see section The PENG Built-In Tool `Run/Run').

You can also set or clear this entry with `Compile/Set current file as main file' (see section The PENG Built-In Tool `Compile/Set current file as main file') or `Compile/Clear main file' (see section The PENG Built-In Tool `Compile/Clear main file'), respectively.

The `Tools' Menu

Besides the items listed here, this menu may contain additional tools and variables defined with a `/Tools' prefix or no prefix at all (see section Tools).

The `Tools/Macros' Submenus

The PENG Built-In Tool `Tools/Macros/Pascal/New program'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) creates the skeleton for a new Pascal program in the current text editor.

The PENG Built-In Tool `Tools/Macros/Pascal/New program with units'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) creates the skeleton for a new Pascal program with an `uses' statement (see section `uses' in the GNU Pascal manual) in the current text editor.

The PENG Built-In Tool `Tools/Macros/Pascal/procedure'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts a procedure declaration (see section `procedure' in the GNU Pascal manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/Pascal/function'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts a function declaration (see section `function' in the GNU Pascal manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/Pascal/block'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `begin ... end' block (see section `begin' in the GNU Pascal manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/Pascal/if then'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `if ... then' statement (see section `if' in the GNU Pascal manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/Pascal/if then else'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `if ... then ... else' statement (see section `else' in the GNU Pascal manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/Pascal/case'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `case' statement (see section `case' in the GNU Pascal manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/Pascal/while loop'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `while' loop (see section `while' in the GNU Pascal manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/Pascal/repeat loop'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `repeat' loop (see section `repeat' in the GNU Pascal manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/Pascal/list type'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts a list type declaration at the current cursor position, after prompting for its name. The name will automatically be prefixed with a `P' for the pointer type and `T' for the actual record.

The PENG Built-In Tool `Tools/Macros/Pascal/object type'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts an object type declaration (see section `object' in the GNU Pascal manual) at the current cursor position, after prompting for its name. The name will automatically be prefixed with a `P' for the pointer type and `T' for the actual object.

The PENG Built-In Tool `Tools/Macros/Pascal/walk through a list'

This Pascal syntax macro (see section PENG Tools Used As Syntax Macros) inserts code to walk a pointer through a single linked list at the current cursor position, after prompting for the name of the variable to be used.

The PENG Built-In Tool `Tools/Macros/C/New program'

This C syntax macro (see section PENG Tools Used As Syntax Macros) creates the skeleton for a new C program in the current text editor.

The PENG Built-In Tool `Tools/Macros/C/New program with includes'

This C syntax macro (see section PENG Tools Used As Syntax Macros) creates the skeleton for a new C program with some `#include' directives in the current text editor.

The PENG Built-In Tool `Tools/Macros/C/void function'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `void' function declaration at the current cursor position.

The PENG Built-In Tool `Tools/Macros/C/function'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts a function declaration at the current cursor position.

The PENG Built-In Tool `Tools/Macros/C/block'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `{ ... }' block at the current cursor position.

The PENG Built-In Tool `Tools/Macros/C/if'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `if' statement at the current cursor position.

The PENG Built-In Tool `Tools/Macros/C/if else'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `if ... else' statement at the current cursor position.

The PENG Built-In Tool `Tools/Macros/C/switch'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `switch' statement at the current cursor position.

The PENG Built-In Tool `Tools/Macros/C/while loop'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `while' loop at the current cursor position.

The PENG Built-In Tool `Tools/Macros/C/do while loop'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `do ... while' loop at the current cursor position.

The PENG Built-In Tool `Tools/Macros/C/list type'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts a list type declaration at the current cursor position, after prompting for its name.

The PENG Built-In Tool `Tools/Macros/C/walk through a list'

This C syntax macro (see section PENG Tools Used As Syntax Macros) inserts code to walk a pointer through a single linked list at the current cursor position, after prompting for the name of the variable to be used.

The PENG Built-In Tool `Tools/Macros/LaTeX/New text'

This LaTeX syntax macro (see section PENG Tools Used As Syntax Macros) creates the skeleton for a new LaTeX document in the current text editor.

The PENG Built-In Tool `Tools/Macros/LaTeX/block'

This LaTeX syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `\begin{foo} ... \end{foo}' environment (see section `Environments' in the LaTeX manual) at the current cursor position, after prompting for its name (foo).

The PENG Built-In Tool `Tools/Macros/LaTeX/enumerate'

This LaTeX syntax macro (see section PENG Tools Used As Syntax Macros) inserts a skeleton for an enumeration (see section `enumerate' in the LaTeX manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/New text'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) creates the skeleton for a new Texinfo file in the current text editor.

The PENG Built-In Tool `Tools/Macros/texi/chapter'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a node for a new chapter (see section `chapter' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/section'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a node for a new section (see section `section' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/subsection'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a node for a new subsection (see section `subsection' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/subsubsection'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a node for a new subsubsection (see section `subsubsection' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/menu'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a menu (see section `Menus' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/itemize'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `@itemize' command (see section `itemize' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/table'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@table' (see section `Two-column Tables' in the Texinfo manual) command at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/multitabe'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@multitable' command (see section `Multi-column Tables' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/emph'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `@emph{}' command (see section `emph & strong' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/strong'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@strong{}' command (see section `emph & strong' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/samp'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@samp{}' command (see section `samp' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/code'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@code{}' command (see section `code' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/var'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@var{}' command (see section `var' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/dfn'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@dfn{}' command (see section `dfn' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/file'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@file{}' command (see section `file' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/email'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `@email{}' command (see section `email' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/uref'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `@uref{}' command (see section `uref' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/kbd'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@kbd{@key{}}' command (see section `kbd' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/key'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@key{}' command (see section `key' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/pxref'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts an `@pxref{}' command (see section `pxref' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Macros/texi/ref'

This Texinfo syntax macro (see section PENG Tools Used As Syntax Macros) inserts a `@ref{}' command (see section `ref' in the Texinfo manual) at the current cursor position.

The PENG Built-In Tool `Tools/Grep'

Invokes `grep' to find something (by default, the current word in the current editor) in a list of files (by default, all source files in the current directory), and shows the results in PENG's message window, so you can easily view or edit the places found in a text editor.

Under `Tools/Files to grep' (see section The PENG Built-In Tool Variable `Tools/Files to grep'), you can change the default list of files, e.g., to provide a list of directories where you keep your source files, so they will always be searched.

The PENG Built-In Tool `Tools/Calculator'

Lets you enter a mathematical expression using real or complex numbers, and evaluates it. (What a surprise! ;-) For the operations available, see section `MATH' (*).

The PENG Built-In Tool `Tools/Evaluate'

Lets you enter an expression to be evaluated. Currently, this is the same as `Tools/Calculator' (see section The PENG Built-In Tool `Tools/Calculator'), but when PENG will support a debugger, it will use the debugger's functionality to evaluate expressions in the source language, using variables from the running program etc. ...

The PENG Built-In Tool `Tools/Man page'

Opens a man page in a read-only window, so you can easily copy and paste from it. Of course, you can also enter the man page section, e.g., `1 man' to get the manual of the `man' program in section 1.

The PENG Built-In Tool `Tools/Create orig'

Copies the current file to a file name obtained by appending `.orig' to the current file name. Useful if you want to make changes to a file and create a diff later (see section `Overview' in the diff manual). Uses the `-i' option to `cp', so it won't overwrite an existing `.orig' file without confirmation.

The PENG Built-In Tool `Tools/Insert uuencoded'

Lets you select a file, and inserts it into the current editor after uuencoding it. Removes the original file after asking for confirmation.

The PENG Built-In Tool `Tools/Insert gzipped and uuencoded'

Lets you select a file, and inserts it into the current editor after uuencoding and gzipping it. Removes the original file after asking for confirmation.

The PENG Built-In Tool `Tools/Rename'

Lets you select a file, and rename or move it, while you can edit the original file name to get the new one (especially useful for small changes in long file names).

Of course, PENG is not going to be a complete file manager, but some small jobs can easily be done using the available PENG tool functions (see section Tool Functions)...

The PENG Built-In Tool `Tools/ChangeLog entry'

Opens the ChangeLog file specified under `Tools/Settings/ChangeLog file name' (see section The PENG Built-In Tool Variable `Tools/Settings/ChangeLog file name') and inserts a new entry at the top, using the current date and your name and email address specified under `Tools/Settings/Name' (see section The PENG Built-In Tool Variable `Tools/Settings/Name') and `Tools/Settings/Mail address' (see section The PENG Built-In Tool Variable `Tools/Settings/Mail address').

The PENG Built-In Tool `Tools/Calendar'

Shows a calendar of the current month in a read-only window, using the `gcal' program (see section `Gcal' in the Gcal manual). I don't know why, but it seems that an IDE must have a calendar function... ;-)

The PENG Built-In Tool Variable `Tools/Files to grep'

Here you can specify a list of files that the `Tools/Grep' tool (see section The PENG Built-In Tool `Tools/Grep') will search by default. For any particular `grep' invocation, you can override the default.

The string entered here is given to the shell, and therefore may contain any wildcard characters your shell understands. The default will search all files with some known source extensions in the current directory.

The `Tools/Settings' Submenu

The PENG Built-In Tool Variable `Tools/Settings/Name'

Your real name which you can enter here will be used by the `Tools/ChangeLog entry' tool (see section The PENG Built-In Tool `Tools/ChangeLog entry'), but, of course, you can define other tools using this variable if they need the real name and you want to enter it in only one place.

The PENG Built-In Tool Variable `Tools/Settings/Mail address'

Your email address which you can enter here will be used by the `Tools/ChangeLog entry' tool (see section The PENG Built-In Tool `Tools/ChangeLog entry'), but, of course, you can define other tools using this variable if they need the email address and you want to enter it in only one place.

The PENG Built-In Tool Variable `Tools/Settings/ChangeLog file name'

Here you can specifiy the name of the ChangeLog file in which you want `Tools/ChangeLog entry' (see section The PENG Built-In Tool `Tools/ChangeLog entry') to insert your entries.

The `Options' Menu

Besides the items listed here, this menu may contain additional tools and variables defined with an `/Options' prefix (see section Tools).

The `Options/Editor1' Submenu

The editor options have been split into two submenus, this one and `Options/Editor2' (see section The `Options/Editor2' Submenu), because they were becoming too many for one menu (though there is no limit on the size of a menu in PENG, considerations about screen size and available shortcut keys indicate the need for separate menus).

Generally, this menu contains those options that are typically changed more frequently, while `Options/Editor2' contains those that are often only set once after installing PENG and rarely touched later. However, the distinction may be a bit arbitrary in some cases.

The Menu Entry `Options/Editor1/Auto copy'

If this option is on, marked text will automatically be copied to the clipboard, like `Edit/Copy' does (see section The Menu Entry `Edit/Copy'). An exception is when it is deleted (with `Edit/Delete' (see section The Menu Entry `Edit/Delete') or CTRL-DEL) immediately after marking, because otherwise `Edit/Delete' would do the same as `Edit/Cut' (see section The Menu Entry `Edit/Cut').

The Menu Entry `Options/Editor1/Persistent blocks'

If this option is off, blocks can be marked with SHIFT and are cleared as soon as the cursor is moved while SHIFT is not pressed. If it is on, blocks can be marked with SHIFT or with CTRL-KB/CTRL-KK (see section Keys Used In The Text Editor), and the cursor can be moved independently of the marked block.

The Menu Entry `Options/Editor1/Delete blocks'

If this option is on, DEL and BACKSPACE will delete a block if one is marked, and have their normal function otherwise.

The Menu Entry `Options/Editor1/Volatile blocks'

If this option is on, marked blocks will be deleted before insertions, including TAB, CTRL-V, CTRL-N, and ENTER when used for insertion.

The Menu Entry `Options/Editor1/Indent'

If this option is on, new lines inserted into a text editor will be indented with spaces, tabs and (possibly multiple) occurences of the quote string (see section The Menu Entry `Options/Editor1/Quote string') and the mark string (see section The Menu Entry `Options/Editor1/Mark string') to match the previous line.

The Menu Entry `Options/Editor1/Paragraphs'

If this option is on, blocks of lines that have the same indentation and quotation level, determined by leading spaces and (possibly multiple) leading occurences of the quote string (see section The Menu Entry `Options/Editor1/Quote string') and the mark string (see section The Menu Entry `Options/Editor1/Mark string') are treated as paragraphs, separated by empty lines.

In particular, the cursor and words are wrapped automatically between the lines when they reach the length given under `Options/Editor2/Line width' (see section The Menu Entry `Options/Editor2/Line width'). ENTER and CTRL-N have twice the usual effect, so they create an empty line and start a new paragraph.

This mode is useful, e.g., for editing mail, news, TeX, HTML, etc. It can be applied to certain files only (see section The Menu Entry `Options/Editor2/Paragraphs in files').

This mode implies `Trim trailing spaces' (see section The Menu Entry `Options/Editor2/Trim trailing spaces'), because the notion of "trailing" is quite pointless when considering lines as parts of paragraphs.

Please note: Block operations and line deletions with CTRL-Y are not affected, so they can be used as an escape to override the paragraph structure.

The Menu Entry `Options/Editor1/Quote string'

Here you can specify a string considered to start each line of a quotation in a text (usually `> ' in mail and news messages). This is relevant for quote protection (see section The Menu Entry `Options/Editor1/Protect quotes'), indentation (see section The Menu Entry `Options/Editor1/Indent'), and can be inserted before each line of a block of text (see section Keys Used In The Text Editor).

The Menu Entry `Options/Editor1/Mark string'

Here you can specify a string considered to start each line of some markup in a text (e.g., `: ' to mark some included foreign text in mail and news messages). This is relevant for indentation (see section The Menu Entry `Options/Editor1/Indent'), and can be inserted before each line of a block of text (see section Keys Used In The Text Editor).

The Menu Entry `Options/Editor1/Protect quotes'

If this option is on, quoted lines can only be split and merged, but not edited otherwise without special confirmation. If confirmation is given, it will remove the protection for the current file, until it is closed and reopened, or PENG is restarted.

When both quote protection and paragraph mode (see section The Menu Entry `Options/Editor1/Paragraphs') are on, inserting a line with ENTER into a quoted line will also cause unquoted empty lines to be inserted between the parts of the line, and the cursor to be placed onto the empty lines, which is very practical for replying to mail and news.

Like paragraph mode, quote protection does not affect block operations, for the same reason. Quote protection also disables automatic reformatting of quoted paragraphs (e.g., after splitting or merging them) when paragraph mode is on.

The Menu Entry `Options/Editor1/Line numbers'

If this option is on, text editors will show the line numbers of all lines on the screen at the left side. The width reserved for line numbers can be set under `Options/Editor2/Line number width' (see section The Menu Entry `Options/Editor2/Line number width').

The `Options/Editor2' Submenu

The editor options have been split into two submenus, this one and `Options/Editor1' (see section The `Options/Editor1' Submenu) (see the rationale given there).

Generally, this menu contains those options that are often only set once after installing PENG and rarely touched later, while `Options/Editor1' contains those that are typically changed more frequently. However, the distinction may be a bit arbitrary in some cases.

The Menu Entry `Options/Editor2/Backups'

PENG can make either simple or multiple (numbered) backups, each in either a short form (`.bak'; `.b00', `.b01', ...) or a long form (`~'; `.~1~', `.~2~', ...). Under Dos, of course, only the short form is available.

The Menu Entry `Options/Editor2/Backup directory'

Directory in which to create backup files (see section The Menu Entry `Options/Editor2/Backups'). Defaults to a temp directory, so that backup files don't clutter the data directories. It might be useful to have old files in that directory automatically removed by a cron job.

The Menu Entry `Options/Editor2/Clipboard file'

If a file name is entered here, the clipboard will be stored in this file, so it survives quitting and restarting PENG. However, since PENG only appends to the clipboard, the file should regularly be cleared, either manually, or with `Edit/Clear clipboard' (see section The Menu Entry `Edit/Clear clipboard'), or by a cron job. If no file name is entered, the clipboard will not be saved in a file, and its contents will be lost when quitting PENG.

The Menu Entry `Options/Editor2/Use lock files'

If this option is enabled, PENG will create a lock file for every file opened read-write, and if the lock file exists already, it won't open the file without confirmation.

This is to prevent two instances of PENG from editing the same file at the same time. The name of the lock file is the name of the file opened plus `.swp', like in `vim(1)' -- but note `Options/Editor2/Lock files with leading dot' (see section The Menu Entry `Options/Editor2/Lock files with leading dot'). Therefore, it also prevents PENG and `vim' from editing the same file at the same time.

Unlike `vim', PENG does not use the lock file to store any swap data, but maybe this will change. Currently, the only data stored in the lock file is a `vim' compatible header block, so `vim' will recognize PENG as the current editor of the file.

However, if PENG is terminated by a `TERM' or `HUP' signal (e.g., on system shutdown) while a file that has a lock file contains unsaved changes, a copy of the changed file is written into the lock file. Though PENG does not have a recovery function, it's possible to extract the modified file manually in emergency cases by just removing the header (the first 4096 bytes of the file). Editor windows that don't have a lock file are written without a header to a file with a temporary file name, usually in a temp directory. Since Dos can't handle the lock file name in most cases (and Dos programs usually don't get a `SIGHUP' or `SIGTERM' when the system is shut down ;-), this option is off by default in Dos.

The Menu Entry `Options/Editor2/Lock files with leading dot'

If this option is on, the lock file name (see section The Menu Entry `Options/Editor2/Use lock files') is preceded by a dot. That's what newer versions of `vim' (since 5.0 or so) do, so this option is on by default.

The Menu Entry `Options/Editor2/Leave editor with Esc'

If this option is on, you can go from a normal text editor window to the main menu with ESC. This option is on by default for the ease of first-time PENG users and users on terminals with limited function keys.

Please note: Info readers and message windows will always be closed with ESC, independently of this option.

The Menu Entry `Options/Editor2/Delete empty files'

If this option is on, whenever a text editor (more precisely, the last text editor opened on a given file) is closed whose contents are completely empty, the file on the disk is removed. If the option is set to `Ask', PENG will ask whether to remove it.

The Menu Entry `Options/Editor2/Always check file time'

If this option is on, PENG checks the modification time of the current file after each key pressed, and offers to reload the file if it was modified. This gives additional security against accidentally editing a file that was already modified by other means (see section The Menu Entry `Options/Editor2/Use lock files'), but can be time consuming on slower systems or when editing files on NFS mounted file systems. If the option is off, PENG only checks the time after selecting a function from a menu and at similar occasions.

If the option is on, PENG will also check the modification time of info files after each key pressed and, if modified, reload them without further request.

The Menu Entry `Options/Editor2/Move behind paste'

If this option is on, the cursor will be placed behind the inserted text after each insertion into a text editor, e.g., with `Edit/Paste' (see section The Menu Entry `Edit/Paste'). If it is off, it will be placed before it.

The Menu Entry `Options/Editor2/Multiple block operations'

If this option is on, the text editor allows multiple block operations to be done in a row without pressing CTRL-K every time (see section Keys Used In The Text Editor).

The Menu Entry `Options/Editor2/Trim trailing spaces'

If this option in on, trailing spaces at the end of a line will be removed automatically as soon as the line is modified in any way.

Please note: Undo operations (see section The Menu Entry `Edit/Undo') do not restore those spaces.

The Menu Entry `Options/Editor2/Expand tabs'

If this option is active, tab characters (ASCII #9) in files opened in a text editor will automatically be replaced by an appropriate amount of spaces. The number of columns where the tab positions are assumed to be can be given under `Options/Editor2/Tab size' (see section The Menu Entry `Options/Editor2/Tab size').

Please note: Expanding tabs can break files where tab characters are significant, in particular makefiles, so be careful with this option!

The Menu Entry `Options/Editor2/Use tabs'

If this option is active, the TAB key pressed in a text editor (see section Keys Used In The Text Editor) will insert a tab character (ASCII #9).

Otherwise it will indent the current line by filling with spaces up to the position after the next space in the previous (non-empty) line, and if there are no more spaces, insert the number of spaces given under `Options/Editor2/Indent width' (see section The Menu Entry `Options/Editor2/Indent width').

Note that even when this option is off, you can get a tab character by pressing CTRL-V TAB.

The Menu Entry `Options/Editor2/Write with tabs'

If this option is active, PENG will replace large amounts of leading spaces in a line by tab characters when saving text editor files. The number of columns where the tab positions are assumed to be can be given under `Options/Editor2/Tab size' (see section The Menu Entry `Options/Editor2/Tab size').

The Menu Entry `Options/Editor2/Tab size'

Here you can enter the tab size which is used for expanding tabs in text editor windows (see section The Menu Entry `Options/Editor2/Expand tabs') and info files (which is done automatically) and for writing files with tabs (see section The Menu Entry `Options/Editor2/Write with tabs'). The value is also set to the variable `TABSIZE' (see section Variables Set Automatically) when invoking PENG tools (see section Tools).

The Menu Entry `Options/Editor2/Indent width'

If `Options/Editor2/Use tabs' (see section The Menu Entry `Options/Editor2/Use tabs') is off, and there are no more spaces in the previous (non-empty) line, pressing TAB in a text editor will insert the number of spaces given here.

It also determines the number of spaces `\I' will expand to in an `INSERT' tool function (see section `INSERT' (*)), and, therefore, the indentation the syntax macros among the built-in PENG tools (see section PENG Tools Used As Syntax Macros) will use.

Set it to your favourite indentation depth.

The Menu Entry `Options/Editor2/Paragraphs in files'

Since the paragraph mode (see section The Menu Entry `Options/Editor1/Paragraphs') has a strong effect on editing, it can be enabled for only some kinds of files, e.g., for mail files, but not for associated data or program files that are often accessed while editing mail. Every file whose name (without directory, of course) matches the mask specified here will use the paragraph mode, if it is enabled at all.

The Menu Entry `Options/Editor2/Line width'

This determines the length of lines in paragraphs (see section The Menu Entry `Options/Editor1/Paragraphs').

The Menu Entry `Options/Editor2/Line number width'

This determines the width that line numbers are displayed when `Options/Editor1/Line numbers' (see section The Menu Entry `Options/Editor1/Line numbers') is enabled. Line numbers longer than the width given here will be truncated, but marked with a left arrow to avoid confusion.

The Menu Entry `Options/Editor2/Lexical highlighting'

Turns lexical highlighting in text editor windows on or off. Note that currently lexical highlighting is quite primitive.

The colors used for highlighting as well as the keywords recognized can be specified under `Options/Colors/Lex' (see section The `Options/Colors' Submenu).

The `Options/Environment' Submenu

The Menu Entry `Options/Environment/Frame windows'

If this option is on, all editor and info reader windows get a frame around them, and their status information is written onto the frame rather than into the top line.

The Menu Entry `Options/Environment/Screen size'

Shows the current screen size.

Under certain circumstances, it also allows you to change the screen size between 80x25 and 80x50 characters. Only implemented for DJGPP and local Linux consoles. For Linux consoles, it requires setfont to be installed and set up properly and to have the necessary permissions; if your current screen size is not 80x25 or 80x50, this might not work or produce unexpected screen sizes. If you prefer using other tools like `SVGATextMode(8)', you can call them on the command line, or as a PENG tool (see section Tools). PENG will react to the changed screen size automatically. On Linux consoles, resizing will affect all virtual consoles, not just the current one.

Under X11, the window size can't be changed with this menu item, but you can simply resize your window with the mouse (and however else your window manager may support it). On how to determine the size at start-up, please see section Resources For The X11 Version Of PENG.

The Menu Entry `Options/Environment/Clock'

Here you can choose if you want the current time, date, or both to be shown at the top right corner of PENG's screen.

The Menu Entry `Options/Environment/Control-Z to suspend'

If this option is enabled, CTRL-Z will suspend PENG, just like `File/Suspend' (see section The Menu Entry `File/Suspend') does.

The Menu Entry `Options/Environment/Control-C to exit'

If this option is enabled, CTRL-C will quit PENG, just like `File/Exit' (see section The Menu Entry `File/Exit') does.

The Menu Entry `Options/Environment/Simulate block cursor'

In editors and input boxes, PENG indicates insert mode by a block cursor, but not all terminals support this. If this option is active, PENG will simulate the block cursor with graphic characters.

The `Options/Colors' Submenu

In these submenus, you can edit all the colors used by PENG. You can specify separate colors for color terminals, X11 and monochrome terminals. The reason there are distinct colors for X11 is that on X11 often dark colors on light background are preferred, while on color terminals often light colors on dark background are preferred.

The first two lines in a color selection box can be used to select the foreground and background color, respectively, on a color terminal. The next two lines correspond to the color on X11. The last line offers some attributes for monochrome terminals (not all of which are available on all terminals, of course). To the left of the three fields, there is a sample character. For a list of keys used in the color selection boxes, see section Keys Used In Color Selection Boxes.

Most color definitions are optional. This is indicated by a hyphen (`-') on the left side of the color selection box. If no color is selected (i.e., the hyphen is selected), the next appropriate color will be used. E.g., the color of the main menu items defaults to that of normal menu items. It is possible to select a color only for one of foreground or background, and let the other one be determined by the next appropriate color. This is done a lot in the default settings, so you can easily change, e.g., the background color of the editor, by changing it under `Normal text' without having to change it under many items (but, of course, you can still select different backgrounds for the other items if you like).

Some optional colors use inverted versions of other colors (e.g., the inverted color of normal text for the color for marked text), and a few optional colors are handled specially, e.g., the foreground color for tab characters in the text editor. If this is not selected, tab characters are displayed as control characters, i.e., as `I' (because tab is ASCII #9 which is `Control-I') in the color of control characters. If that is not selected, all control characters will be invisible. The same holds for non-breaking spaces.

The Menu Entry `Options/Tools'

Lets you define, modify or remove tools (see section Defining Tools).

The Menu Entry `Options/Variables'

Lets you define, modify or remove variables (see section Defining Variables).

The Menu Entry `Options/Try a tool'

Lets you enter a tool command and apply it immediately without defining it as a tool (see section Tools).

The `Options/Message window' Submenu

The Menu Entry `Options/Message window/Message window size'

Specifies the number of lines the message window will occupy on the screen. This is independent of the number of messages it will accept (see section The Menu Entry `Options/Message window/Maximum number of messages').

The Menu Entry `Options/Message window/Message window at top'

Specifies if the message window will appear at the top or bottom of the screen.

The Menu Entry `Options/Message window/Ignore files'

Files whose names match this mask will not be opened when messages refer to them. Useful for names of binary files, e.g., object files and libraries and the linker itself, which may appear in linker messages, but should not be loaded into an editor.

The Menu Entry `Options/Message window/Automatically go to first message'

If this option is on, tools (see section Tools) with an `M' or `B' output redirection (see section Redirecting The Output Of Shell Tools) will automatically seek to the position of the first message in an editor window, so it can be edited immediately.

The Menu Entry `Options/Message window/Skip messages without line number'

If this option is on, movements in the message window (see section Keys Used In The Message Window) will skip over messages without line numbers (which are usually comments). Those messages are still shown, of course, but this way you can go to the messages with line numbers more easily. An exception is only when you move beyond the first or last message with a line number.

The Menu Entry `Options/Message window/Maximum number of messages'

Here you can specify the maximum number of messages the message window will accept. When a tool redirected to the message window (see section Redirecting The Output Of Shell Tools) produces more lines of output, it will be aborted.

This is independent of the size of the message window on the screen (see section The Menu Entry `Options/Message window/Message window size').

The `Options/Autosave' Submenu

The Menu Entry `Options/Autosave/Autosave'

If this option is enabled, all modified files and configuration (see section The Menu Entry `File/Save all') will automatically be saved repeatedly either after specified time intervals -- if the option is set to `Time', see `Options/Autosave/Autosave seconds' (see section The Menu Entry `Options/Autosave/Autosave seconds') -- or after a specified number of keys pressed -- if the option is set to `Keys', see `Options/Autosave/Autosave keys' (see section The Menu Entry `Options/Autosave/Autosave keys').

Please note: when unnamed files were modified, autosave will prompt for a file name to save. This can be irritating when it's unexpected.

The Menu Entry `Options/Autosave/Autosave seconds'

If `Options/Autosave/Autosave' (see section The Menu Entry `Options/Autosave/Autosave') is set to `Time', you can specify here the length in seconds of the intervals after which autosave happens.

The Menu Entry `Options/Autosave/Autosave keys'

If `Options/Autosave/Autosave' (see section The Menu Entry `Options/Autosave/Autosave') is set to `Keys', you can specify here the number of key presses after which autosave happens.

The Menu Entry `Options/Auto save options'

If this option is on, the configuration will be saved (see section The Menu Entry `Options/Save config file') on `File/Save all' (see section The Menu Entry `File/Save all'), when autosave happens (see section The Menu Entry `Options/Autosave/Autosave'), and when PENG is exited.

The Menu Entry `Options/Save minimal config'

If this option is on, only the permanent config settings are stored in config files. Temporary values such as the contents of input boxes, history lists, and the list of last windows are not.

To reduce an existing config file to the minimum, turn this option on, quit and restart PENG (otherwise the temporary values are still in memory), and turn the option back off if you want.

The Menu Entry `Options/Load config file'

Loads a configuration file (see section Format Of The Configuration Files).

The Menu Entry `Options/Save config file'

Saves the configuration to the current config file (see section Format Of The Configuration Files). If `Options/Auto save options' (see section The Menu Entry `Options/Auto save options') is on, this also happens automatically on `File/Save all' (see section The Menu Entry `File/Save all'), when autosave happens (see section The Menu Entry `Options/Autosave/Autosave'), and when PENG is exited.

The Menu Entry `Options/Save config file as'

Saves the configuration to a new file (see section Format Of The Configuration Files).

The `Options/Pascal' Submenu

The PENG Built-In Tool `Options/Pascal/Show sample GPC command line'

This shows the command line that would be given to GPC when applying the `Compile/Make' (see section The PENG Built-In Tool `Compile/Make') tool to a Pascal file.

It is dependent on the current settings in the `Options/Pascal' menu.

The PENG Built-In Tool Variable `Options/Pascal/Code generation'

Here you can select if you want to compile a draft (debugging) or a final (release) version of your Pascal programs.

This does not directly pass any switches to GPC, but decides whether the debug or release options (see section The PENG Built-In Tool Variable `Options/Pascal/Debug options', and section The PENG Built-In Tool Variable `Options/Pascal/Release options'; for cross-compilers see also section The PENG Built-In Tool Variable `Options/Pascal/Options for cross compilers/Extra debug options', and section The PENG Built-In Tool Variable `Options/Pascal/Options for cross compilers/Extra release options') will be given in addition to the general options (see section The PENG Built-In Tool Variable `Options/Pascal/General options'), and whether the debug or release unit destination path will be used (see section The PENG Built-In Tool Variable `Options/Pascal/Debug unit destination path', and section The PENG Built-In Tool Variable `Options/Pascal/Release unit destination path').

The PENG Built-In Tool Variable `Options/Pascal/Linking'

Here you can select if you want GPC to link the libraries used by your Pascal programs statically or dynamically.

Static linking is rarely recommendable, because it links all libraries, including e.g., `libc', statically which easily makes executables very large. Dynamic linking will, of course, link those libraries statically for which no dynamic versions exist. (In particular, under DJGPP, where dynamic linking is not implemented, this option will have no effect.)

The PENG Built-In Tool Variable `Options/Pascal/Language dialect'

Here you can select the dialect option given to GPC.

The default (`GNU Pascal', i.e., no special dialect option at all) should be OK for most purposes unless you want to make sure that your program conforms to the Standard Pascal or Extended Pascal standards, or you have a program written for BP which uses a lot of "dirty tricks".

The PENG Built-In Tool Variable `Options/Pascal/Target'

Here you can select the target platform for GPC.

The default (`Native') compiles for your current system, the other choices compile for particular systems. Of course, you have to have the proper cross-compiler installed. The list of systems given here is more or less arbitrary. You can easily add or remove some of them by modifying the tools (e.g., edit the PENG config file in a text editor and search for all occurrences of the name of one system, to easily find all places that need changes).

The PENG Built-In Tool Variable `Options/Pascal/Executable path'

Here you can select the directory in which GPC will store the executable created.

The PENG Built-In Tool Variable `Options/Pascal/Debug unit destination path'

Here you can select the directory in which GPC will store the compiled units and modules (`.o', `.gpi' and `.gpm' files) when compiling a debug version (see section The PENG Built-In Tool Variable `Options/Pascal/Code generation') with a native compiler (see section The PENG Built-In Tool Variable `Options/Pascal/Target'). When compiling with a cross-compiler, the name of the target platform will be appended to this directory automatically. The directory will be created if necessary.

You can specify a different directory for compilations for release (see section The PENG Built-In Tool Variable `Options/Pascal/Release unit destination path') so you can have the same units compiled, say, with and without optimization, and GPC will always use the right ones.

The PENG Built-In Tool Variable `Options/Pascal/Release unit destination path'

Here you can select the directory in which GPC will store the compiled units and modules (`.o', `.gpi' and `.gpm' files) when compiling a release version (see section The PENG Built-In Tool Variable `Options/Pascal/Code generation') with a native compiler (see section The PENG Built-In Tool Variable `Options/Pascal/Target'). When compiling with a cross-compiler, the name of the target platform will be appended to this directory automatically. The directory will be created if necessary.

You can specify a different directory for compilations for debugging (see section The PENG Built-In Tool Variable `Options/Pascal/Debug unit destination path') so you can have the same units compiled, say, with and without optimization, and GPC will always use the right ones.

The PENG Built-In Tool Variable `Options/Pascal/Unit path'

Here you can specify a list of directories, spearated by `:' (`;' under Dos), where GPC will search for units used.

The PENG Built-In Tool Variable `Options/Pascal/Object path'

Here you can specify a list of directories, spearated by `:' (`;' under Dos), where GPC will search for object files and files in other languages (e.g., C or assembler) used.

The PENG Built-In Tool Variable `Options/Pascal/Include path'

Here you can specify a list of directories, spearated by `:' (`;' under Dos), where GPC will search for include files used.

The PENG Built-In Tool Variable `Options/Pascal/Library path'

Here you can specify a list of directories, spearated by `:' (`;' under Dos), where GPC will search for libraries used.

The PENG Built-In Tool Variable `Options/Pascal/Debug options'

Here you can specify any additional command line options which will be given to GPC for debug compilations (see section The PENG Built-In Tool Variable `Options/Pascal/Code generation'), such as a define `-DDEBUG' which can be tested in a program with `{$ifdef DEBUG}' to determine whether to do some additional sanity checks.

The PENG Built-In Tool Variable `Options/Pascal/Release options'

Here you can specify any additional command line options which will be given to GPC for release compilations (see section The PENG Built-In Tool Variable `Options/Pascal/Code generation'), such as optimization options (e.g., `-O3').

The PENG Built-In Tool Variable `Options/Pascal/General options'

Here you can specify command line options which will be given to GPC for any compilation. The `--automake' option will be given automatically, but any other options you want every compilation to use, such as `--executable-file-name' or some warning options, can be specified here.

The PENG Built-In Tool Variable `Options/Pascal/Use GP'

Here you can specify if you want to call GPC directly with the `--automake' and `--executable-file-name' options or the GP make utility. GP will replace GPC's `--automake' feature soon, and then, this option will disappear from the PENG tools.

The PENG Built-In Tool Variable `Options/Pascal/Options for cross compilers/Executable path'

These are actually several menu entries which have the respective target system name (see section The PENG Built-In Tool Variable `Options/Pascal/Target') appended to them.

Here you can specify the directory where executables cross-compiled by GPC for the respective target will be stored rather than in the regular executable path (see section The PENG Built-In Tool Variable `Options/Pascal/Executable path').

The PENG Built-In Tool Variable `Options/Pascal/Options for cross compilers/Extra options'

These are actually several menu entries which have the respective target system name (see section The PENG Built-In Tool Variable `Options/Pascal/Target') appended to them.

Here you can specify command-line options which will be given to GPC for cross-compilations (see section The PENG Built-In Tool Variable `Options/Pascal/Code generation') for the respective target system, in addition to the regular options (see section The PENG Built-In Tool Variable `Options/Pascal/General options').

The PENG Built-In Tool Variable `Options/Pascal/Options for cross compilers/Extra debug options'

These are actually several menu entries which have the respective target system name (see section The PENG Built-In Tool Variable `Options/Pascal/Target') appended to them.

Here you can specify command-line options which will be given to GPC for debugging cross-compilations (see section The PENG Built-In Tool Variable `Options/Pascal/Code generation') for the respective target system, in addition to the regular debug options (see section The PENG Built-In Tool Variable `Options/Pascal/Debug options').

The PENG Built-In Tool Variable `Options/Pascal/Options for cross compilers/Extra release options'

These are actually several menu entries which have the respective target system name (see section The PENG Built-In Tool Variable `Options/Pascal/Target') appended to them.

Here you can specify command-line options which will be given to GPC for release cross-compilations (see section The PENG Built-In Tool Variable `Options/Pascal/Code generation') for the respective target system, in addition to the regular release options (see section The PENG Built-In Tool Variable `Options/Pascal/Release options').

The `Options/C' Submenu

The PENG Built-In Tool Variable `Options/C/General options'

Here you can specify command line options which will be given to GCC for any compilation.

The GCC options should probably be more elaborate, like the Pascal options, but perhaps some C programmer likes to do that...

The `Window' Menu

The Menu Entry `Window/Redraw screen'

Redraws PENG's screen. Useful if it got corrputed, e.g., by some console messages.

The Menu Entry `Window/Messages'

Opens the message window, in which messages created by tools (see section Tools) are shown, see the `m' and following tool output redirections (see section Redirecting The Output Of Shell Tools).

Note that tools will open the message window automatically when necessary, but you can use this function as a comfortable way to bring the message window back to the top, or even to re-open it after you have closed it. The messages in the message window will not be lost when you close it, until another tool redirects its output to the message window.

The Menu Entry `Window/Next'

Brings the lowest window to the top.

The Menu Entry `Window/Previous'

Puts the topmost window to the bottom.

The Menu Entry `Window/Close'

Closes the current window. This is equivalent to `File/Close' (see section The Menu Entry `File/Close') to suit different preferences. :-)

The Menu Entry `Window/List'

Shows you a list of all currently open windows. You can select one of them to bring it to the top, and you can close windows with DEL.

The Menu Entry `Window/Last windows'

Lets you select a window from a list of windows that were recently closed.

The Menu Entry `Window/Hotlist'

Lets you select a window from the Hotlist (see section The Menu Entry `Window/Add to Hotlist').

The Menu Entry `Window/Add to Hotlist'

This allows you to keep a list of commonly opened files or other editors to be opened easily. After opening an editor in the usual way, you can add it to the Hotlist, and after that, open it easily from the Hotlist. You can remove items from the Hotlist with DEL, as usual. When you add an entry that's already in the Hotlist, it will become the first entry of the Hotlist. This can be used to reorder the Hotlist.

The `Help' Menu

Besides the items listed here, this menu may contain additional tools and variables defined with an `/Help' prefix (see section Tools).

The Menu Entry `Help/Help'

Opens the PENG documentation in an info reader. You're reading it right now. :-)

This function is context-sensitive, i.e., it will try to find the info node most relevant to your current action. Note that some kinds of actions (e.g., menu selections and input boxes) get aborted by this function. This is because it opens an info reader as a normal window so you can use it in the usual way, e.g., follow links in it.

About the keys that work in an info reader, see section Keys Used In The Info Reader.

The Menu Entry `Help/PENG Help'

Opens the top node of the PENG documentation in an info reader, from which you can read the whole PENG documentation by going through the info menus.

About the keys that work in an info reader, see section Keys Used In The Info Reader.

The Menu Entry `Help/Info'

Opens the top of the info tree, provided you got a `dir' or `dir.info' file installed in the info path.

This is the node `(dir)' in the info node format (see section The Format Of An Info Node Description).

The Menu Entry `Help/Info node'

Lets you enter an info node to be opened in an info reader (see section The Format Of An Info Node Description).

The Menu Entry `Help/Info file'

Opens the info file whose name you enter in an info reader. This is the same as entering the file name in parentheses in `Help/Info node' (see section The Menu Entry `Help/Info node'), see section The Format Of An Info Node Description.

The Format Of An Info Node Description

An info node in PENG can be specified in the same format as accepted by other info readers (see section `Adding a new node to Info' in the info manual).

The general format is `(filename) nodename'.

filename, together with the parentheses, may be omitted. In this case, the node is assumed to be in the current file (or the PENG documentation when opening a new info reader).

If filename is given, is it searched for in the directories given in the `INFOPATH' (or `INFODIR' if `INFOPATH' is not set) environment variable, unless it contains an absolute path or a path starting with `./'.

The file extension `.info' is appended automatically if necessary. As an extension, PENG also recognizes the extension `.inf' which may have been used for info files created on filename-challenged operating systems.

Info nodes compressed by `compress(1)', `gzip(1)' or `bzip2(1)' are uncompressed automatically, provided the uncompressor (`uncompress', `gunzip' or `bunzip2', respectively) can be found in your path. File names are case-sensitive on most systems, but PENG will also try the lower case version of an info file name that contains any capital letters.

nodename specifies the name of the node in the file. Node names are sensitive to special characters including embedded whitespace, but case-insensitive.

nodename can be omitted. Then it defaults to `Top' which is by convention the main node in most info files.

If nodename is `*', it refers to the whole file given by filename.

PENG's info reader contains a caching mechanism which will keep info files in memory even for some time after they have been closed. This is done to reduce the time needed to go back to the info file, e.g., with `Help/Last help' (see section The Menu Entry `Help/Last help') -- especially for compressed info files which will not have to be uncompressed again.

PENG will reload info files when they change. It will check for changes at the same times that text editors do, see `Options/Editor2/Always check file time' (see section The Menu Entry `Options/Editor2/Always check file time'), and whenever you go to a new info node.

The Menu Entry `Help/Last help'

This function depends on the info readers currently open:

If the foreground window contains an info reader, it goes back to the previous info node. Multiple back-stepping in a row is possible (up to a maximum of currently 32 nodes).

If the foreground window does not contain an info reader, it brings the topmost info reader to the top.

If no info reader is opened, it re-opens the last info reader closed.

Finally, if no info reader has ever been open in this PENG session, it opens the top node of the PENG documentation in an info reader (see section The Menu Entry `Help/PENG Help').

The Menu Entry `Help/ASCII table'

Opens a read-only editor which contains a table of the character set used on the system (usually ASCII with extensions, e.g., ISO-8859-1). In particular, you can copy and paste special characters from this table which you may not be able to enter on your keyboard.

The Menu Entry `Help/About'

Shows the About box of PENG with copyright notice. There are no hidden 3D adventures in it. ;-)

The PENG Built-In Tool `Help/Syntax help'

This function tries to find help on the current word in the current editor.

Depending on the language (as determined by the file extension), it uses the following information sources (where foo stands for the current word):

Pascal:
It tries to find the info node `(gpc) foo', i.e., the topic foo in the GPC documentation (see section `GNU Pascal' in the GNU Pascal manual). If this fails, it tries to find a man page for foo.
C:
It searches for foo in the function index of the libc documentation (see section `Function Index' in the libc manual), and follows the link if found. If this fails, it tries to find a man page for foo.
Texinfo:
It searches for foo in the command and variable index of the Texinfo documentation (see section `Command and Variable Index' in the Texinfo manual), and follows the link if found.
LaTeX:
It searches for foo in the command index of the LaTeX documentation (see section `Command Index' in the LaTeX manual), and follows the link if found.
Other files:
It tries to find a man page for foo.


Go to the first, previous, next, last section, table of contents.