fpvars.pas 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. {
  2. $Id$
  3. This file is part of the Free Pascal Integrated Development Environment
  4. Copyright (c) 1998 by Berczi Gabor
  5. Global variables for the IDE
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. **********************************************************************}
  12. {$i globdir.inc}
  13. unit FPVars;
  14. interface
  15. uses Objects,Views,App,
  16. WUtils,WEditor,
  17. FPConst,
  18. FPDebug,
  19. FPUtils,FPViews,FPCalc;
  20. type
  21. TRecentFileEntry = record
  22. FileName : string{$ifdef GABOR}[60]{$endif};
  23. LastPos : TPoint;
  24. end;
  25. TCompPhase = (cpNothing,cpCompiling,cpLinking,
  26. cpAborted,cpFailed,cpDone);
  27. const ClipboardWindow : PClipboardWindow = nil;
  28. CalcWindow : PCalculator = nil;
  29. RecentFileCount : integer = 0;
  30. LastCompileTime : cardinal = 0;
  31. OpenExts : string{$ifdef GABOR}[40]{$endif} = '*.pas;*.pp;*.inc';
  32. HighlightExts : string{$ifdef GABOR}[40]{$endif} = '*.pas;*.pp;*.inc';
  33. TabsPattern : string{$ifdef GABOR}[40]{$endif} = 'make*;make*.*';
  34. SourceDirs : string{$ifdef GABOR}[40]{$endif} = '';
  35. PrimaryFile : string{$ifdef GABOR}[60]{$endif} = '';
  36. PrimaryFileMain : string{$ifdef GABOR}[60]{$endif} = '';
  37. PrimaryFileSwitches : string{$ifdef GABOR}[80]{$endif} = '';
  38. PrimaryFilePara : string{$ifdef GABOR}[80]{$endif} = '';
  39. GDBOutputFile : string{$ifdef GABOR}[50]{$endif} = GDBOutputFileName;
  40. IsEXECompiled : boolean = false;
  41. { LinkAfter : boolean = true; changed into a function }
  42. MainHasDebugInfo : boolean = false;
  43. UseMouse : boolean = true;
  44. MainFile : string{$ifdef GABOR}[60]{$endif} = '';
  45. PrevMainFile : string{$ifdef GABOR}[60]{$endif} = '';
  46. EXEFile : string{$ifdef GABOR}[60]{$endif} = '';
  47. CompilationPhase : TCompPhase = cpNothing;
  48. ProgramInfoWindow: PProgramInfoWindow = nil;
  49. GDBWindow : PGDBWindow = nil;
  50. DisassemblyWindow : PDisassemblyWindow = nil;
  51. BreakpointsWindow : PBreakpointsWindow = nil;
  52. WatchesWindow : PWatchesWindow = nil;
  53. UserScreenWindow : PScreenWindow = nil;
  54. StackWindow : PStackWindow = nil;
  55. RegistersWindow : PRegistersWindow = nil;
  56. FPUWindow : PFPUWindow = nil;
  57. HeapView : PFPHeapView = nil;
  58. ClockView : PFPClockView = nil;
  59. HelpFiles : WUtils.PUnsortedStringCollection = nil;
  60. ShowStatusOnError: boolean = true;
  61. StartupDir : string{$ifdef GABOR}[60]{$endif} = '.'+DirSep;
  62. IDEDir : string{$ifdef GABOR}[60]{$endif} = '.'+DirSep;
  63. {$ifdef Unix}
  64. SystemIDEDir : string{$ifdef GABOR}[60]{$endif} = '';
  65. {$endif Unix}
  66. INIFileName : string{$ifdef GABOR}[50]{$endif} = ININame;
  67. SwitchesPath : string{$ifdef GABOR}[60]{$endif} = SwitchesName;
  68. CtrlMouseAction : integer = acTopicSearch;
  69. AltMouseAction : integer = acBrowseSymbol;
  70. StartupOptions : longint = 0;
  71. LastExitCode : integer = 0;
  72. ASCIIChart : PFPASCIIChart = nil;
  73. BackgroundPath : string{$ifdef GABOR}[60]{$endif} = BackgroundName;
  74. DesktopPath : string{$ifdef GABOR}[60]{$endif} = DesktopName;
  75. DesktopFileFlags : longint = dfHistoryLists+dfOpenWindows+
  76. dfCodeCompleteWords+dfCodeTemplates;
  77. DesktopLocation : byte = dlConfigFileDir;
  78. AutoSaveOptions : longint = asEnvironment+asDesktop;
  79. MiscOptions : longint = moChangeDirOnOpen+moCloseOnGotoSource;
  80. EditorModified : boolean = false;
  81. IniCenterDebuggerRow : boolean = true;
  82. SleepTimeOut : longint = trunc(10*18.2);
  83. {$ifdef USE_EXTERNAL_COMPILER}
  84. UseExternalCompiler : boolean = true;
  85. ExternalCompilerExe : string = 'ppc386'+ExeExt;
  86. {$endif USE_EXTERNAL_COMPILER}
  87. ShowReadme : boolean = true;
  88. AskRecompileIfModifiedFlag : boolean = true;
  89. ActionCommands : array[acFirstAction..acLastAction] of word =
  90. (cmHelpTopicSearch,cmGotoCursor,cmToggleBreakpoint,
  91. cmEvaluate,cmAddWatch,cmBrowseAtCursor);
  92. AppPalette : string = CIDEAppColor;
  93. var RecentFiles : array[1..MaxRecentFileCount] of TRecentFileEntry;
  94. implementation
  95. END.
  96. {
  97. $Log$
  98. Revision 1.1 2001-08-04 11:30:24 peter
  99. * ide works now with both compiler versions
  100. Revision 1.1.2.5 2001/03/12 17:34:56 pierre
  101. + Disassembly window started
  102. Revision 1.1.2.4 2001/02/13 16:04:01 pierre
  103. * fixes for bugs 1280
  104. Revision 1.1.2.3 2000/12/30 22:52:27 peter
  105. * check modified while in debug mode. But placed it between a
  106. conditional again as it reports also if the file was already modified
  107. before the first compile.
  108. * remove unsaved file checks when compiling without primary file so it
  109. works the same as with a primary file set.
  110. Revision 1.1.2.2 2000/12/20 14:27:49 pierre
  111. * fp.ini for unix
  112. Revision 1.1.2.1 2000/11/14 17:40:44 pierre
  113. + External linking now optional
  114. Revision 1.1 2000/07/13 09:48:36 michael
  115. + Initial import
  116. Revision 1.33 2000/06/16 08:50:42 pierre
  117. + new bunch of Gabor's changes
  118. Revision 1.32 2000/04/25 08:42:33 pierre
  119. * New Gabor changes : see fixes.txt
  120. Revision 1.31 2000/04/18 11:42:37 pierre
  121. lot of Gabor changes : see fixes.txt
  122. Revision 1.30 2000/03/13 20:35:36 pierre
  123. * IniPath replaced by IniFileName
  124. + UseMouse variable
  125. Revision 1.29 2000/03/08 16:50:27 pierre
  126. + MainHasDebugInfo boolean var
  127. Revision 1.28 2000/03/02 22:34:38 pierre
  128. + external compiler support
  129. Revision 1.27 2000/02/07 11:53:11 pierre
  130. Gabor changes
  131. Revision 1.26 2000/02/04 00:08:35 pierre
  132. + IniCenterDebuggerRow
  133. Revision 1.25 1999/09/16 14:34:59 pierre
  134. + TBreakpoint and TWatch registering
  135. + WatchesCollection and BreakpointsCollection stored in desk file
  136. * Syntax highlighting was broken
  137. Revision 1.24 1999/09/13 16:24:43 peter
  138. + clock
  139. * backspace unident like tp7
  140. Revision 1.23 1999/09/13 11:44:00 peter
  141. * fixes from gabor, idle event, html fix
  142. Revision 1.22 1999/08/16 18:25:25 peter
  143. * Adjusting the selection when the editor didn't contain any line.
  144. * Reserved word recognition redesigned, but this didn't affect the overall
  145. syntax highlight speed remarkably (at least not on my Amd-K6/350).
  146. The syntax scanner loop is a bit slow but the main problem is the
  147. recognition of special symbols. Switching off symbol processing boosts
  148. the performance up to ca. 200%...
  149. * The editor didn't allow copying (for ex to clipboard) of a single character
  150. * 'File|Save as' caused permanently run-time error 3. Not any more now...
  151. * Compiler Messages window (actually the whole desktop) did not act on any
  152. keypress when compilation failed and thus the window remained visible
  153. + Message windows are now closed upon pressing Esc
  154. + At 'Run' the IDE checks whether any sources are modified, and recompiles
  155. only when neccessary
  156. + BlockRead and BlockWrite (Ctrl+K+R/W) implemented in TCodeEditor
  157. + LineSelect (Ctrl+K+L) implemented
  158. * The IDE had problems closing help windows before saving the desktop
  159. Revision 1.21 1999/08/03 20:22:38 peter
  160. + TTab acts now on Ctrl+Tab and Ctrl+Shift+Tab...
  161. + Desktop saving should work now
  162. - History saved
  163. - Clipboard content saved
  164. - Desktop saved
  165. - Symbol info saved
  166. * syntax-highlight bug fixed, which compared special keywords case sensitive
  167. (for ex. 'asm' caused asm-highlighting, while 'ASM' didn't)
  168. * with 'whole words only' set, the editor didn't found occourences of the
  169. searched text, if the text appeared previously in the same line, but didn't
  170. satisfied the 'whole-word' condition
  171. * ^QB jumped to (SelStart.X,SelEnd.X) instead of (SelStart.X,SelStart.Y)
  172. (ie. the beginning of the selection)
  173. * when started typing in a new line, but not at the start (X=0) of it,
  174. the editor inserted the text one character more to left as it should...
  175. * TCodeEditor.HideSelection (Ctrl-K+H) didn't update the screen
  176. * Shift shouldn't cause so much trouble in TCodeEditor now...
  177. * Syntax highlight had problems recognizing a special symbol if it was
  178. prefixed by another symbol character in the source text
  179. * Auto-save also occours at Dos shell, Tool execution, etc. now...
  180. Revision 1.20 1999/07/28 23:11:25 peter
  181. * fixes from gabor
  182. Revision 1.19 1999/07/10 01:24:21 pierre
  183. + First implementation of watches window
  184. Revision 1.18 1999/06/30 23:58:19 pierre
  185. + BreakpointsList Window implemented
  186. with Edit/New/Delete functions
  187. + Individual breakpoint dialog with support for all types
  188. ignorecount and conditions
  189. (commands are not yet implemented, don't know if this wolud be useful)
  190. awatch and rwatch have problems because GDB does not annotate them
  191. I fixed v4.16 for this
  192. Revision 1.17 1999/06/28 19:32:27 peter
  193. * fixes from gabor
  194. Revision 1.16 1999/06/21 23:37:58 pierre
  195. + added LinkAfter var for post linking with -s option
  196. Revision 1.15 1999/03/23 15:11:36 peter
  197. * desktop saving things
  198. * vesa mode
  199. * preferences dialog
  200. Revision 1.14 1999/03/19 16:04:32 peter
  201. * new compiler dialog
  202. Revision 1.13 1999/03/16 12:38:15 peter
  203. * tools macro fixes
  204. + tph writer
  205. + first things for resource files
  206. Revision 1.12 1999/03/12 01:14:02 peter
  207. * flag if trytoopen should look for other extensions
  208. + browser tab in the tools-compiler
  209. Revision 1.11 1999/03/08 14:58:15 peter
  210. + prompt with dialogs for tools
  211. Revision 1.10 1999/03/01 15:42:07 peter
  212. + Added dummy entries for functions not yet implemented
  213. * MenuBar didn't update itself automatically on command-set changes
  214. * Fixed Debugging/Profiling options dialog
  215. * TCodeEditor converts spaces to tabs at save only if efUseTabChars is
  216. set
  217. * efBackSpaceUnindents works correctly
  218. + 'Messages' window implemented
  219. + Added '$CAP MSG()' and '$CAP EDIT' to available tool-macros
  220. + Added TP message-filter support (for ex. you can call GREP thru
  221. GREP2MSG and view the result in the messages window - just like in TP)
  222. * A 'var' was missing from the param-list of THelpFacility.TopicSearch,
  223. so topic search didn't work...
  224. * In FPHELP.PAS there were still context-variables defined as word instead
  225. of THelpCtx
  226. * StdStatusKeys() was missing from the statusdef for help windows
  227. + Topic-title for index-table can be specified when adding a HTML-files
  228. Revision 1.9 1999/02/19 18:43:48 peter
  229. + open dialog supports mask list
  230. Revision 1.8 1999/02/11 13:10:04 pierre
  231. + GDBWindow only with -dGDBWindow for now : still buggy !!
  232. Revision 1.7 1999/02/05 12:07:55 pierre
  233. + SourceDirs added
  234. Revision 1.6 1999/02/04 13:15:40 pierre
  235. + TabsPattern added
  236. Revision 1.5 1999/01/21 11:54:26 peter
  237. + tools menu
  238. + speedsearch in symbolbrowser
  239. * working run command
  240. Revision 1.4 1999/01/12 14:29:41 peter
  241. + Implemented still missing 'switch' entries in Options menu
  242. + Pressing Ctrl-B sets ASCII mode in editor, after which keypresses (even
  243. ones with ASCII < 32 ; entered with Alt+<###>) are interpreted always as
  244. ASCII chars and inserted directly in the text.
  245. + Added symbol browser
  246. * splitted fp.pas to fpide.pas
  247. Revision 1.3 1999/01/04 11:49:52 peter
  248. * 'Use tab characters' now works correctly
  249. + Syntax highlight now acts on File|Save As...
  250. + Added a new class to syntax highlight: 'hex numbers'.
  251. * There was something very wrong with the palette managment. Now fixed.
  252. + Added output directory (-FE<xxx>) support to 'Directories' dialog...
  253. * Fixed some possible bugs in Running/Compiling, and the compilation/run
  254. process revised
  255. Revision 1.1 1998/12/28 15:47:54 peter
  256. + Added user screen support, display & window
  257. + Implemented Editor,Mouse Options dialog
  258. + Added location of .INI and .CFG file
  259. + Option (INI) file managment implemented (see bottom of Options Menu)
  260. + Switches updated
  261. + Run program
  262. Revision 1.0 1998/12/23 07:34:40 gabor
  263. }