NAME¶
fp - Free Pascal Compiler (FPC) integrated development environment
SYNOPSIS¶
fp [options] [sourcefile]
DESCRIPTION¶
This binary is the integrated development environment of the
Free Pascal
Compiler (FPC) which is an advanced
Turbo Pascal and
Delphi
(7.0) compatible multitarget Pascal compiler. The compiler engine is not
based on GCC, but is completely standalone.
The compiler uses
LD(1) and can use
AS(1) (see parameter -Aas),
but also has its own binary object writer.
The current main targets are
Go32V2 (Dos DJGPP extender),
Freebsd,
Linux, MacOS, MacOSX, MorphOS, Netware,
OS/2 and
Win32. The other targets (M68K compilers for Atari and
Amiga) are either based on older versions of the compiler or are still in
development.
This manpage is meant for quick-reference only. FPC comes with a great (2000+
pages) manual, which is updated constantly, while this man page can be out of
date.
Usage¶
The user interface of the IDE has been designed to be similar to Turbo Pascal.
It provides the user with a user friendly, but rather powerful editor, an
extensive on-line help system and a debugger.
A text mode windowing system is the base of the user interface. The mouse is
supported, but most people will use the keyboard. The user will usually open a
few text editor windows in which he will design his program, during which he
can regularly check and debug through the use of hot keys. The high speed of
the compiler ensures that programmers can do this often and therefore allows
speedy development of code.
Help files¶
No help files are provided by default. The user must download the Free Pascal
documentation in HTML format and install it into the IDE using the
Help->Files menu. Turbo Pascal .tph files can also be installed in this
menu and can be useful for source code that ships with
.tphfiles
asdocumentation.
Character sets¶
The IDE has been designed for VGA text mode fonts. These fonts allow visually
more interresting text modes than the the VT100 fonts normally used on Unix
systems and also more portable, since most operating systems use VGA character
sets for their text modes.
When running on a VT100 compatible terminal, some emulation will occur.
Internally the IDE will think it is running on a VGA text mode font (most
likely code page 850), while all characters will (in the case of code page
850) be converted to Latin-1 and VT100 alternate character set characters.
The Linux console can do VGA fonts and therefore the IDE can be viewed as it was
intended on it. The Linux console mode supports the all of the VGA character
set through the /dev/vcsa* devices and most of it through normal escape
sequences. To prevent bad user experiences, the IDE has been made rather
aggressive in using VGA character sets. First it will determine the actual
console number you are running on (even if you run on a pty, like in Midnight
Commander). Then the IDE will open the /dev/vcsa* device belonging to that
console. If permission is denied the IDE will call the grab_vcsa utility,
which is a setuid root utility which will grant permissions to the vcsa
device.
In case the vcsa device is not available, the IDE will send escape codes to
enable the VGA font. In this mode a few characters in the low 32 ascii
positions are unavailable, but mainly since the full set of line drawing
characters is available the user will notice few differences.
The Linux frame buffer device and the Free Pascal IDE are an excellent
combination. With fbdev it is possible to use text mode resolutions higher
than the normal 80x25, which allows the programmer to see a lot more code at a
time.
The Linux console allows the user to load user defined fonts. If you do this,
such a font must have a VGA styled layout, i.e. code page 437/850/... (Note
that this does not mean your file system has to use such an encoding, the
Linux console handles the conversion from ISO-8859-1, UTF-8 or whatever to the
font.) Since the default fonts have a code page 437 layout, only users that
have experimented with fonts will have to take care here.
The IDE recognizes the environment variable CONSOLEFONT_CP in which you can
specify the code page of the console font. Recognized values are currently
"cp437" and "cp850". If you do not set this variable code
page 437 will be assumed. Currently, if you use code page 850 without setting
the variable there won't be a huge impact at this time, the characters that
the IDE uses exist in both code pages.
Note: KOI8-R/KOI8-U fonts have all required characters, but the line drawing
characters are not in the right positions. We may support this in the future,
but currently do not.
Keyboard¶
Unix keyboard handling is a complicated matter because not all key combinations
generate escape codes, different terminal emulators generate different escape
codes, and some key combinations may trigger actions in the X11 Window
manager.
Because the Free Pascal IDE's user interface is designed to be similar to Turbo
Pascal, including keyboard commands, you may experience one of the above
situations. Some alternative keys have been added, and perhaps more will have
to be added in the future.
When running on the Linux console, the keyboard is reprogrammed for full
functionality.
Here are some common problems you may encounter and possible work-arounds:
Problem: Selecting text with shift+arrow keys does not work.
Solution: Use the mouse
Solution: Use "ctrl+k b" to mark start of block,"ctrl+k
e" to mark end of block, "ctrl+k h" to hide the block.
Problem: Cut/Copy/Paste keys do not work.
Solution: Go to Options->Environment->Keyboard & mouse and
enable the Microsoft styled Cut/Copy/Paste keys.
Solution: Use the menu bar.
Problem: Alt key does not work.
Solution: Press Escape first, then the key without alt. Note that this is
not possible on the Linux console, but the Alt key does work there.
If for whatever reason the reprogrammed Linux console keyboard is not restored
to the original state after exit (IDE crash?), you can do something like
"/etc/init.d/kbd start" to reprogram it into its normal behaviour.
AUTHORS¶
Free Pascal development team (see
http://www.freepascal.org)
SEE ALSO¶
grab_vcsa fpc fpc.cfg(5)
ppdep(1)
ppudump(1)
ppumove(1)
ptop(1)
h2pas(1)
ld(1)
as(1)