1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731 |
- %
- % $Id$
- % This file is part of the FPC documentation.
- % Copyright (C) 2000 by Florian Klaempfl
- %
- % The FPC documentation is free text; you can redistribute it and/or
- % modify it under the terms of the GNU Library General Public License as
- % published by the Free Software Foundation; either version 2 of the
- % License, or (at your option) any later version.
- %
- % The FPC Documentation is distributed in the hope that it will be useful,
- % but WITHOUT ANY WARRANTY; without even the implied warranty of
- % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- % Library General Public License for more details.
- %
- % You should have received a copy of the GNU Library General Public
- % License along with the FPC documentation; see the file COPYING.LIB. If not,
- % write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- % Boston, MA 02111-1307, USA.
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % The IDE
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \chapter{The IDE}
- The IDE (\textbf{I}ntegrated \textbf{D}evelopment \textbf{E}nvironment)
- provides a comfortable user interface to the compiler. It contains an
- editor with syntax highlighting, a debugger, symbol browser etc.
- The IDE is a text-mode application which has the same look and feel
- on all supported operating systems. It is modelled after the IDE of Turbo
- Pascal, so many people should feel comfortable using it.
- Currently, the IDE is available for \dos, \windows and \linux.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % First steps with the IDE
- \section{First steps with the IDE}
- %
- % Starting the IDE
- %
- \subsection{Starting the IDE}
- The IDE is started by entering the command:
- \begin{verbatim}
- fp
- \end{verbatim}
- at the command line. It can also be started from a graphical user
- interface such as \windows.
- \begin{remark}
- Under \windows, it is possible to switch between windowed mode and
- full screen mode by pressing \key{Alt-Enter}).
- \end{remark}
- %
- % IDE command-line options.
- %
- \subsection{IDE Command line options}
- When starting the IDE, command line options can be passed:
- \begin{verbatim}
- fp [-option] [-option] ... <file name> ...
- \end{verbatim}
- \var{Option} is one of the following switches (the option letters
- are case insensitive):
- \begin{description}
- \item [-N] (\dos only) Do not use long file names. \windows 95 and later
- versions of \windows provide an interface to DOS applications to access
- long file names.
- The IDE uses this interface by default to access files. Under certain
- circumstances, this can lead to problems. This switch tells the IDE not to
- use the long filenames.
- \item [-Cfilename] This option, followed by a filename, tells the IDE to
- read its options from \file{filename}. There should be no whitespace between
- the file name and the \var{-C}.
- \item [-F] use alternative graphic characters. This can be used to run the
- IDE on \linux in an X-term or through a telnet session.
- \item [-R] After starting the IDE, it changes automatically to the directory
- which was active when the IDE exited the last time.
- \item [-S] Disable the mouse. When this option is used, then the mouse is
- disabled, even if a mouse is present.
- \item[-Tttyname] (linux/unix only) Sends program output to tty \var{ttyname}.
- This is useful so one doesn't have to switch between program output and ide
- all the time.
- \end{description}
- The files given at the command line are loaded into edit windows automatically.
- \begin{remark}
- Under DOS/Win32, the first character of a command-line option can be a \var{/}
- character instead of a \var{-} character. So \var{/S} is equivalent to \var{-S}.
- \end{remark}
- \subsection{The IDE screen}
- After start up, the screen of the IDE can look like \seefig{idestart}.
- \FPCpic{The IDE screen immediately after startup}{}{idestart}
- At top of the screen the \emph{menu bar} is visible, at the bottom
- the \emph{status bar}. The empty space between them is called the
- \emph{desktop}.
- The status bar shows the keyboard shortcuts for frequently used
- commands, and allows quick access to these commands by clicking
- them with the mouse.
- At the right edge of the status bar, the current amount of unused
- memory is displayed. This is only an indication, since the IDE
- tries to allocate more memory from the operating system if it
- runs out of memory.
- The menu provides access to all of the IDE's functionality, and
- at the right edge of the menu, a clock is displayed.
- The IDE can be left by selecting \menu{File|Exit} in the menu
- \footnote{\menu{File|Exit} means select the item 'Exit' in the menu 'File'.}
- or by pressing \key{Alt-X}.
- \begin{remark}
- If a file \file{fp.ans} is found in the current directory,
- then it is loaded and used to paint the background.
- This file should contain ANSI drawing commands to draw on a screen.
- \end{remark}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Navigating in the IDE
- \section{Navigating in the IDE}
- The IDE can be navigated both with the keyboard and with a mouse, if the
- system is equipped with a mouse.
- %
- % Using the keyboard
- %
- \subsection{Using the keyboard}
- All functionality of the IDE is available through use of the keyboard.
- \begin{itemize}
- \item It is used for typing and navigating through the sources.
- \item Editing commands such as copying and pasting text.
- \item Moving and resizing windows.
- \item It can be used to access the menu, by pressing \key{ALT} and the
- appropriate highlighted menu letter, or by pressing \key{F10} and
- navigating through the menu with the arrow keys.
- more information on the menu can be found in \sees{idemenu}
- \item Many commands in the IDE are bound to shortcuts, i.e. typing a special
- combination of keys will execute a command immediately.
- \end{itemize}
- \begin{remark}
- \begin{itemize}
- \item When working in a \linux X-Term or through a telnet session, the
- key combination with \key{Alt} may not be available. To remedy this, the
- \key{Ctrl-Z} combination can be typed first. This means that e.g. \key{Alt-X}
- can be replaced by \key{Ctrl-Z X}.
- \item A complete reference of all keyboard shortcuts can be found in
- \sees{keyshortcuts}.
- \end{itemize}
- \end{remark}
- %
- % Using the mouse
- %
- \subsection{Using the mouse}
- \label{suse:mouseusage}
- If the system is equipped with a mouse, it can be used to work with the
- IDE. The left button is used to select menu items, press buttons, select
- text blocks etc.
- The right mouse button is used to access the local menu, if available.
- Holding down the \key{Ctrl} or \key{Alt} key and clicking the right
- button will execute user defined functions, see \sees{prefmouse}.
- \begin{remark}
- \begin{enumerate}
- \item Occasionally, the manual uses the term "drag the mouse". This
- means that the mouse is moved while the left mouse button is being
- pressed.
- \item
- The action of mouse buttons may be reversed, i.e. the actions of the left
- mouse button can be assigned to the right mouse button and vice versa
- \footnote{See \sees{prefmouse} for more information on how to reverse the
- actions of the mouse buttons.}. Throughout the manual, it is assumed
- that the actions of the mouse buttons are not reversed.
- \item
- The mouse is not always available, even if a mouse is installed:
- \begin{itemize}
- \item The IDE is running under \linux through a telnet connection from
- a \windows machine.
- \item The IDE is running under \linux in an X-term under X-windows.
- \end{itemize}
- \end{enumerate}
- \end{remark}
- %
- % Navigating in dialogs
- %
- \subsection{Navigating in dialogs}
- \label{se:navigatingdialogs}
- Dialogs usually have a lot of elements in them such as buttons, edit fields,
- memo fields, list boxes and so on. To activate one of these fields, it is
- sufficient to:
- \begin{enumerate}
- \item Click on the element with the mouse.
- \item Press the \key{Tab} key till the focus reaches the mouse
- \item Press the highlighted letter in the element's label. If the focus
- is currently on an element that allows to edit, then \key{Alt} should be
- pressed simultaneously with the highlighted letter. For a button, the action
- associated with the button will then be executed.
- \end{enumerate}
- Inside edit fields, list boxes, memos, navigation is carried out with the
- usual arrow key commands.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Windows
- \section{Windows}
- \label{se:windows}
- Nowadays, working with windowed applications should be no problem for
- most \windows and \linux users. Nevertheless, the following section
- describes how the windows work in the \fpc IDE, to allow efficient
- work with it.
- %
- % Window basics
- %
- \subsection{Window basics}
- \label{se:windowbasics}
- A common IDE window is displayed in \seefig{idewin}.
- \FPCpic{A common IDE window}{}{idewin}
- The window is surrounded by a so-called \emph{frame}, the white double
- line around the window.
- At the top of the window 4 things are displayed:
- \begin{itemize}
- \item
- At the upper left corner of the window, a \emph{close icon} is shown.
- When clicked, the window will be closed. It can be also closed by
- pressing \key{Alt-F3} or selecting the menu item \menu{Window|Close}.
- All open windows can be closed by selecting the menu item
- \menu{Window|Close all}.
- \item In the middle, the title of the window is displayed.
- \item Almost at the upper right corner, a number is visible.
- This number identifies the editor window, and pressing \key{Alt-Number}
- will jump to this window. Only the first 9 windows will get such a number.
- \item At the upper right corner, a small green arrow is visible.
- Clicking this arrow zooms the window so it covers the whole desktop.
- Clicking this arrow on a zoomed window will restore old size of the
- window. Pressing the key \key{F5} has the same effect as clicking
- that arrow. The same effect can be achieved with the menu item
- \menu{Window|Zoom}.
- Windows and dialogs which aren't resizeable can't be zoomed, either.
- \end{itemize}
- The right edge and bottom edges of a window contain scrollbars.
- They can be used to scroll the window contents with the mouse.
- The arrows at the ends of the scrollbars can be clicked to scroll the
- contents line by line. Clicking on the dotted area between the arrows
- and the cyan-coloured rectangle will scroll the window's content
- page by page. By dragging the rectangle the content can be scrolled
- continuously.
- The star and the numbers in the lower left corner of the window
- display information about the contents of the window. They
- are explained in the section about the editor, see \sees{editingtext}.
- %
- % Sizing+moving windows
- %
- \subsection{Sizing and moving windows}
- \label{se:windowsizingmoving}
- A window can be moved and sized using the mouse and the keyboard:
- To move a window:
- \begin{itemize}
- \item using the mouse, click on the title bar and drag the window
- with the mouse.
- \item using the keyboard, go into the size/move mode
- by pressing \key{Ctrl-F5} or selecting the menu item
- \menu{Window|Size/Move}. . Using the cursor keys the window can be moved.
- The size/move mode can be left by pressing \key{Enter}.
- In this case, the window will keep its size and position.
- Alternatively, pressing \key{Esc} will restore the old position.
- \end{itemize}
- To resize a window:
- \begin{itemize}
- \item using the mouse, click on the lower right corner of the window
- and drag it.
- \item using the keyboard, go into the size/move mode
- by pressing \key{Ctrl-F5} or selecting the menu item
- \menu{Window|Size/Move}. The window frame will be green to indicate that
- the IDE is in size/move mode.
- By pressing shift and the cursor keys simultaneously, the window can
- be resized. The size/move mode can be left by pressing
- \key{Enter}. In this case, the window will keep the new size.
- Pressing \key{Esc} will restore the old size.
- \end{itemize}
- Not all windows can be resized. This applies, for example, to
- \emph{dialog windows} (\sees{dialogwindow}).
- A window can also be hidden. To hide a window, the \key{Ctrl-F6} key
- combination can be used, or the \menu{Window|Hide} menu may be selected.
- To restore a Hidden window, it is necessary to select it from the window
- list. More information about the window list can be found in the next
- section.
- %
- % Multiple windows
- %
- \subsection{Working with multiple windows}
- \label{se:multiplewindows}
- When working with larger projects, it is likely that multiple windows
- will appear on the desktop. However, only one of these windows will be
- the active window, all other windows will be inactive.
- An inactive window is identified by a grey frame. An inactive window can
- be made active in one of several ways:
- \begin{itemize}
- \item using the mouse, activate a window by clicking on it.
- \item using the keyboard, pressing \key{F6} will step trough all open
- windows. To activate the previously activated window, \key{Shift-F6} can
- be used.
- \item the menu item \menu{Window|Next} can be used to activate the next
- window in the list of windows, while \var{Window|Previous} will select
- the previous window.
- \item If the window has a number in the upper right corner, it can be
- activated by pressing \key{Alt-<number>}.
- \item Pressing \key{Alt-0} will pop up a dialog with all
- available windows which allows a quick activation of windows which
- don't have a number.
- \end{itemize}
- The windows can be ordered and placed on the IDE desktop by zooming and
- resizing them with the mouse or keyboard. This is a time-consuming task,
- and particularly difficult with the keyboard. Instead, the menu items
- \menu{Window|Tile} and \menu{Window|Cascade} can be used:
- \begin{description}
- \item[Tile] will divide whole desktop space evenly between all resizable
- windows.
- \item[Cascade] puts all windows in a cascaded position.
- \end{description}
- In very rare cases the screen of the IDE may be mixed up. In this
- case the whole IDE screen can be refreshed by selecting the menu item
- \menu{Window|Refresh display}.
- %
- % Dialog windows
- %
- \subsection{Dialog windows}
- \label{se:dialogwindow}
- In many cases the IDE displays a dialog window to get user input.
- The main difference to normal windows is that other windows cannot be
- activated while a dialog is active. Also the menu is not accessible while in
- a dialog. This behaviour is called \emph{modal}. To activate another window,
- the modal window or dialog must be closed first.
- A typical dialog window is shown in \seefig{idedlg}.
- \FPCpic{A typical dialog window}{}{idedlg}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % The menu
- \section{The Menu}
- \label{se:idemenu}
- The main menu (the gray bar at the top of the IDE) provides access to all the
- functionality of the IDE. It also displays a clock, displaying the current
- time. The menu is always available, except when a dialog is opened. If a
- dialog is opened, it must be closed first in order to access the menu.
- In certain windows, a local menu is also available. The local menu will
- appear where the cursor is, and provides additional commands that are
- context-sensitive.
- %
- % Accessing the menu
- %
- \subsection{Accessing the menu}
- The menu can be accessed in a number of ways:
- \begin{enumerate}
- \item By using the mouse to select items. The mouse cursor should be located
- over the desired menu item, and a left mouse click will then select it.
- \item By pressing \key{F10}. This will switch the IDE focus to the menu.
- Use the arrow keys can then be used to navigate in the menu, the
- \key{Enter} key should be used to select items.
- \item To access menu items directly, \key{Alt-<highlighted menu letter>}
- can be used to select a menu item. Afterwards submenu entries can be selected
- by pressing the highlighted letter, but without \key{Alt}.
- E.g. \key{Alt-S G} is a fast way to display the \emph{goto line} dialog.
- \end{enumerate}
- Every menu item is explained by a short text in the status bar.
- When a local menu is available, it can be accessed by pressing
- the right mouse button or \key{Alt-F10}.
- In the subsequent, all menu entries and their actions are described.
- %
- % The file menu
- %
- \subsection{The File menu}
- \label{se:menufile}
- The \menu{File} menu contains all menu items that allow to load and save
- files, as well as to exit the IDE.
- \begin{description}
- \item[New] Opens a new, empty editor window.
- \item[New from template] Prompts for a template to be used, asks to fill in
- any parameters, and then starts a new editor window with the template.
- \item[Open] (\key{F3}) Presents a file selection dialog, and opens
- the selected file in a new editor window.
- \item[Save] (\key{F2}) Saves the contents of the current edit window
- with the current filename. If the current edit window does not yet have
- a filename, a dialog is presented to enter a filename.
- \item[Save as] Presents a dialog in which a filename can be entered. The
- current window's contents are then saved to this new filename, and the
- filename is stored for further save actions.
- \item[Change dir] Presents a dialog in which a directory can be selected.
- The current working directory is then changed to the selected directory.
- \item[Command shell] Executes a command shell. After the shell exited, the
- IDE resumes. Which command shell is executed depends on the system.
- \item[Exit] (\key{ALT-X}) Exits the IDE. If any unsaved files are
- in the editor, the IDE will ask if these files should be saved.
- \end{description}
- Under the \menu{Exit} menu appear some filenames of recently used files.
- These entries can be used to quickly reload these files in the editor.
- %
- % The edit menu
- %
- \subsection{The Edit menu}
- \label{se:menuedit}
- The \menu{Edit} menu contains entries for accessing the clipboard, and
- undoing or redoing editing actions. Most of these functions have shortcut
- keys associated with them.
- \begin{description}
- \item[Undo] (\key{ALT-BKSP})
- Undo the last editing action. The editing actions are stored in a buffer,
- selecting this mechanism will move backwards through this buffer, i.e.
- multiple undo levels are possible. The selection is not preserved, though.
- \item[Redo] Redo the last action that was previously undone. Redo can redo
- multiple undone actions.
- %\item[Dump undo]
- %Shows the contents of the UNDO list in the messages window.
- %\item[Undo all]
- %Undo all actions in the undo buffer. If a new empty file was started, this
- %action should clear the window contents again.
- %\item[Redo all]
- %Redo all editing actions that were undone.
- \item[Cut] (\key{Shift-DEL}) Copy the current selection to the clipboard
- and delete the selection from the text. Any previous clipboard contents is
- lost after this action. After this action, the clipboard contents can be
- pasted elsewhere in the text.
- \item[Copy] (\key{Ctrl-INS}) Copy the current selection to the clipboard.
- Any previous clipboard contents is lost after this action.
- After this action, the clipboard contents can be pasted elsewhere in the text.
- \item[Paste] (\key{Shift-INS}) Insert the current clipboard contents in
- the text at the cursor position. The clipboard contents remains as it was.
- \item[Clear] (\key{Ctrl-DEL}) Clears (i.e. deletes) the current
- selection.
- \item[Show clipboard] Opens a window in which the current clipboard contents
- is shown.
- \end{description}
- When running an IDE under \windows, the \menu{Edit} menu has two
- additional entries. The IDE maintains a separate clipboard which does
- not share its contents with the windows clipboard. To access the Windows
- clipboard, the following two entries are also present:
- \begin{description}
- \item[Copy to Windows] this will copy the selection to the Windows
- clipboard.
- \item[Paste from Windows] this will insert the content of the windows
- clipboard (if it contains text) in the edit window at the current cursor
- position.
- \end{description}
- %
- % The Search menu
- %
- \subsection{The Search menu}
- \label{se:menusearch}
- The \menu{Search} menu provides access to the search and replace dialogs, as well as
- access to the symbol browser of the IDE.
- \begin{description}
- \item[Find] (\key{Ctrl-Q F}) Presents the search dialog. A search text
- can be entered, and when the dialog is closed, the entered text is searched
- in the active window. If the text is found, it will be selected.
- \item[Replace] (\key{Ctrl-Q A}) Presents the search and replace dialog.
- After the dialog is closed, the search text will be replaced by the replace
- text in the active window.
- \item[Search again] (\key{CTRL-L}) Repeats the last search or search and replace action,
- using the same parameters.
- \item[Go to line number] (\key{Alt-G}) Prompts for a line number, and
- then jumps to this line number.
- \end{description}
- When the program and units are compiled with browse information, then
- the following menu entries are also enabled:
- \begin{description}
- \item[Find procedure]
- Not yet implemented.
- \item[Objects]
- Asks for the name of an object and opens a browse window for this object.
- \item[Modules]
- Asks for the name of a module and opens a browse window for this object.
- \item[Globals]
- Asks for the name of a global symbol and opens a browse window for this object.
- \item[Symbol]
- Opens a window with all known symbols, so a symbol can be selected. After
- the symbol is selected, a browse window for that symbol is opened.
- \end{description}
- %
- % The Run menu
- %
- \subsection{The Run menu}
- \label{se:menurun}
- The \menu{Run} menu contains all entries related to running a program,
- \begin{description}
- \item[Run] (\key{Ctrl-F9})
- If the sources were modified, compiles the program. If the compile is
- successful, the program is executed. If the primary file was set, then
- that is used to determine which program to execute. See \sees{menucompile}
- for more information on how to set the primary file.
- \item[Step over] (\key{F8})
- Run the program till the next source line is reached. If any calls to
- procedures are made, these will be executed completely as well.
- \item[Trace into] (\key{F7})
- Execute the current line. If the current line contains a call to another
- procedure, the process will stop at the entry point of the called procedure.
- \item[Goto cursor] (\key{F4})
- Runs the program till the execution point matches the line where the cursor
- is.
- \item[Until return]
- Runs the current procedure till it exits.
- \item[Parameters]
- This menu item allows to enter parameters that will be passed on to the
- program when it is being executed.
- \item[Program reset] (\key{Ctrl-F2}) if the program is being run or
- debugged, the debug session is aborted, and the running program is killed.
- \end{description}
- %
- % The compile menu
- %
- \subsection{The Compile menu}
- \label{se:menucompile}
- The \menu{Compile} menu contains all entries related to compiling a program or
- unit.
- \begin{description}
- \item[Compile] (\key{Alt-F9}) Compiles the contents of the active window,
- irrespective of the primary file setting.
- \item[Make] (\key{F9}) Compiles the contents of the active window, and
- any files that the unit or program depends on and that were modified since
- the last compile.
- If the primary file was set, the primary file is compiled instead.
- \item[Build]
- Compiles the contents of the active window, and any files that the unit or
- program depends on, whether they were modified or not.
- If the primary file was set, the primary file is compiled instead.
- \item[Target] Sets the target operating system for which should be compiled.
- \item[Primary file] Sets the primary file. If set, any run or compile command
- will act on the primary file instead of on the active window. The primary
- file need not be loaded in the IDE for this to have effect.
- \item[Clear primary file]
- Clears the primary file. After this command, any run or compile action will
- act on the active window.
- \item[Information] Displays some information about the current program.
- \item[Compiler messages] (\key{F12}) Displays the compiler messages
- window. This window will display the messages generated by the compiler
- during the last compile.
- \end{description}
- %
- % The debug menu
- %
- \subsection{The Debug menu}
- \label{se:menudebug}
- The \menu{Debug} menu contains menu entries to aid in debugging a program, such as
- setting breakpoints and watches.
- \begin{description}
- \item[Output]
- \item[User screen] (\key{Alt-F5})
- Switches to the screen as it was last left by the running program.
- \item[Breakpoint] (\key{Ctrl-F8})
- Sets a breakpoint at the current line. When debugging, program execution
- will stop at this breakpoint.
- \item[Call stack] (\key{Ctrl-F3})
- Shows the call stack. The call stack is the list of addresses (and
- filenames and line numbers, if this information was compiled in) of
- procedures that are currently being called by the running program.
- \item[Registers]
- Shows the current content of the CPU registers.
- \item[Add watch] (\key{Ctrl-F7}) Add a watch. A watch is an expression
- that can be evaluated by the IDE and will be shown in a special window.
- Usually this is the content of some variable.
- \item[Watches]
- Shows the current list of watches in a separate window.
- \item[Breakpoint list]
- Shows the current list of breakpoints in a separate window.
- \item[GDB window]
- Shows the GDB debugger console. This can be used to interact with the debugger
- directly; here arbitrary GDB commands can be typed and the result will be
- shown in the window.
- \end{description}
- %
- % The tools menu
- %
- \subsection{The Tools menu}
- \label{se:menutools}
- The \menu{Tools} menu defines some standard tools. If new tools are defined by the
- user, they are appended to this menu as well.
- \begin{description}
- \item[Messages] (\key{F11}) Show the messages window.
- This window contains the output from one of the tools. For more information,
- see \sees{toolsmessages}.
- \item[Goto next] (\key{Alt-F8}) Goto next message.
- \item[Goto previous] (\key{Alt-F7}) Goto previous message
- \item[Grep] (\key{SHIFT-F2}) Prompts for a regular expression and options
- to be given to grep, and then executes \file{grep} with the given expression and
- options. For this to work, the \file{grep} program must be installed on the
- system, and be in a directory that is in the \var{PATH}. For more
- information, see \sees{grep}.
- \item[Calculator]
- Displays the calculator. For more information, see \sees{calculator}
- \item[Ascii table] Displays the \var{ASCII} table. For more information, see
- \sees{asciitable}
- \end{description}
- %
- % The Options menu
- %
- \subsection{The Options menu}
- \label{se:menuoptions}
- The \menu{Options} menu is the entry point for all dialogs that are used to set
- options for compiler and IDE, as well as the user preferences.
- \begin{description}
- \item[Mode] Presents a dialog to set the current mode of the compiler. The
- current mode is shown at the right of the menu entry. For more information,
- see \sees{compilermode}.
- \item[Compiler] Presents a dialog that can be used to set common compiler
- options. These options will be used when compiling a program or unit.
- \item[Memory sizes]
- Presents a dialog where the stack size and the heap size for the program can
- be set. These options will be used when compiling a program.
- \item[Linker]
- Presents a dialog where some linker options can be set. These options will
- be used when a program or library is compiled.
- \item[Debugger]
- Presents a dialog where the debugging options can be stored. These options
- are used when compiling units or programs. Note that the debugger will not
- work unless debugging information is generated in the program.
- \item[Directories]
- Presents a dialog where the various directories needed by the compiler can
- be set. These directories will be used when a program or unit is compiled.
- \item[Browser]
- Presents a dialog where the browser options can be set. The browser options
- affect the behaviour of the symbol browser of the IDE.
- \item[Tools]
- Presents a dialog to configure the tools menu. For more information, see
- \sees{addingtools}.
- \item[Environment]
- Presents a dialog to configure the behaviour of the IDE. A sub menu is
- presented with the various aspects of the IDE:
- \begin{description}
- \item[Preferences]
- General preferences, such as whether to save files or not, and which files
- should be saved. The video mode can also be set here.
- \item[Editor]
- Controls various aspects of the edit windows.
- \item[CodeComplete]
- Used to set the words which can be automatically completed when typing in
- the editor windows.
- \item[Codetemplates]
- Used to define code templates, which can be inserted in an edit window.
- \item[Desktop]
- Used to control the behaviour of the desktop, i.e. several features can be
- switched on or off.
- \item[Mouse]
- Can be used to control the actions of the mouse, and to assign commands to
- various mouse actions.
- \item[Startup]
- Not yet implemented.
- \item[Colors]
- Here the various colors used in the IDE and the editor windows can be set.
- \end{description}
- \item[Open]
- Presents a dialog in which a file with editor preferences can be selected.
- after the dialog is closed, the preferences file will be read and the
- preferences will be applied.
- \item[Save]
- Save the current options in the default file.
- \item[Save as]
- Saves the current options in an alternate file. A file selection dialog box
- will be presented in which the alternate settings file can be entered.
- \end{description}
- Please note that options are not saved automatically, they should be saved
- explicitly with the \menu{Options|\-Save} command.
- %
- % The window menu
- %
- \subsection{The Window menu}
- \label{se:menuwindow}
- The \menu{Window} menu provides access to some window functions. More information
- on all these functions can be found in \sees{windows}
- \begin{description}
- \item[Tile]
- Tiles all opened windows on the desktop.
- \item[Cascade]
- Cascades all opened windows on the desktop.
- \item[Close all]
- Close all opened windows.
- \item[Size/move] (\key{Ctrl-F5})
- Put the IDE in Size/move modus; after this command the active window can be
- moved and resized using the arrow keys.
- \item[Zoom] (\key{F5})
- Zooms or unzooms the current window.
- \item[Next] (\key{F6})
- Activates the next window in the window list.
- \item[Previous] (\key{SHIFT-F6})
- Activates the previous window in the window list.
- \item[Hide] (\key{Ctrl-F6})
- Hides the active window.
- \item[Close] (\key{ALT-F3})
- Closes the active window.
- \item[List] (\key{Alt-0})
- Shows the list of opened windows. From there a
- window can be activated, closed, shown and hidden.
- \item[Refresh display]
- Redraws the screen.
- \end{description}
- %
- % The Help menu
- %
- \subsection{The Help menu}
- \label{se:menuhelp}
- The \menu{Help} menu provides entry points to all the help functionality of
- the IDE, as well as the entry to customize the help system.
- \begin{description}
- \item[Contents]
- Shows the help table of contents
- \item[Index] (SHIFT-F1)
- Jumps to the help Index.
- \item[Topic search] (CTRL-F1)
- Jumps to the topic associated with the currently highlighted text.
- \item[Previous topic] (ALT-F1)
- Jumps to the previously visited topic.
- \item[Using help]
- Displays help on using the help system.
- \item[Files]
- Allows to configure the help menu. With this menu item, help files can be added to the help
- system.
- \item[About]
- Displays information about the IDE. See \sees{about} for more information.
- \end{description}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Editing text
- \section{Editing text}
- \label{se:editingtext}
- In this section, the basics of editing (source) text are explained. The IDE
- works like many other text editors in this respect, so mainly the
- distinguishing points of the IDE will be explained.
- \subsection{Insert modes}
- Standard, the IDE is in insert mode. This means that any text that is typed
- will be inserted before text that is present after the cursor.
- In overwrite mode, any text that is typed will replace existing text.
- When in insert mode, the cursor is a flat blinking line. If the IDE is in
- overwrite, the cursor is a cube with the height of one line. Switching between
- insert mode or overwrite mode happens with the \key{Insert} key or with the
- \key{Ctrl-V} key.
- %
- % blocks
- %
- \subsection{Blocks}
- \label{se:blocks}
- The IDE handles selected text just as the \tp IDE handles it. This is
- slightly different from the way e.g. Windows applications handle selected
- text.
- Text can be selected in 3 ways:
- \begin{enumerate}
- \item Using the mouse, dragging the mouse over existing text selects it.
- \item Using the keyboard, press \key{Ctrl-K B} to mark the beginning of
- the selected text, and \key{Ctrl-K K} to mark the end of the selected
- text.
- \item Using the keyboard, hold the \key{Shift} key depressed while
- navigating with the cursor keys.
- \end{enumerate}
- There are also some special select commands:
- \begin{enumerate}
- \item The current line can be selected using \key{Ctrl-K L}.
- \item The current word can be selected using \key{Ctrl-K T}.
- \end{enumerate}
- In the \fpc IDE, selected text is persistent. After selecting a range of
- text, the cursor can be moved, and the selection will not be destroyed;
- hence the term 'block' is more appropriate for the selection, and will be
- used henceforth...
- Several commands can be executed on a block:
- \begin{itemize}
- \item Move the block to the cursor location (\key{Ctrl-K V}).
- \item Copy the block to the cursor location (\key{Ctrl-K C}).
- \item Delete the block (\key{Ctrl-K Y}).
- \item Write the block to a file (\key{Ctrl-K W}).
- \item Read the contents of a file into a block (\key{Ctrl-K R}).
- If there is already a block, this block is not replaced by this command.
- The file is inserted at the current cursor position, and then the
- inserted text is selected.
- \item Indent a block (\key{Ctrl-K I}).
- \item Undent a block (\key{Ctrl-K U}).
- \item Print the block contents (\key{Ctrl-K P}).
- \end{itemize}
- When searching and replacing, the search can be restricted to the block
- contents.
- %
- % Bookmarks
- %
- \subsection{Setting bookmarks}
- \label{se:bookmarks}
- The IDE provides a feature which allows to set a bookmark at the current
- cursor position. Later, the cursor can be returned to this position
- by pressing a keyboard shortcut.
- Up to 9 bookmarks per source file can be set up, they are set by
- \key{Ctrl-K <Number>} (where number is the number of the mark).
- To go to a previously set bookmark, press \key{Ctrl-Q <Number>}.
- \begin{remark}
- Currently, the bookmarks are not stored if the IDE is left. This may
- change in future implementations of the IDE.
- \end{remark}
- %
- % Jumping to a source line
- %
- \subsection{Jumping to a source line}
- It is possible to go directly to a specific source line. To do this, open
- the {\em goto line} dialog via the \menu{Search|Goto line} menu.
- In the dialog that appears, the line-number the IDE should jump to can be
- entered. The goto line dialog is shown in \seefig{gotoline}.
- \FPCpic{The goto line dialog.}{ide}{gotoline}
- %
- % Syntax highlighting and code completion
- %
- \subsection{Syntax highlighting}
- \label{se:syntaxhighlighting}
- The IDE is capable of syntax highlighting, i.e. the color of certain
- Pascal elements can be set. As text is entered in an editor window,
- the IDE will try to recognise the elements, and set the color of the
- text accordingly.
- The syntax highlighting can be customized in the colors preferences dialog,
- using the menu option \menu{Options|\-Environment|\-Colors}. In the colors dialog, the
- group "Syntax" must be selected. The item list will then display the
- various syntactical elements that can be colored:
- \begin{description}
- \item[Whitespace] The empty text between words. Remark that for whitespace,
- only the background color will be used.
- \item[Comments] All styles of comments in Free Pascal.
- \item[Reserved words] All reserved words of Free Pascal. (see also \refref).
- \item[Strings] Constant string expressions.
- \item[Numbers] Numbers in decimal notation.
- \item[Hex numbers] Numbers in hexadecimal notation.
- \item[Assembler] Any assembler blocks.
- \item[Symbols] Recognised symbols (variables, types)
- \item[Directives] Compiler directives.
- \item[Tabs] Tab characters in the source can be given a different color than
- other whitespace.
- \end{description}
- The editor uses some default settings, but experimentation is the best way
- to find a fitting color scheme. A good color scheme helps detecting errors
- in sources, since errors will result in wrong syntax highlighting.
- % Code completion
- \subsection{Code Completion}
- \label{se:codecompletion}
- Code completion means the editor will try to guess the text as it
- is being typed. It does this by checking what text is typed, and as soon
- as the typed text can be used to identify a keyword in a list of keywords,
- the keyword will be presented in a small colored box under the typed text.
- Pressing the \key{Enter} key will complete the word in the text.
- There is no code completion yet for filling in function arguments, choosing
- object methods as in e.g. \delphi.
- Code completion can be customized in the Code completion dialog, reachable
- through the menu option \menu{Options|\-Preferences|\-Codecompletion}.
- The list of keywords that can be completed can be maintained here.
- The code completion dialog is shown in \seefig{codecomp}.
- \FPCpic{The code completion dialog.}{ide}{codecomp}
- The dialog shows the currently defined keywords that will be completed in
- alphabetical order.
- The following buttons are available:
- \begin{description}
- \item[Ok] Saves all changes and closes the dialog.
- \item[Edit] Pops up a dialog that allows to edit the currently
- highlighted keyword.
- \item[New] Pops up a dialog that allows to enter a new keyword which will be
- added to the list.
- \item[Delete] Deletes the currently highlighted keyword from the list
- \item[Cancel] Discards all changes and closes the dialog.
- \end{description}
- All keywords are saved and are available the next time the IDE is started.
- Duplicate names are not allowed. If an attempt is made to add a duplicate
- name to the list, an error will follow.
- % Code templates
- \subsection{Code Templates}
- Code templates are a way to insert large pieces of code at once. Each
- code templates is identified by a unique name. This name can be used to
- insert the associated piece of code in the text.
- For example, the name \var{ifthen} could be associated to the following
- piece of code:
- \begin{verbatim}
- If | Then
- begin
- end
- \end{verbatim}
- A code template can be inserted by typing its name, and pressing \key{Ctrl-J}
- when the cursor is positioned right after the template name.
- If there is no template name before the cursor, a dialog will pop up to
- allow selection of a template.
- If a vertical bar (|) is present in the code template, the cursor is positioned
- on it, and the vertical bar is deleted. In the above example, the cursor would be
- positioned between the \var{if} and \var{then}, ready to type an expression.
- Code templates can be added and edited in the code templates dialog, reachable via
- the menu option \menu{Options|\-Preferences|\-Codetemplates}.
- The code templates dialog is shown in \seefig{codetemp}.
- \FPCpic{The code templates dialog.}{ide}{codetemp}
- The top listbox in the code templates dialog shows the names of all
- known templates. The bottom half of the dialog shows the text associated
- with the currently highlighted code template.
- The following buttons are available:
- \begin{description}
- \item[Ok] Saves all changes and closes the dialog.
- \item[Edit] Pops up a dialog that allows to edit the currently
- highlighted code template. Both the name and text can be edited.
- \item[New] Pops up a dialog that allows to enter a new code template
- which will be added to the list. A name must be entered for the new
- template.
- \item[Delete] Deletes the currently highlighted code template from the list
- \item[Cancel] Discards all changes and closes the dialog.
- \end{description}
- All templates are saved and are available the next time the IDE is started.
- \begin{remark}
- Duplicates are not allowed. If an attempt is made to add a duplicate name
- to the list, an error will occur.
- \end{remark}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Searching in the text
- \section{Searching and replacing}
- \label{se:searching}
- The IDE allows to search for text in the active editor window.
- To search for text, one of the following can be done:
- \begin{enumerate}
- \item Select \menu{Search|Find} in the menu.
- \item Press \key{Ctrl-Q F}.
- \end{enumerate}
- After that, the dialog shown in \seefig{search} will pop up,
- and the following options can be entered
- \FPCpic{The search dialog.}{ide}{search}
- \begin{description}
- \item[Text to find] The text to be searched for. If a block was active when
- the dialog was started, the first line of this block is proposed.
- \item[Case sensitive] When checked, the search is case sensitive.
- \item[Whole words only] When checked, the search text must appear in the
- text as a complete word.
- \item[Direction] The direction in which the search must be conducted,
- starting from the specified origin.
- \item[Scope] Specifies if the search should be on the whole file, or just the selected
- text.
- \item[Origin] Specifies if the search should start from the cursor position or the start
- of the scope.
- \end{description}
- After the dialog has closed, the search is performed using the given options.
- A search can be repeated (using the same options) in one of 2 ways:
- \begin{enumerate}
- \item Select \menu{Search|Find again} from the menu.
- \item Press \key{Ctrl-L}.
- \end{enumerate}
- It is also possible to replace occurrences of a text with another text.
- This can be done in a similar manner to searching for a text:
- \begin{enumerate}
- \item Select \menu{Search|Replace} from the menu.
- \item Press \key{Ctrl-Q A}.
- \end{enumerate}
- A dialog, similar to the search dialog will pop up, as shown in \seefig{replace}.
- \FPCpic{The replace dialog.}{ide}{replace}
- In this dialog, in addition to the things that can be filled in in the
- search dialog, the following things can be entered:
- \begin{description}
- \item [New text] Text by which found text will be replaced.
- \item [Prompt on replace] Before a replacement is made, the IDE will ask for
- confirmation.
- \end{description}
- If the dialog is closed with the 'OK' button, only the next occurrence of
- the the search text will be replaced.
- If the dialog is closed with the 'Change All' button, all occurrences of
- the search text will be replaced.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % The symbol browser
- \section{The symbol browser}
- \label{se:browser}
- The symbol browser allows to find all occurrences of a symbol. A symbol
- can be a variable, type, procedure or constant that occurs in the
- program or unit sources.
- To enable the symbol browser, the program or unit must be compiled with
- browser information. This can be done by setting the browser information
- options in the compiler options dialog.
- The IDE allows to browse several types of symbols:
- \begin{description}
- \item[procedures] Allows to quickly jump to a procedure definition or
- implementation.
- \item[Objects] Allows to quickly browse an object.
- \item[Modules] Allows to browse a module.
- \item[Globals] Allows to browse any global symbol.
- \item[Arbitrary symbol] Allows to browse an arbitrary symbol.
- \end{description}
- In all cases, first a symbol to be browsed must be selected. After that,
- a browse window appears. In the browse window, all locations where the
- symbol was encountered are shown. Selecting a location and pressing the
- space bar will cause the editor to jump to that location; the line
- containing the symbol will be highlighted.
- If the location is in a source file that is not yet displayed, a new
- window will be opened with the source file loaded.
- After the desired location was reached, the browser window can be closed
- with the usual commands.
- The behaviour of the browser can be customized with the browser options
- dialog, using the \menu{Options|Browser} menu.
- The browser options dialog looks like \seefig{obrowser}.
- \FPCpic{The browser options dialog.}{ide}{obrowser}
- The following options can be set in the browser options dialog:
- \begin{description}
- \item[Symbols] Here the types of symbols displayed in the browser can be
- selected:
- \begin{description}
- \item[Labels] labels are shown.
- \item[Constants] Constants are shown.
- \item[Types] Types are shown.
- \item[Variables] Variables are shown.
- \item[Procedures] Procedures are shown.
- \item[Inherited]
- \end{description}
- \item[Sub-browsing] Specifies what the browser should do when displaying the
- members of a complex symbol such as a record or class:
- \begin{description}
- \item[New browser] The members are shown in a new browser window.
- \item[Replace current] The contents of the current window are replaced with
- the members of the selected complex symbol.
- \end{description}
- \item[Preferred pane] Specifies what pane is shown in the browser when it is
- initially opened:
- \begin{description}
- \item[scope]
- \item[Reference]
- \end{description}
- \item[Display] Determines how the browser should display the symbols:
- \begin{description}
- \item[Qualified symbols]
- \item[Sort always] sorts the symbols in the browser window.
- \end{description}
- \end{description}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Running programs
- \section{Running programs}
- \label{se:running}
- A compiled program can be run straight from the IDE. This can be done
- in one of several ways:
- \begin{enumerate}
- \item select the \menu{Run|Run} menu, or
- \item press \key{Ctrl-F9}.
- \end{enumerate}
- If command-line parameters should be passed to the program, then these
- can be set through the \menu{Run|Parameters} menu.
- The program parameters dialog looks like \seefig{params}.
- \FPCpic{The program parameters dialog.}{ide}{params}
- Once the program started, it will continue to run, until
- \begin{enumerate}
- \item the program quits normally,
- \item an error happens,
- \item a breakpoint is encountered or
- \item the program is reset by the user.
- \end{enumerate}
- The last alternative is only possible if the program is compiled
- with debug information.
- Alternatively, it is possible to position the cursor somewhere in a
- source file, and run the program till the execution reaches the
- source-line where the cursor is located. This can be done by
- \begin{enumerate}
- \item selecting \menu{Run|Goto Cursor} in the menu,
- \item pressing \key{F4}.
- \end{enumerate}
- Again, this is only possible if the program was compiled with debug
- information.
- The program can also executed line by line. Pressing \key{F8} will
- execute the next line of the program. If the program wasn't started
- yet, it is started. Repeatedly pressing \key{F8} will execute line
- by line of the program, and the IDE will show the line to be executed
- in an editor window. If somewhere in the code a call occurs to a subroutine,
- then pressing \key{F8} will cause the whole routine to be executed before
- control returns to the IDE. If the code of the subroutine should be stepped
- through as well, then \key{F7} should be used instead. Using \key{F7} will
- cause the IDE to execute line by line of any subroutine that is encountered.
- If a subroutine is being stepped through, then the \menu{Run|Until return} menu
- will execute the program till the current subroutine ends.
- If the program should be stopped before it quits by itself, then this can be
- done by
- \begin{enumerate}
- \item selecting \menu{Run|Program reset} from the menu, or
- \item pressing \key{Ctrl-F2}.
- \end{enumerate}
- The running program will then be aborted.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Debugging programs
- \section{Debugging programs}
- \label{se:debugging}
- To debug a program, it must be compiled with debug information. Compiling a
- program with debug information allows to:
- \begin{enumerate}
- \item Execute the program line by line.
- \item Run the program till a certain point (a breakpoint)
- \item Inspect the contents of variables or memory locations while the
- program is running.
- \end{enumerate}
- %
- % Using breakpoints
- %
- \subsection{Using breakpoints}
- Breakpoints will cause a running program to stop when the execution
- reaches the line where the breakpoint was set. At that moment, control
- is returned to the IDE, and it is possible to continue execution.
- To set a breakpoint on the current source line, use the
- \menu{Debug|Breakpoint} menu entry, or press \key{Ctrl-F8}.
- A list of current breakpoints can be obtained through the
- \menu{Debug|Breakpoint list} menu. The breakpoint list window
- is shown in \seefig{brklist}.
- \FPCpic{The breakpoint list window}{ide}{brklist}
- In the breakpoint list window, the following things can be done:
- \begin{description}
- \item[New] Shows the breakpoint property dialog where the properties
- for a new breakpoint can be entered.
- \item[Edit] Shows the breakpoint property dialog where the properties of
- the highlighted breakpoint can be changed.
- \item[Delete] Deletes the highlighted breakpoint.
- \end{description}
- The dialog can be closed with the 'Close' button.
- The breakpoint properties dialog is shown in \seefig{brkprop}
- \FPCpic{The breakpoint properties dialog}{ide}{brkprop}
- The following properties can be set:
- \begin{description}
- \item[type]
- \begin{description}
- \item[function] function breakpoint. The program will stop when the function
- with the given name is reached.
- \item[file-line] Source line breakpoint. The program will stop when the
- source file with given name and line is reached;
- \item[watch] Expression breakpoint. An expression may be entered, and the
- program will stop as soon as the expression changes.
- \item[awatch] (access watch) Expression breakpoint. An expression that references a
- memory location may be entered, and the program will stop as soon as
- the memory indicated by the expression is accessed.
- \item[rwatch] (read watch) Expression breakpoint. An expression that references a
- memory location may be entered, and the program will stop as soon as
- the memory indicated by the expression is read.
- \end{description}
- \item[name] Name of the function or file where to stop.
- \item[line] Line number in the file where to stop. Only for breakpoints of
- type file-line.
- \item[Conditions] Here an expression can be entered which must evaluate
- \var{True} for the program to stop at the breakpoint. The expressions that
- can be entered must be valid GDB expressions.
- \item[Ignore count] The number of times the breakpoint will be ignored
- before the program stops;
- \end{description}
- \begin{remark}
- \begin{enumerate}
- \item Because the IDE uses GDB to do its debugging, it is necessary to enter all
- expressions in {\em uppercase} on \freebsd.
- \item Expressions that reference memory locations should be no longer than 16
- bytes on \linux or go32v2 on an Intel processor, since the Intel processor's
- debug registers are used to monitor these locations.
- \item Memory location watches will not function on Win32 unless a special
- patch is applied.
- \end{enumerate}
- \end{remark}
- %
- % Using watches
- %
- \subsection{Using watches}
- When debugging information is compiled in the program, watches can be used.
- Watches are expressions which can be evaluated by the IDE and shown in a
- separate window. When program execution stops (e.g. at a breakpoint) all
- watches will be evaluated and their current values will be shown.
- Setting a new watch can be done with the \menu{Debug|Add watch} menu
- command or by pressing \key{Ctrl-F7}. When this is done, the watch
- property dialog appears, and a new expression can be entered.
- The watch property dialog is shown in \seefig{watch}.
- \FPCpic{The watch property dialog}{ide}{watch}
- In the dialog, the expression can be entered, any possible previous value
- and current value are shown.
- \begin{remark}
- Because the IDE uses GDB to do it's debugging, it is necessary to enter all
- expressions in {\em uppercase} in \freebsd.
- \end{remark}
- A list of watches and their present value is available in the watches
- window, which can be opened with the \menu{Debug|Watches} menu.
- The watch list window is shown in \seefig{brklist}.
- \FPCpic{The watch list window.}{ide}{watchlst}
- Pressing \key{Enter} or the space bar will show the watch property dialog
- for the currently highlighted watch in the watches window.
- The list of watches is updated whenever the IDE resumes control when
- debugging a program.
- %
- % The call stack
- %
- \subsection{The call stack}
- \label{se:callstack}
- The call stack helps in showing the program flow. It shows the list of
- procedures that are being called at this moment, in reverse order.
- The call stack window can be shown using the \menu{Debug|Call Stack}
- It will show the address or procedure name of all currently active
- procedures with their filename and addresses. If parameters were passed
- they will be shown as well. The call stack is shown in \seefig{callstck}.
- \FPCpic{The call stack window.}{ide}{callstck}
- By pressing the space bar in the call stack window, the line corresponding
- to the call will be highlighted in the edit window.
- % The GDB Window
- \subsection{The GDB window}
- \label{se:gdbwindow}
- The GDB window provides direct interaction with the GDB debugger.
- In it, GDB commands can be typed as they would be typed in GDB.
- The response of GDB will be shown in the window.
- Some more information on using GDB can be found in \sees{usinggdb}, but
- the final reference is of course the GDB manual itself
- \footnote{Available from the Free Software Foundation website.}.
- The GDB window is shown in \seefig{gdbwin}.
- \FPCpic{The GDB window}{ide}{gdbwin}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % The tools menu
- \section{Using Tools}
- \label{se:toolsmenu}
- The tools menu provides easy access to external tools. It also has
- three pre-defined tools for programmers: an ASCII table, a grep tool
- and a calculator. The output of the external tools can be accessed through
- this menu as well.
- %
- % The messages window.
- %
- \subsection{The messages window}
- \label{se:toolsmessages}
- The output of the external utilities is redirected by the IDE and it
- will be displayed in the messages window. The messages window is
- displayed automatically, if an external tool was run. The
- messages window can be also displayed manually by the selecting the
- menu item \menu{Tools|Messages} or by pressing the key \key{F11}.
- The messages window is shown in \seefig{messages}.
- \FPCpic{The messages window}{ide}{messages}
- If the output of the tool contains filenames and line numbers,
- the messages window can be used to navigate the source as in a browse
- window:
- \begin{enumerate}
- \item Pressing \key{Enter} or double clicking the output line will jump
- to the specified source line and close the messages window.
- \item Pressing the space bar will jump to the specified source line, but
- will leave the messages window open, with the focus on it. This allows to
- quickly select another message line with the arrow keys and jump to
- another location in the sources.
- \end{enumerate}
- The algorithm which extracts the file names and line numbers from
- the tool output is quite sophisticated, but in some cases it may
- fail\footnote{Suggestions for improvement, or better yet, patches
- that improve the algorithm, are always welcome.}.
- %
- % Grep
- %
- \subsection{Grep}
- \label{se:grep}
- One external tool in the Tools menu is already predefined: a
- menu item to call the \file{grep} utility (\menu{Tools|Grep} or
- \key{Shift-F2}). \file{Grep} searches for a given string in files and
- returns the lines which contain the string. The search string can
- be even a regular expression. For this menu item to work, the
- \file{grep} program must be installed, since it does not come with \fpc.
- The messages window displayed in \seefig{messages} in the previous
- section shows the output of a typical \file{grep} session. The messages
- window can be used in combination with \file{grep} to find special
- occurrences in the text.
- \file{Grep} supports regular expressions. A regular expression is a
- string with special characters which describe a whole class of
- expressions. The command line in \dos or \linux have limited
- support for regular expressions: entering \var{ls *.pas}
- (or \var{dir *.pas}) to get a list of all Pascal files in a
- directory. \file{*.pas} is something similar to a regular expression.
- It uses a wildcard to describe a whole class of strings: those which
- end on "\file{.pas}".
- Regular expressions offer much more: for example \var{[A-Z][0-9]+}
- describes all strings which begin with a upper case letter followed by
- one or more digits.
- It is outside the scope of this manual to describe regular expressions
- in great detail. Users of a \linux system can get more information on grep
- using \var{man grep} on the command-line.
- %
- % The ASCII table.
- %
- \subsection{The ASCII table}
- \label{se:asciitable}
- The tools menu provides also an ASCII table (\menu{Tools|Ascii table}),
- The ASCII table can be used to look up ASCII codes as well as
- inserting characters into the window which was active when invoking the
- table. To get the ASCII code of a char move the cursor on this char
- or click with the mouse on it. To insert a
- char into an editor window either:
- \begin{enumerate}
- \item using the mouse, double click it,
- \item using the keyboard, press \key{Enter} while the cursor is on it.
- \end{enumerate}
- This is especially useful for pasting graphical characters in a constant
- string.
- The ASCII table remains active till another window is explicitly activated,
- thus multiple characters can be inserted at once.
- The ASCII table is shown in \seefig{ascii}.
- \FPCpic{The ASCII table}{ide}{ascii}
- %
- % The calculator
- %
- \subsection{The calculator}
- \label{se:calculator}
- The calculator allows to do some quick calculations. It is a simple
- calculator, since it does not take care of operator precedence, and
- bracketing of operations is not (yet) supported.
- The result of the calculations can be pasted into the text using the
- \key{Ctrl-Enter} keystroke. The calculator dialog is shown in
- \seefig{calc}.
- \FPCpic{The calculator dialog}{ide}{calc}
- The calculator supports all basic mathematical operations such as
- addition, subtraction, division and multiplication. They are summarised in
- \seet{calculatorbasic}.
- \begin{FPCltable}{p{8cm}lll}{Advanced calculator commands}{calculatorbasic}
- Operation & Button & Key \\ \hline
- Add two numbers & \var{+} & \key{+} \\
- Subtract two numbers & \var{\-} & \key{\-} \\
- Multiply two numbers & \var{*} & \key{*} \\
- Divide two numbers & \var{/} & \key{/} \\
- Delete the last typed digit & \var{<-} & \key{Backspace} \\
- Delete the display & \var{C} & \key{C} \\
- Change the sign & \var{+\-} & \\
- Do per cent calculation & \var{\%} & \key{\%} \\ \hline
- Get result of operation & \var{=} & \key{Enter} \\ \hline
- \end{FPCltable}
- But also more sophisticated mathematical operations such as exponentiation
- and logarithms are supported. The available mathematical calculations are
- shown in \seet{calculatoradvanced}.
- \begin{FPCltable}{p{8cm}lll}{Advanced calculator commands}{calculatoradvanced}
- Operation & Button & Key \\ \hline
- Calculate power & \var{x\^{}y} & \\
- Calculate the inverse value & \var{1/x} & \\
- Calculate the square root & \var{sqr} & \\
- Calculate the natural logarithm & \var{log} & \\
- Square the display contents & \var{x\^{}2} & \\ \hline.
- \end{FPCltable}
- Like many calculators, the calculator in the IDE also supports storing
- a single value in memory, and several operations can be done on this memory
- value. The available operations are listed in \seet{calculatormemory}
- \begin{FPCltable}{p{8cm}lll}{Advanced calculator commands}{calculatormemory}
- Operation & Button & Key \\ \hline
- Add the displayed number to the memory & \var{M+} & \\
- Subtract the displayed number from the memory & \var{M-} & \\
- Move the memory contents to the display & \var{M->} & \\
- Move the display contents to the memory & \var{M<-} & \\
- Exchange display and memory contents & \var{M<->} & \\ \hline
- \end{FPCltable}
- %
- % Adding new tools
- %
- \subsection{Adding new tools}
- \label{se:addingtools}
- The tools menu can be extended with any external program which is command-line
- oriented. The output of such a program will be caught and displayed in the
- messages window.
- Adding a tool to the tools menu can be done using the \menu{Options|Tools} menu.
- This will display the tools dialog. The tools dialog is shown in \seefig{otools}.
- \FPCpic{The tools configuration dialog}{ide}{otools}
- In the tools dialog, the following actions are available:
- \begin{description}
- \item[New] Shows the tool properties dialog where the
- properties of a new tool can be entered.
- \item[Edit] Shows the tool properties dialog where the
- properties of the highlighted tool can be edited.
- \item[Delete] Removes the currently highlighted tool.
- \item[Cancel] Discards all changes and closes the dialog.
- \item[OK] Saves all changes and closes the dialog.
- \end{description}
- The definitions of the tools are written in the desktop
- configuration file, so unless auto-saving of the desktop file
- is enabled, the desktop file should be saved explicitly after
- the dialog is closed.
- \subsection{Meta parameters}
- When specifying the command line for the called tool, meta parameters can
- be used. Meta parameters are variables and and they are replaced
- by their contents before passing the command line to the tool.
- \begin{description}
- \item[\$CAP]
- Captures the output of the tool.
- \item[\$CAP\_MSG]
- Captures the output of the tool and puts it in the messages window.
- \item[\$CAP\_EDIT]
- Captures the output of the tool and puts it in a separate editor window.
- \item[\$COL]
- Replaced by the column of the cursor in the active editor window. If there is no
- active window or the active window is a dialog, then it is replaced by 0.
- \item[\$CONFIG]
- Replaced by the complete filename of the current configuration file.
- \item[\$DIR()]
- Replaced by the full directory of the filename argument, including trailing
- directory separator. e.g.
- \begin{verbatim}
- $DIR('d:\data\myfile.pas')
- \end{verbatim}
- would return \verb|d:\data\|.
- \item[\$DRIVE()]
- Replaced by the drive letter of the filename argument. e.g.
- \begin{verbatim}
- $DRIVE('d:\data\myfile.pas')
- \end{verbatim}
- would return \file{d:}.
- \item[\$EDNAME]
- Replaced by the complete file name of the file in the active edit window.
- If there is no active edit window, this is an empty string.
- \item[\$EXENAME]
- Replaced by the executable name that would be created if the make command
- was used. (i.e. from the 'Primary File' setting or the active edit window).
- \item[\$EXT()]
- Replaced by the extension of the filename argument.
- The extension includes the dot.
- e.g.
- \begin{verbatim}
- $EXT('d:\data\myfile.pas')
- \end{verbatim}
- would return \file{.pas}.
- \item[\$LINE]
- Replaced by the line number of the cursor in the active edit window.
- If no edit window is present or active, this is 0.
- \item[\$NAME()]
- Replaced by the name part (excluding extension and dot) of the filename
- argument.
- e.g.
- \begin{verbatim}
- $NAME('d:\data\myfile.pas')
- \end{verbatim}
- would return \file{myfile}.
- \item[\$NAMEEXT()]
- Replaced by the name and extension part of the filename argument.
- e.g.
- \begin{verbatim}
- $NAMEEXT('d:\data\myfile.pas')
- \end{verbatim}
- would return \file{myfile.pas}.
- \item[\$NOSWAP]
- Does nothing in the IDE, it is provided for compatibility with \tp only.
- \item[\$PROMPT()]
- Prompt displays a dialog bow that allows editing of all arguments that
- come after it. Arguments that appear before the \var{\$PROMPT} keyword
- are not presented for editing.
- If a (optional) filename argument is present, \var{\$PROMPT()} will load
- a dialog description from the filename argument, e.g.
- \begin{verbatim}
- $PROMPT(cvsco.tdf)
- \end{verbatim}
- would parse the file \file{cvsco.tdf}, construct a dialog with it and
- display it. After the dialog closed, the information entered by the user
- is used to construct the tool command line.
- See \sees{commanddialogs} for more information on how to create a dialog
- description.
- \item[\$SAVE]
- Before executing the command, the active editor window is saved, even if it is not modified.
- \item[\$SAVE\_ALL]
- Before executing the command, all unsaved editor files are saved without prompting.
- \item[\$SAVE\_CUR]
- Before executing the command the contents of the active editor window are
- saved without prompting if they are modified.
- \item[\$SAVE\_PROMPT]
- Before executing the command, a dialog is displayed asking whether any
- unsaved files should be saved before executing the command.
- \item[\$WRITEMSG()]
- Writes the parsed tool output information to a file with name as in the argument.
- \end{description}
- \subsection{Building a command line dialog box}
- \label{se:commanddialogs}
- When defining a tool, it is possible to show a dialog to the user, asking for
- additional arguments, using the \var{\$PROMPT(filename)} command-macro.
- \fpc comes with some dialogs, such as a 'grep' dialog, a 'cvs checkout' dialog
- and a 'cvs check in' dialog. The files for these dialogs are in the binary
- directory and have an extension \file{.tdf}.
- In this section, the file format for the dialog description file is explained.
- The format of this file resembles a windows \file{.INI} file, where each section
- in the file describes an element (or control) in the dialog.
- An \var{OK} and an \var{Cancel} button will be added to the bottom of the dialog,
- so these should not be specified in the dialog definition.
- A special section is the \var{Main} section. It describes how the result of
- the dialog will be passed on the command-line, and the total size of the dialog.
- \begin{remark}
- Keywords that contain a string value, should have the string value enclosed
- in double quotes as in
- \begin{verbatim}
- Title="Dialog title"
- \end{verbatim}
- \end{remark}
- The \var{Main} section should contain the following keywords:
- \begin{description}
- \item[Title] The title of the dialog. This will appear in the frame title of the dialog.
- The string should be enclosed in quotes.
- \item[Size] The size of the dialog, this is formatted as \var{(Cols,Rows)}, so
- \begin{verbatim}
- Size=(59,9)
- \end{verbatim}
- means the dialog is 59 characters wide, and 9 lines high. This size does not include
- the border of the dialog.
- \item[CommandLine] specifies how the command-line will be passed to the
- program, based on the entries made in the dialog. The text typed here will be passed
- on after replacing some control placeholders with their values.
- A control placeholder is the name of some control in the dialog, enclosed in
- percent (\var{\%}) characters. The name of the control will be replaced with
- the text, associated with the control. Consider the following example:
- \begin{verbatim}
- CommandLine="-n %l% %v% %i% %w% %searchstr% %filemask%"
- \end{verbatim}
- Here the values associated with the controls named \var{l, i, v, w} and
- \var{searchstr} and \var{filemask} will be inserted in the command-line
- string.
- \item[Default]
- The name of the control that is the default control, i.e. the control
- that has the focus when the dialog is opened.
- \end{description}
- The following is an example of a valid main section:
- \begin{verbatim}
- [Main]
- Title="GNU Grep"
- Size=(56,9)
- CommandLine="-n %l% %v% %i% %w% %searchstr% %filemask%"
- Default="searchstr"
- \end{verbatim}
- After the \var{Main} section, a section must be specified for each control that
- should appear on the dialog. Each section has the name of the control it
- describes, as in the following example:
- \begin{verbatim}
- [CaseSensitive]
- Type=CheckBox
- Name="~C~ase sensitive"
- Origin=(2,6)
- Size=(25,1)
- Default=On
- On="-i"
- \end{verbatim}
- Each control section must have at least the following keywords associated
- with it:
- \begin{description}
- \item[Type] The type of control. Possible values are:
- \begin{description}
- \item[Label] A plain text label which will be shown on the dialog.
- A control can be linked to this label, so it will be focused when
- the user presses the highlighted letter in the label caption (if any).
- \item[InputLine] An edit field where a text can be entered.
- \item[CheckBox] A Checkbox which can be in a on or off state.
- \end{description}
- \item[Origin] Specifies where the control should be located in the dialog.
- The origin is specified as \var{(left,Top)} and the top-left corned of
- the dialog has coordinate \var{(1,1)} (not counting the frame).
- \item[Size] Specifies the size of the control, which should be specified
- as \var{(Cols,Rows)}.
- \end{description}
- Each control has some specific keywords associated with it;
- they will be described below.
- A label (\var{Type=Label}) has the following extra keywords associated
- with it:
- \begin{description}
- \item[Text] the text displayed in the label. If one of the letters should
- be highlighted so it can be used as a shortcut, then it should be enclosed
- in tilde characters (\~{}), e.g. in
- \begin{verbatim}
- Text="~T~ext to find"
- \end{verbatim}
- The \var{T} will be highlighted.
- \item[Link] here the name of a control in the dialog may be specified.
- If specified, pressing the label's highlighted letter in combination
- with the \key{Alt} key will put the focus on the control specified here.
- \end{description}
- A label does not contribute to the text of the command-line, it is for
- informational and navigational purposes only. The following is an
- example of a label description section:
- \begin{verbatim}
- [label2]
- Type=Label
- Origin=(2,3)
- Size=(22,1)
- Text="File ~m~ask"
- Link="filemask"
- \end{verbatim}
- An edit control (\var{Type=InputLine}) allows to enter arbitrary text.
- The text of the edit control will be pasted in the command-line if it
- is referenced there. The following keyword can be specified in a
- inputline control section:
- \begin{description}
- \item[Value] here a standard value (text) for the edit control can be
- specified. This value will be filled in when the dialog appears.
- \end{description}
- The following is an example of a input line section:
- \begin{verbatim}
- [filemask]
- Type=InputLine
- Origin=(2,4)
- Size=(22,1)
- Value="*.pas *.pp *.inc"
- \end{verbatim}
- A combo-box control (\var{Type=CheckBox}) presents a checkbox which
- can be in one of two states, \var{on} or \var{off}. With each of
- these states, a value can be associated which will be passed on to
- the command-line. The following keywords can appear in a checkbox
- type section:
- \begin{description}
- \item[Name] the text that appears after the checkbox.
- If there is a highlighted letter in it, this letter can be used
- to set or unset the checkbox using the \key{Alt}-letter combination.
- \item[Default] specifies whether the checkbox is checked or not when
- the dialog appears (values \var{on} or \var{off})
- \item[On] the text associated with this checkbox if it is in the checked
- state.
- \item[Off] the text associated with this checkbox if it is in the
- unchecked state.
- \end{description}
- The following is a example of a valid checkbox description:
- \begin{verbatim}
- [i]
- Type=CheckBox
- Name="~C~ase sensitive"
- Origin=(2,6)
- Size=(25,1)
- Default=On
- On="-i"
- \end{verbatim}
- If the checkbox is checked, then the value \var{-i} will be added on
- the command-line of the tool. If it is unchecked, no value will be added.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Project management
- \section{Project management and compiler options}
- \label{se:projectmanagement}
- Project management in Pascal is much easier than with C. The
- compiler knows from the source which units, sources etc. it needs.
- So the \fpc IDE does not need a full featured project manager like
- some C development environments offer, nevertheless there are some
- settings in the IDE which apply to projects.
- %
- % The primary file
- %
- \subsection{The primary file}
- \label{se:primaryfile}
- Without a primary file the IDE compiles/runs the source of the active
- window when a program is started. If a primary file is specified,
- the IDE compiles/runs always this source, even if another
- source window is active. With the menu item \menu{Compile|Primary file...}
- a file dialog can be opened where the primary file can be selected.
- Only the menu item \menu{Compile|Compile} compiles still the active window,
- this is useful if a large project is being edited, and only the syntax of
- the current source should be checked.
- The menu item \menu{Compiler|Clear primary file} restores the default
- behaviour of the IDE, i.e. the 'compile' and 'run' commands apply to the
- active window.
- %
- % The directory dialog
- %
- \subsection{The directory dialog}
- In the directory dialog, the directories can be specified where the
- compiler should look for units, libraries, object files. It also says
- where the output files should be stored. Multiple directories (except
- for the output directory) can be entered, separated by semicolons.
- The directories dialog is shown in \seefig{odirs}.
- \FPCpic{The directories configuration dialog}{ide}{odirs}
- The following directories can be specified:
- \begin{description}
- \item[EXE \& PPU directories] Specifies where the compiled units and
- executables will go. (\seeo{FE} on the command line.)
- \item[Object directories] Specifies where the compiler looks for external
- object files. (\seeo{Fo} on the command line.)
- \item[Library directories] Specifies where the compiler (more exactly, the
- linker) looks for external libraries. (\seeo{Fl} on the command line.)
- \item[Include directories] Specifies where the compiler will look for
- include files, included with the \var{\{\$i \}} directive.
- (\seeo{Fi} or \seeo{I} on the command line.)
- \item[Unit directories] Specifies where the compiler will look for compiled
- units. The compiler always looks first in the current directory, and also in
- some standard directories. (\seeo{Fu} on the command line.)
- \end{description}
- %
- % The target operating system.
- %
- \subsection{The target operating system}
- The menu item \menu{Compile|Target} allows to specify the target
- operating system for which the sources will be compiled.
- Changing the target doesn't affect any compiler switches or
- directories. It does affect some defines defined by the compiler.
- The settings here correspond to the option \seeo{T}
- on the command-line. The compilation target dialog is shown in \seefig{target}.
- \FPCpic{The compilation target dialog}{ide}{target}
- The following targets can be set:
- \begin{description}
- \item[Dos (go32v1)] This switch will dissapear in time as this target is no
- longer being maintained.
- \item[Dos (go32v2)] Compile for \dos, using version 2 of the Go32 extender.
- \item[FreeBSD] Compile for \freebsd.
- \item[Linux] Compile for \linux.
- \item[OS/2] Compile for OS/2 (using the EMX extender)
- \item[Win32] Compile for windows 32 bit.
- \end{description}
- The currently selected target operating system is shown in the menu item in
- the \menu{Compile} menu. Standard this should be the operating system for
- which the IDE was compiled.
- %
- % Other compiler options
- %
- \subsection{Compiler options}
- The menu \menu{Options|Compiler} allows to set other options that affect the
- compilers behaviour. When this menu item is chosen, a dialog pops up that
- displays several tabs.
- There are 5 tabs:
- \begin{description}
- \item[Syntax] Here options can be set that affect the various syntax aspects
- of the code. They correspond mostly to the \var{-S} option on the command
- line (\sees{sourceoptions}).
- \item[Code generation] These options control the generated code; they are
- mostly concerned with the \var{-C} and \var{-X} command-line options.
- \item[Verbose] These set the verbosity of the compiler when compiling. The
- messages of the compiler are shown in the compiler messages window (can be
- called with \key{F12}).
- \item[Browser] options concerning the generated browser information. Browser
- information needs to be generated for the symbol browser to work.
- \item[Assembler] Options concerning the reading of assembler blocks (-R on
- the command line) and the generated assembler (\var{-A} on the command line)
- \end{description}
- Under the tab pages, the {\em Conditional defines} entry box is visible;
- here symbols to define can be entered. The symbols should be separated with
- semicolons. The syntax tab of the compiler options dialog is shown in
- \seefig{ocompa}.
- \FPCpic{The syntax options tab}{ide}{ocompa}
- In this dialog, the following options can be set:
- \begin{description}
- \item[Delphi 2 extensions on]
- Enables the use of classes and exceptions (\seeo{Sd} on the command-line).
- \item[C-like operators]
- Allows the use of some extended operators such as \var{+=, -=} etc.
- (\seeo{Sc} on the command-line).
- \item[Stop after first error] when checked, the compiler stops after the
- first error. Normally the compiler continues compiling till a fatal error is
- reached. (\seeo{Se} on the command-line)
- \item[Allow label and goto] Allow the use of label declarations and goto
- statements (\seeo{Sg} on the command line).
- \item[C++ styled inline] allows the use of inlined functions (\seeo{Sc} on
- the command-line).
- \item[TP/BP 7.0 compatibility] Try to be more \tp compatible (\seeo{So} on
- the command-line).
- \item[Delphi compatibility] try to be more \delphi compatible (\seeo{Sd} on
- the command-line).
- \item[Allow STATIC in objects] Allow the \var{Static} modifier for object
- methods (\seeo{St} on the command-line)
- \item[Strict var-strings] Not used.
- \item[Extended syntax] Not used.
- \item[Allow MMX operations] Allow MMX operations.
- \end{description}
- The code generation tab of the compiler options dialog is shown in
- \seefig{ocompb}.
- \FPCpic{The code generation options tab}{ide}{ocompb}
- In this dialog, the following options can be set:
- \begin{description}
- \item[Run-time checks] Controls what run-time checking code is generated. If
- such a check fails, a run-time error is generated.
- the following checking code can be generated:
- \begin{description}
- \item[Range checking] Code that checks the results of enumeration and subset
- type operations is generated (\seeo{Cr} command-line option)
- \item[Stack checking] Code that checks whether the stack limit is not
- reached is generated (\seeo{Cs} command-line option)
- \item[I/O checking] Code that checks the result of IO operations is
- generated. (\seeo{Ci} command-line option).
- \item[Integer overflow checking] The result of integer operations is
- checked (\seeo{Co} command-line option)
- \end{description}
- \item[Target processor] Set the target process for optimizations. The
- compiler can use different optimizations for different processors. This
- corresponds to the \var{Op} option.
- \begin{description}
- \item[i386/i486] Code is optimized for less than Pentium processors.
- \item[Pentium/pentiumMMX] Code is optimized for Pentium processors.
- \item[PPro/PII/c6x86/K6] Code is optimized for Pentium pro and higher
- processors.
- \end{description}
- \item[Optimizations] What optimizations should be used when compiling:
- \begin{description}
- \item[Generate faster code] Corresponds to the \var{-OG} command-line option.
- \item[Generate smaller code] Corresponds to the \var{-Og} command-line option.
- \item[Use register variables] Corresponds to the \var{-Or} command-line
- option.
- \item[Uncertain optimizations] Corresponds to the \var{-Ou} command-line
- option.
- \item[Level 1 optimizations] Corresponds to the \var{O1} command-line
- option.
- \item[Level 2 optimizations] Corresponds to the \var{O1} command-line
- option.
- \end{description}
- \end{description}
- More information on these switches can be found in \sees{codegen}.
- The verbose tab of the compiler options dialog is shown in
- \seefig{ocompc}.
- \FPCpic{The verbosity options tab}{ide}{ocompc}
- In this dialog, the following verbosity options (\seeo{v} on the
- command-line) can be set:
- \begin{description}
- \item[Warnings] Generate warnings, corresponds to \var{-vw} on the
- command-line.
- \item[Notes] Generate notes, corresponds to \var{-vn} on the
- command-line.
- \item[Hints] Generate hints, corresponds to \var{-vh} on the
- command-line.
- \item[General info] Generate general information, corresponds to \var{-vi} on the
- command-line.
- \item[User,tried info] Generate information on used and tried files. Corresponds to \var{-vut} on the
- command-line.
- \item[All] Switch on full verbosity. Corresponds to \var{-va} on the
- command-line.
- \item[Show all procedure if error] If an error using overloaded procedure
- occurs, show all procedures. Corresponds to \var{-vb} on the
- command-line.
- \end{description}
- The browser tab of the compiler options dialog is shown in
- \seefig{ocompd}.
- \FPCpic{The browser options tab}{ide}{ocompd}
- In this dialog, the browser options can be set:
- \begin{description}
- \item[No browser] (default) no browser information is generated by the
- compiler.
- \item[Only global browser] Browser information is generated for global
- symbols only, i.e. symbols defined not in a procedure or function (\var{-b} on the command-line)
- \item[Local and global browser] Browser information is generated for all
- symbols, i.e. also for symbols that are defined in procedures or functions
- (\var{-bl} on the command-line)
- \end{description}
- \begin{remark}
- If no browser information is generated, the symbol browser of the IDE will
- not work.
- \end{remark}
- The assembler tab of the compiler options dialog is shown in
- \seefig{ocompe}.
- \FPCpic{The assembler options tab}{ide}{ocompe}
- In this dialog, the assembler reader and writer options can be set:
- \begin{description}
- \item[Assembler reader] This allows to set the style of the assembler blocks
- in the sources:
- \begin{description}
- \item[Direct assembler] The assembler blocks are copied as-is to the output
- (\var{-Rdirect} on the command-line).
- \item[AT\&T assembler] The assembler is written in \var{AT\&T} style
- assembler (\var{-Ratt} on the command-line).
- \item[Intel style assembler] The assembler is written in \var{Intel} style
- assembler blocks (\var{-Rintel} on the command-line).
- \end{description}
- remark that this option is global, but locally the assembler style can be
- changed with compiler directives.
- \item[Assembler info] When writing assembler files, this option decides
- which extra information is written to the assembler file in comments:
- \begin{description}
- \item[List source] The source lines are written to the assembler files
- together with the generated assembler (\var{-al} on the command line).
- \item[List register allocation] The compilers internal register
- allocation/deallocation information is written to the assembler file
- (\var{-ar} on the command-line).
- \item[List temp allocation] The temporary register allocation/deallocation
- is written to the assembler file. (\var{-at} on the command-line).
- \end{description}
- The latter two of these options are mainly useful for debugging the
- compiler itself, it should be rarely necessary to use these.
- \item[Assembler output] This option tells the compiler what assembler output
- should be generated.
- \begin{description}
- \item[Use default output] This depends on the target.
- \item[Use GNU as] assemble using \gnu \file{as} (\var{-Aas} on the
- command-line).
- \item[Use NASM coff] produce NASM coff assembler (go32v2, \var{-Anasmcoff} on the
- command-line)
- \item[Use NASM elf] produce NASM elf assembler (\linux, \var{-Anasmelf} on
- the command-line).
- \item[Use NASM obj] produce NASM obj assembler (\var{-Anasmobj} on the
- command-line).
- \item[Use MASM] produce MASM (Microsoft assembler) assembler (\var{-Amasm} on the
- command-line).
- \item[Use TASM] produce TASM (Turbo Assembler) assembler (\var{-Atasm} on the
- command-line).
- \item[Use coff] Write binary coff files directly using the internal
- assembler (go32v2, \var{-Acoff} on the command-line).
- \item[Use pecoff] Write binary pecoff files files directly using the
- internal writer. (Win32)
- \end{description}
- \end{description}
- %
- % Linker options
- %
- \subsection{Linker options}
- The linker options can be set in the menu \menu{Options|Linker}. It allows
- to determine how libraries and units are linked, and how the linker should
- be called.
- The linker options dialog is shown in \seefig{olinker}.
- \FPCpic{The linker options dialog}{ide}{olinker}
- The following options can be set:
- \begin{description}
- \item[Call linker after] If this option is set then a script is written
- which calls the linker. This corresponds to the \seeo{s} on the
- command-line.
- \item[Preferred library type] With this option, the type of library to be
- linked in can be set:
- \begin{description}
- \item[Target default] This depends on the platform.
- \item[Dynamic libraries] Tries to link in units in dynamical libraries.
- (option \var{-XD} on the command-line)
- \item[Static libraries] Tries to link in units in statical libraries.
- (option \var{-XS} on the command-line)
- \item[Smart libraries] Tries to link in units in smartlinked libraries.
- (option \var{-XX} on the command-line)
- \end{description}
- \end{description}
- %
- % Memory sizes dialog
- %
- \subsection{Memory sizes}
- The memory sizes dialog (reachable via \menu{options|Memory sizes}) allows
- to enter the memory sizes for the project.
- The memory sizes dialog is shown in \seefig{omemsize}.
- \FPCpic{The memory sizes dialog}{ide}{omemsize}
- The following sizes can be entered:
- \begin{description}
- \item[Stack size] Sets the size of the stack in bytes;
- (option \var{-Cs} on the command line). This size may be ignored on some
- systems.
- \item[Heap size] Sets the size of the heap in bytes; (option \var{-Ch} on
- the command-line). Note that the heap grows dynamically as much as the OS
- allows.
- \end{description}
- %
- % Debugging options
- %
- \subsection{Debug options}
- \label{se:debugoptions}
- In the debug options dialog some options for inclusion of debug information
- in the binary can be set; it is also possible to add additional compiler
- options in this dialog.
- The debug options dialog is shown in \seefig{odebug}.
- \FPCpic{The debug options dialog}{ide}{odebug}
- The following options can be set:
- \begin{description}
- \item[Debugging information] tells the compiler which debug information
- should be compiled in. One of following options can be chosen:
- \begin{description}
- \item[Strip all debug symbols from executable] Will strip all debug nd
- symbol information from the binary. (option \var{-Xs} on the command-line).
- \item[Generate debug symbol information] include debug information in the
- binary (option \var{-g} on the command-line). Please note that no debug
- information for units in the Run-Time Library will be included, unless a
- version of the RTL compiled with debug information is available. Only units
- specific to the current project will have debug information included.
- \item[Generate also backtrace lines information] Will compile with debug
- information, and will additionally include the \file{lineinfo} unit in the
- binary, so in case of an error the backtrace will contain the filenames and
- linenumbers of procedures in the call-stack. (Option \var{-gl} on the
- command-line)
- \end{description}
- \item[Profiling switches] Tells the compiler whether or not profile code
- should be included in the binary.
- \begin{description}
- \item[No profile information] Has no effect, as it is the default.
- \item[Generate Profile code for gprof] If checked, profiling code is
- included in the binary (option \var{-p} on the command-line).
- \end{description}
- \item[Addition compiler args] Here arbitrary options can be entered as they
- would be entered on the command-line, they will be passed on to the compiler
- as typed here.
- \item[Debuggee redirection]
- If checked, an attempt will be made to redirect the output of the program
- being debugged to another window (terminal).
- \end{description}
-
- %
- % The switches mode.
- %
- \subsection{The switches mode}
- \label{se:compilermode}
- The IDE allows to save a set of compiler settings under a common name; it
- provides 3 names under which the switches can be saved:
- \begin{description}
- \item[Normal] For normal (fast) compilation.
- \item[Debug] For debugging; intended to set most debug switches on. Also
- useful for setting conditional defines that e.g. allow to include some
- debug code.
- \item[release] For a compile of the program as it should be released, debug
- information should be off, the binary should be stripped, and optimizations
- should be used.
- \end{description}
- Selecting one of these modes will load the compiler options as they were
- saved the last time the selected mode was active, i.e. it doesn't
- specifically set or unset options.
- When setting and saving compiler options, be sure to select the correct
- switch mode first; it makes little sense to set debug options while the
- release switch is active.
- The switches mode dialog is shown in \seefig{oswitch}.
- \FPCpic{The switches mode dialog}{ide}{oswitch}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Customize the IDE
- \section{Customizing the IDE}
- The IDE is configurable in a wide range: Colors can be changed, screen
- resolution. The configuration setting can reached via the
- sub-menu \var{Environment} in the \var{Options} menu.
- %
- % general preferences
- %
- \subsection{Preferences}
- The {\em preferences dialog} is called by the menu item
- \menu{Options|Environment|Preferences}.
- The preferences dialog is shown in \seefig{oeprefs}.
- \FPCpic{The preferences dialog}{ide}{oeprefs}
- \begin{description}
- \item[Video modes]
- The drop down list at the top of the dialog allows to select a video mode.
- The available video modes depend on the system on which the IDE
- is running.
- \begin{remark}
- \begin{enumerate}
- \item The video mode must be selected by pressing space or clicking
- on it. If the drop down list is opened while leaving the dialog,
- the new video mode will not be applied.
- \item For the \dos version of the IDE, the following should be noted:
- When using VESA modes, the display refresh rate may be very low.
- On older graphics card (1998 and before), it is possible to use the
- {\em UniVBE} driver of {\em SciTech}\footnote{It can be downloaded from
- \seeurl{http://www.informatik.fh-muenchen.de/~ifw98223/vbehz.htm}
- {http://www.informatik.fh-muenchen.de/\~{}ifw98223/vbehz.htm}}
- % It is quite outdated
- %(last update somewhere in 1998).
- %For newer graphics cards which support VESA 3.0, you can try to get one
- %of the TSR programs
- %\footnote{\textbf{T}erminate and \textbf{S}tay \textbf{R}esisdent}
- % available at the net to customize the refresh rate.
- %%%%!!!!!!!! footnote with URL
- \end{enumerate}
- \end{remark}
- \item[Desktop File]
- Specifies where the desktop file is saved: the current directory, or the
- directory where the config file was found;
- \item[Auto save]
- Here it is possible to set which files are saved when a program is run or
- when the IDE is exited:
- \begin{description}
- \item[Editor files] The contents of all open edit windows will be saved.
- \item[Environment] The current environment settings will be saved
- \item[Desktop] The desktop file with all desktop settings (open windows,
- history lists, breakpoints etc.) will be saved.
- \end{description}
- \item[Options]
- Some special behaviour of the IDE can be specified here:
- \begin{description}
- \item[Auto track source]
- \item[Close on go to source] When checked, the messages window is closed
- when the 'go to source line' action is executed.
- \item[Change dir on open] When a file is opened, the directory of that file
- is made the current working directory.
- \end{description}
- \end{description}
- %
- % Desktop customization
- %
- \subsection{The desktop}
- \label{se:prefdesktop}
- The desktop preferences dialog allows to specify what elements of the
- desktop are saved across sessions, i.e. they are saved when the IDE is left,
- and they are again restored when the IDE is started the next time.
- They are saved in a file \file{fp.dsk}.
- The desktop preferences dialog is shown in \seefig{oedesk}.
- \FPCpic{The desktop preferences dialog}{ide}{oedesk}
- The following elements can be saved and restored across IDE sessions:
- \begin{description}
- \item[History lists] Most entry boxes have a history list where previous
- entries are saved and can be selected. When this option is saved, these
- entries are saved in the desktop file. On by default.
- \item[Clipboard content]
- When checked, the contents of the clipboard is also saved to disk. Off by
- default.
- \item[Watch expressions]
- When checked, all watch expressions are saved in the desktop file. Off by
- default.
- \item[Breakpoints]
- When checked, all break points with their properties are saved in the
- desktop file. Off by default.
- \item[Open windows]
- When checked, the list of files in open editor windows is saved in the
- desktop file, and the windows will be restored the next time the IDE
- is run. On by default.
- \item[Symbol information]
- When checked, the information for the symbol browser is saved in the desktop
- file. Off by default.
- \item[CodeComplete wordlist]
- When checked, the list of code-completion words is saved. On by default.
- \item[CodeTemplates]
- When checked, the defined code-templates are saved. On by default.
- \end{description}
- %
- % Editor customization
- %
- \subsection{The Editor}
- Several aspects of the editor window behaviour can be set in this dialog.
- The editor preferences dialog is shown in \seefig{oeeditor}.
- \FPCpic{The editor preferences dialog}{ide}{oeeditor}
- The following elements can be set in the editor preferences dialog:
- \begin{description}
- \item[Create backup files]
- Whenever an editor file is saved, a backup is made of the old file. On by
- default.
- \item[Auto indent mode]
- Smart indenting is on. This means that pressing \key{Enter} will position the
- cursor on the next line in the same column where text starts on the current
- line. On by default.
- \item[Use tab characters]
- When the tab key is pressed, use a tab character. Normally, when the tab key
- is pressed, spaces are inserted. When this option is checked, tab characters
- will be inserted instead. Off by default.
- \item[Backspace unindents]
- Pressing the \key{Bksp} key will unindent if the beginning of the text on
- the current line is reached, instead of deleting just the previous
- character. On by default.
- \item[Persistent blocks]
- When a selection is made, and the cursor is moved, the selection is not
- destroyed, i.e. the selected block stays selected. On by default.
- \item[Syntax highlight]
- Use syntax highlighting on the files that have an extension which appears in
- the list of highlight extensions. On by default.
- \item[Block insert cursor]
- The insert cursor is a block instead of an underscore character. By default
- the overwrite cursor is a block. This option reverses that behaviour. Off by
- default.
- \item[Vertical blocks]
- When selecting blocks over several lines, the block doesn't select the whole
- lines in the block, it selects the lines till the column on which the cursor
- is located. Off by default.
- \item[Highlight column]
- When checked, the current column (i.e. the column where the cursor is) is
- highlighted. Off by default.
- \item[Highlight row]
- When checked, the current row (i.e. the row where the cursor is) is
- highlighted. Off by default.
- \item[Auto closing brackets]
- When an opening bracket character is typed, the closing bracket is also
- inserted at once. Off by default.
- \item[Keep trailing spaces]
- When saving a file, the spaces at the end of lines are stripped off. This
- behaviour disables that behaviour, i.e. any trailing spaces are also saved
- to file. Off by default.
- \item[Codecomplete enabled]
- Enable code completion. On by default.
- \item[enable folds]
- ???. Off by default.
- \item[Tab size]
- The number of spaces that are inserted when the \key{Tab} key is pressed.
- The default value is 8.
- \item[Indent size]
- The number of spaces a block is indented when calling the block indent function.
- The default value is 2.
- \item[Highlight extensions]
- When syntax highlighting is on, the list of file masks entered here will be
- used to determine which files are highlighted. File masks should be
- separated with semicolon (;) characters. The default is
- \file{*.pas;*.pp;*.inc}.
- \item[File patterns needing tabs]
- Some files (such as makefiles) need actual tab characters instead of spaces.
- Here a series of file masks can be entered for which tab characters will
- always be used. Default is \file{make*;make*.*}.
- \end{description}
- \begin{remark}
- These options will not be applied to already opened windows, only newly
- opened windows will have these options.
- \end{remark}
- %
- % Mouse customization
- %
- \subsection{Mouse}
- \label{se:prefmouse}
- The mouse options dialog is called by the menu item
- \menu{Options|Environment|Mouse}. It allows to adjust the behaviour of the
- mouse as well as the sensitivity of the mouse.
- The mouse options dialog is shown in \seefig{oemouse}.
- \FPCpic{The mouse options dialog}{ide}{oemouse}
- \begin{description}
- \item[Mouse double click]
- The slider can be used to adjust the double click speed. Fast means that the
- time between two clicks is very short, slow means that the time between two
- mouse clicks can be quite long.
- \item[Reverse mouse buttons]
- the behaviour of the left and right mouse buttons can be changed by
- by checking the checkbox; this is especially useful for left-handed people.
- \item[Ctrl+Right mouse button]
- Assigns an action to a right mouse button click while holding the
- \key{Ctrl} key pressed.
- \item[Ctrl+Left mouse button]
- Assigns an action to a left mouse button click while holding the
- \key{Ctrl} key pressed.
- \end{description}
- The following actions can be assigned to \key{Ctrl}-right mouse button or
- \key{Alt}-right mouse button:
- \begin{description}
- \item [Topic search] The keyword at the mouse cursor is searched in the
- help index.
- \item [Go to cursor] The program is executed until the line where
- the mouse cursor is located.
- \item [Breakpoint] Set a breakpoint at the mouse cursor position.
- \item [Evaluate] Evaluate the value of the variable at the mouse
- cursor.
- \item [Add watch] Add the variable at the mouse cursor to the
- watch list.
- \item [Browse symbol] The symbol at the mouse cursor is displayed
- in the browser.
- \end{description}
- %
- % Color customization
- %
- \subsection{Colors}
- \label{se:prefcolors}
- Almost all elements of the IDE such as borders input fields, buttons and so
- on can have their color set in this dialog. The dialog sets the colors for
- all elements at once, i.e. it is not so that the color of one particular
- button can be set.
- The syntax highlighting colors for the editor windows of the IDE can also
- be set in this dialog.
- The colors dialog is shown in \seefig{oecolors}.
- \FPCpic{The colors dialog}{ide}{oecolors}
- The following elements are visible in the color dialog:
- \begin{description}
- \item[Group]
- Here the group to be customized is displayed; A group is a specific window
- or series of windows in the editor. A special group is {\em Syntax} which
- sets the colors for syntax highlighting.
- \begin{description}
- \item[Browser] Sets the colors for the symbol browser window.
- \item[Clock] Sets the colors for the clock in the menu.
- \item[Desktop] Sets the colors for the desktop.
- \item[Dialogs] Sets the colors for the dialog windows.
- \item[Editor] Sets the colors for the editor windows.
- \item[Help] Sets the colors for the help windows.
- \item[Menus] Sets the colors used in the menus.
- \item[Syntax] Sets the colors used when performing syntax highlighting in the
- editor windows.
- \end{description}
- \item[item]
- Here the item for the current group can be selected. The foreground and
- background of this item can be set using the color selectors on the right of
- the dialog.
- \item[Foreground]
- Sets the foreground color of the selected item.
- \item[background]
- Sets the background color of the selected item.
- \item[Sample text]
- This shows the colors of the selected item in a sample text.
- \end{description}
- Setting a good color scheme is important especially for syntax highlighting;
- a good syntax highlighting scheme helps in eliminating errors when typing,
- without needing to compile the sources.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % The help system
- \section{The help system}
- More information on how to handle the IDE, or about the use of various
- calls in the RTL, explanations regarding the syntax of a Pascal statement,
- can be found in the \emph{help system}. The help system is activated
- by pressing \key{F1}.
- \subsection{Navigating in the help system}
- The help system contains hyperlinks; these are sensitive locations that
- lead to another topic in the help system. They are marked by a different
- color. The hyperlinks can be activated in 2 ways:
- \begin{enumerate}
- \item by clicking them with the mouse,
- \item by using the \key{Tab} and \key{Shift-Tab} keys to move between
- the different hyperlinks of a page and the \key{Enter} key can be used
- to activate them.
- \end{enumerate}
- The contents of the help system is displayed, if \key{Shift-F1} is
- pressed. To go back to the previous help topic, press \key{Alt-F1}.
- This also works if the help window isn't displayed on the desktop; the help
- window will then be activated.
- %
- % Working with help files.
- %
- \subsection{Working with help files}
- The IDE contains a help system which can display the following file formats:
- \begin{description}
- \item[TPH] The help format for the Turbo Pascal help viewer.
- \item[INF] The OS/2 help format.
- \item[NG] The Norton Guide Help format.
- \item[HTML] HTML files.
- \end{description}
- In future some more formats may be added. However, the above formats should
- cover already a wide spectrum of help files available.
- \begin{remark}
- Concerning the support for HTML files the following should be noted:
- \begin{enumerate}
- \item
- The HTML viewer of the help system is limited, it can only handle the
- most basic HTML files (graphics excluded), since it is only designed
- to display the \fpc help files. \footnote{...but feel free to improve it and send patches to the
- \fpc development team...}.
- \item
- When the HTML help viewer encounters a graphics file, it will try and find a
- file with the same name but an extension of \file{.ans}; If this file is
- found, this will be interpreted as a file with ANSI escape sequences, and
- these will be used to display a text image. The displays of the IDE dialogs
- in the IDE help files are made in this way.
- \end{enumerate}
- \end{remark}
- The menu item \menu{Help|Files} permits to add and delete help files to the
- list of files in the help table of contents.
- The help files dialog is displayed in \seefig{helpfils}.
- \FPCpic{The help files dialog}{ide}{helpfils}
- The dialogs lists the files that will be presented in the table of contents
- window of the help system. Each entry has a small descriptive title and a
- filename next to it. The following actions are available when adding help
- files:
- \begin{description}
- \item[New] Adds a new file. IDE will display a prompt, in which the
- location of the help file should be entered.
- If the added file is an HTML file, a dialog box will be displayed
- which asks for a title. This title will then be included in the
- contents of help.
- \item[Delete] Deletes the currently highlighted file from the help system.
- It is \emph{not} deleted from the hard disk, only the help system entry is
- removed.
- \item[Cancel] Discards all changes and closes the dialog.
- \item[OK] Saves the changes and closes the dialog.
- \end{description}
- The \fpc documentation in HTML format can be added to the IDE's help system,
- this way the documentation can be viewed from within the IDE. If \fpc has
- been installed using the installer, the installer should have added the
- FPC documentation to the list of help files, if the documentation was
- installed as well.
- %
- % The about dialog.
- %
- \subsection{The about dialog}
- \label{se:about}
- The {\em about dialog}, reachable through (\menu{Help|About...}) shows some
- information about the IDE, such as the version number, the date it was built,
- what compiler and debugger it uses. When reporting bugs about the IDE, please
- use the information given by this dialog to identify the version of the IDE
- that was used.
- It also displays some copyright information.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Keyboard shortcuts
- \section{Keyboard shortcuts}
- \label{se:keyshortcuts}
- A lot of keyboard shortcuts used by the IDE are compatible with
- WordStar and should be well known to Turbo Pascal users.
- Below are the following tables:
- \begin{enumerate}
- \item In \seet{shortcutsgeneral} some shortcuts for handling the IDE windows
- and Help are listed.
- \item In \seet{shortcutscompiler} the shortcuts for compiling, running and
- debugging a program are presented.
- \item In \seet{shortcutsnavigation} the navigation keys are described.
- \item In \seet{shortcutsedit} the editing keys are listed.
- \item In \seet{shortcutsblock} lists all block command shortcuts.
- \item In \seet{shortcutsselection} all selection-changing shortcuts are
- presented.
- \item In \seet{shortcutsmisc} some general shortcuts are presented,
- which do not fit in the previous categories.
- \end{enumerate}
- \begin{FPCltable}{p{5cm}ll}{General}{shortcutsgeneral}
- Command & Key shortcut & Alternative \\ \hline
- Help & \key{F1} & \\
- Goto last help topic & \key{Alt-F1} & \\
- Search word at cursor position in help & \key{Ctrl-F1} & \\
- Help index & \key{Shift-F1} & \\
- Close active window & \key{Alt-F3} & \\
- Zoom/Unzoom window & \key{F5} & \\
- Move/Zoom active window & \key{Ctrl-F5} & \\
- Switch to next window & \key{F6} & \\
- Switch to last window & \key{Shift-F6} & \\
- Menu & \key{F10} & \\
- Local menu & \key{Alt-F10} & \\
- List of windows & \key{Alt-0} & \\
- Active another window & \key{Alt-<digit>} & \\
- Call \file{grep} utility & \key{Shift-F2} & \\
- Exit IDE & \key{Alt-X} & \\
- \end{FPCltable}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{FPCltable}{p{5cm}ll}{Compiler}{shortcutscompiler}
- Command & Key shortcut & Alternative \\
- \hline
- Reset debugger/program & \key{Ctrl-F2} & \\
- Display call stack & \key{Ctrl-F3} & \\
- Run til cursor & \key{F4} & \\
- Switch to user screen & \key{Alt-F5} & \\
- Trace into & \key{F7} & \\
- Add watch & \key{Ctrl-F7} & \\
- Step over & \key{F8} & \\
- Set breakpoint at current line & \key{Ctrl-F8} & \\
- Make & \key{F9} & \\
- Run & \key{Ctrl-F9} & \\
- Compile the active source file & \key{Alt-F9} & \\
- Message & \key{F11} & \\
- Compiler messages & \key{F12} & \\
- \end{FPCltable}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{FPCltable}{p{5cm}ll}{Text navigation}{shortcutsnavigation}
- Command & Key shortcut & Alternative \\
- \hline
- Char left & \key{Arrow left} & \key{Ctrl-S} \\
- Char right & \key{Arrow right} & \key{Ctrl-D} \\
- Line up & \key{Arrow up} & \key{Ctrl-E} \\
- Line down & \key{Arrow down} & \key{Ctrl-X} \\
- Word left & \key{Ctrl-Arrow left} & \key{Ctrl-A} \\
- Word right & \key{Ctrl-Arrow right} & \key{Ctrl-F} \\
- Scroll one line up & \key{Ctrl-W} & \\
- Scroll one line down & \key{Ctrl-Z} & \\
- Page up & \key{PageUp} & \key{Ctrl-R} \\
- Page down & \key{PageDown} & \\
- Beginning of Line & \key{Pos1} & \key{Ctrl-Q-S} \\
- End of Line & \key{End} & \key{Ctrl-Q-D} \\
- First line of window & \key{Ctrl-Pos1} & \key{Ctrl-Q-E} \\
- Last line of window & \key{Ctrl-End} & \key{Ctrl-Q-X} \\
- First line of file & \key{Ctrl-PageUp} & \key{Ctrl-Q-R} \\
- Last line of file & \key{Ctrl-PageDown} & \key{Ctrl-Q-C} \\
- Last cursor position & \key{Ctrl-Q-P} & \\
- \end{FPCltable}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{FPCltable}{p{5cm}ll}{Edit}{shortcutsedit}
- Command & Key shortcut & Alternative \\
- \hline
- Delete char & \key{Del} & \key{Ctrl-G} \\
- Delete left char & \key{Backspace} & \key{Ctrl-H} \\
- Delete line & \key{Ctrl-Y} & \\
- Delete til end of line & \key{Ctrl-Q-Y} & \\
- Delete word & \key{Ctrl-T} & \\
- Insert line & \key{Ctrl-N} & \\
- Toggle insert mode & \key{Insert} & \key{Ctrl-V} \\
- \end{FPCltable}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{FPCltable}{p{5cm}ll}{Block commands}{shortcutsblock}
- Command & Key shortcut & Alternative \\
- \hline
- Goto Beginning of selected text & \key{Ctrl-Q-B} & \\
- Goto end of selected text & \key{Ctrl-Q-K} & \\
- Select current line & \key{Ctrl-K-L} & \\
- Print selected text & \key{Ctrl-K-P} & \\
- Select current word & \key{Ctrl-K-T} & \\
- Delete selected text & \key{Ctrl-Del} & \key{Ctrl-K-Y} \\
- Copy selected text to cursor position & \key{Ctrl-K-C} & \\
- Move selected text to cursor position & \key{Ctrl-K-V} & \\
- Copy selected text to clipboard & \key{Ctrl-Ins} & \\
- Move selected text to the clipboard & \key{Shift-Del} & \\
- Indent block one column & \key{Ctrl-K-I} & \\
- Unindent block one column & \key{Ctrl-K-U} & \\
- Insert text from clipboard & \key{Shift-Insert} & \\
- Insert file & \key{Ctrl-K-R} & \\
- Write selected text to file & \key{Ctrl-K-W} & \\
- Uppercase current block & \key{Ctrl-K-N} & \\
- \end{FPCltable}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{FPCltable}{p{5cm}ll}{Change selection}{shortcutsselection}
- Command & Key shortcut & Alternative \\
- \hline
- Mark beginning of selected text & \key{Ctrl-K-B} & \\
- Mark end of selected text& \key{Ctrl-K-K} & \\
- Remove selection & \key{Ctrl-K-Y} & \\
- Extend selection one char to the left & \key{Shift-Arrow left} & \\
- Extend selection one char to the right & \key{Shift-Arrow right} & \\
- Extend selection to the beginning of the line & \key{Shift-Pos1} & \\
- Extend selection to the end of the line & \key{Shift-End} & \\
- Extend selection to the same column in the last row & \key{Shift-Arrow up} & \\
- Extend selection to the same column in the next row & \key{Shift-Arrow down} & \\
- Extend selection to the end of the line & \key{Shift-End} & \\
- Extend selection one word to the left & \key{Ctrl-Shift-Arrow left} & \\
- Extend selection one word to the right & \key{Ctrl-Shift-Arrow right} & \\
- Extend selection one page up & \key{Shift-PageUp} & \\
- Extend selection one page down & \key{Shift-PageDown} & \\
- Extend selection to the beginning of the file & \key{Ctrl-Shift-Pos1} &
- \key{Ctrl-Shift-PageUp} \\
- Extend selection to the end of the file & \key{Ctrl-Shift-End} &
- \key{Ctrl-Shift-PageUp} \\
- \end{FPCltable}
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{FPCltable}{p{5cm}ll}{Misc. commands}{shortcutsmisc}
- Command & Key shortcut & Alternative \\
- \hline
- Save file & \key{F2} & \key{Ctrl-K-S} \\
- Open file & \key{F3} & \\
- Search & \key{Ctrl-Q-F} & \\
- Search again & \key{Ctrl-L}\ & \\
- Search and replace & \key{Ctrl-Q-A} & \\
- Set mark & \key{Ctrl-K-n} (where n can be 0..9) & \\
- Goto mark & \key{Ctrl-Q-n} (where n can be 0..9) & \\
- Undo & \key{Alt-Backspace} & \\
- \end{FPCltable}
- %
- % $Log$
- % Revision 1.7 2003-03-17 18:19:59 michael
- % + fixed some chars that confused tex4ht.
- %
- % Revision 1.6 2003/03/16 15:22:18 peter
- % * support for hevea
- % * provided local copies or required styles since debian does not
- % supply the listings.sty anymore
- %
- % Revision 1.5 2002/05/20 12:03:19 michael
- % + Added -t option.
- %
- % Revision 1.4 2001/11/05 19:08:47 michael
- % + Some small corrections before 1.0.6
- %
- % Revision 1.3 2001/07/19 15:07:56 michael
- % + Merged from fixbranch
- %
- % Revision 1.1.2.21 2001/06/29 19:44:47 peter
- % * create pdf without latex2html installed
- %
- % Revision 1.1.2.20 2000/12/08 23:59:53 michael
- % + Some changes noted by marco
- %
- % Revision 1.1.2.19 2000/12/08 21:15:39 michael
- % + spell-checked
- %
- % Revision 1.1.2.18 2000/12/08 20:41:50 michael
- % + Fixed some references
- %
- % Revision 1.1.2.17 2000/12/08 16:55:54 michael
- % + Some remarks corrected
- %
- % Revision 1.1.2.16 2000/12/08 12:57:21 michael
- % + Documented tdf format
- %
- % Revision 1.1.2.15 2000/12/07 23:19:04 michael
- % + Added memsizes, goto line and debug options
- %
- % Revision 1.1.2.14 2000/12/06 23:08:56 michael
- % + Linker options dialog documented
- %
- % Revision 1.1.2.13 2000/12/03 22:32:06 michael
- % + More compiler options
- %
- % Revision 1.1.2.12 2000/11/28 22:53:06 michael
- % + Better sized pictures, start of options
- %
- % Revision 1.1.2.11 2000/11/21 22:02:25 peter
- % * html image including fixed
- %
- % Revision 1.1.2.10 2000/11/21 18:44:38 peter
- % * removed last gifs
- %
- % Revision 1.1.2.9 2000/11/21 14:16:06 michael
- % + Pages 1-23 corrected after remarks from Luk Vandelaer
- %
- % Revision 1.1.2.8 2000/11/20 18:53:52 michael
- % + Documenting tools
- %
- % Revision 1.1.2.7 2000/11/19 23:08:32 michael
- % + Further implementation.
- %
- % Revision 1.1.2.6 2000/11/18 00:06:11 michael
- % + Added code templates
- % + Added syntax highlighting
- % + Added codecompletion
- % + Added gdb window
- %
- % Revision 1.1.2.5 2000/11/15 23:43:32 michael
- % + Debugging finished
- %
- % Revision 1.1.2.4 2000/11/15 18:58:35 michael
- % + Debug continued
- %
- % Revision 1.1.2.3 2000/11/14 23:24:09 michael
- % + Documented run menu
- %
- % Revision 1.1.2.2 2000/11/13 23:46:03 michael
- % + documented blocks, search, and the browser
- %
- % Revision 1.1.2.1 2000/11/12 23:40:32 michael
- % + Changes for final version
- %
- % Revision 1.1 2000/07/13 09:10:04 michael
- % + Initial import
- %
- % Revision 1.5 2000/03/04 07:47:28 florian
- % * some corrections and some new stuff
- %
- % Revision 1.4 2000/03/01 15:39:40 florian
- % * some new stuff
- %
- % Revision 1.3 2000/02/28 17:45:40 florian
- % * a lot of new stuff
- %
|