123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746 |
- {
- $Id$
- This file is part of the Free Pascal Integrated Development Environment
- Copyright (c) 1998 by Berczi Gabor
- Help routines for the IDE
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program 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.
- **********************************************************************}
- unit FPHelp;
- interface
- uses
- Drivers,
- {$ifdef FVISION}
- FVConsts,
- {$else}
- Commands,HelpCtx,
- {$endif}
- WHelp,WHlpView,WHTML,
- WEditor,WCEdit,
- WViews,WHTMLScn,
- FPViews;
- type
- PIDEStatusLine = ^TIDEStatusLine;
- TIDEStatusLine = object(TAdvancedStatusLine)
- function Hint(AHelpCtx: Word): String; virtual;
- procedure HandleEvent(var Event: TEvent); virtual;
- end;
- PFPHTMLFileLinkScanner = ^TFPHTMLFileLinkScanner;
- TFPHTMLFileLinkScanner = object(THTMLFileLinkScanner)
- function CheckURL(const URL: string): boolean; virtual;
- function CheckText(const Text: string): boolean; virtual;
- procedure ProcessDoc(Doc: PHTMLLinkScanFile); virtual;
- end;
- procedure Help(FileID, Context: THelpCtx; Modal: boolean);
- procedure HelpIndex(Keyword: string);
- procedure HelpTopicSearch(Editor: PEditor);
- procedure HelpTopic(const S: string);
- procedure CloseHelpWindows;
- procedure InitHelpSystem;
- procedure DoneHelpSystem;
- procedure InitHelpFiles;
- procedure DoneHelpFiles;
- procedure CheckHelpSystem;
- procedure PushStatus(S: string);
- procedure SetStatus(S: string);
- procedure ClearStatus;
- procedure PopStatus;
- const
- HelpWindow : PFPHelpWindow = nil;
- HelpInited : boolean = false;
- implementation
- uses Objects,Views,App,MsgBox,
- WUtils,WOAHelp,WHTMLHlp,WNGHelp,WOS2Help,WVPHelp,WWinHelp,
- FPString,FPConst,FPVars,FPUtils;
- const
- MaxStatusLevel = {$ifdef FPC}10{$else}1{$endif};
- var StatusStack : array[0..MaxStatusLevel] of string[MaxViewWidth];
- const
- StatusStackPtr : integer = 0;
- procedure TIDEStatusLine.HandleEvent(var Event: TEvent);
- begin
- case Event.What of
- evBroadcast :
- case Event.Command of
- cmUpdate : Update;
- end;
- end;
- inherited HandleEvent(Event);
- end;
- function TIDEStatusLine.Hint(AHelpCtx: Word): String;
- var S: string;
- begin
- case AHelpCtx of
- hcNoContext : S:='';
- hcDragging : S:='';
- hcSourceWindow : S:='';
- hcHelpWindow : S:='';
- hcCalcWindow : S:='';
- hcInfoWindow : S:='';
- hcClipboardWindow:S:='';
- hcBrowserWindow : S:='';
- hcMessagesWindow: S:='';
- hcCompilerMessagesWindow: S:='';
- hcASCIITableWindow: S:='';
- hcGDBWindow : S:=hint_rawgdbwindow;
- hcDisassemblyWindow : S:=hint_disassemblywindow;
- hcBreakpointListWindow : S:=hint_allbreakpoints;
- hcSystemMenu : S:=hint_systemmenu;
- hcUpdate : S:=hint_update;
- hcAbout : S:=hint_about;
- hcFileMenu : S:=hint_filemenu;
- hcNew : S:=hint_filenew;
- hcNewFromTemplate:S:=hint_filenewfromtemplate;
- hcOpen : S:=hint_fileopen;
- hcSave : S:=hint_filesave;
- hcSaveAs : S:=hint_filesaveas;
- hcSaveAll : S:=hint_filesaveall;
- hcChangeDir : S:=hint_changedir;
- hcDOSShell : S:=hint_dosshell;
- hcQuit : S:=hint_exit;
- hcRecentFileBase..hcRecentFileBase+10
- : S:=hint_openrecentfile;
- hcEditMenu : S:=hint_editmenu;
- hcUndo : S:=hint_editundo;
- hcRedo : S:=hint_editredo;
- hcCut : S:=hint_editcut;
- hcCopy : S:=hint_editcopy;
- hcPaste : S:=hint_editpaste;
- hcCopyWin : S:=hint_editcopywin;
- hcPasteWin : S:=hint_editpastewin;
- hcClear : S:=hint_editclear;
- hcShowClipboard : S:=hint_showclipboard;
- hcSearchMenu : S:=hint_searchmenu;
- hcFind : S:=hint_searchfind;
- hcReplace : S:=hint_searchreplace;
- hcSearchAgain : S:=hint_searchagain;
- hcGotoLine : S:=hint_gotoline;
- hcObjects : S:=hint_objects;
- hcModules : S:=hint_modules;
- hcGlobals : S:=hint_globals;
- hcSymbol : S:=hint_symbol;
- hcRunMenu : S:=hint_runmenu;
- hcRun : S:=hint_run;
- hcParameters : S:=hint_runparameters;
- hcResetDebugger : S:=hint_resetprogram;
- hcContToCursor : S:=hint_rununtilcursor;
- hcUntilReturn : S:=hint_rununtilreturn;
- hcUserScreen : S:=hint_userscreen;
- hcCompileMenu : S:=hint_compilemenu;
- hcCompile : S:=hint_compile;
- hcMake : S:=hint_make;
- hcBuild : S:=hint_build;
- hcTarget : S:=hint_target;
- hcPrimaryFile : S:=hint_primaryfile;
- hcClearPrimary : S:=hint_clearprimaryfile;
- hcInformation : S:=hint_information;
- hcCompilerMessages:S:=hint_showmessages;
- hcDebugMenu : S:=hint_debugmenu;
- hcToggleBreakpoint : S:=hint_togglebreakpoint;
- hcNewBreakpoint : S:=hint_createnewbreakpoint;
- hcEditBreakpoint : S:=hint_editbreakpoint;
- hcDeleteBreakpoint : S:=hint_deletebreakpoint;
- hcOpenGDBWindow : S:=hint_opengdbwindow;
- hcAddWatch : S:=hint_addwatch;
- hcWatchesWindow : S:=hint_watches;
- hcStackWindow : S:=hint_callstack;
- hcBreakpointList : S:=hint_editbreakpoints;
- hcToolsMenu : S:=hint_toolsmenu;
- hcCalculator : S:=hint_calculator;
- hcGrep : S:=hint_grep;
- hcMsgGotoSource : S:=hint_gotosource;
- hcRegistersWindow : S:=hint_registers;
- hcToolsMessages : S:=hint_messageswindow;
- hcToolsBase..
- hcToolsBase+MaxToolCount
- : S:=hint_usertool;
- hcASCIITable : S:=hint_asciitable;
- hcOptionsMenu : S:=hint_optionsmenu;
- hcSwitchesMode : S:=hint_switchesmode;
- hcCompiler,
- hcCompilerNoAltX : S:=hint_compiler;
- hcMemorySizes : S:=hint_memorysizes;
- hcLinker : S:=hint_linkeroptions;
- hcDebugger : S:=hint_debugoptions;
- hcDirectories : S:=hint_directories;
- hcBrowser,
- hcBrowserOptions: S:=hint_browser;
- hcTools : S:=hint_tools;
- hcEnvironmentMenu:S:=hint_environmentmenu;
- hcPreferences : S:=hint_preferences;
- hcEditor : S:=hint_editoroptions;
- hcCodeCompleteOptions:S:=hint_codecomplete;
- hcCodeTemplateOptions:S:=hint_codetemplates;
- hcMouse : S:=hint_mouseoptions;
- hcDesktopOptions: S:=hint_desktopoptions;
- hcStartup : S:=hint_startup;
- hcColors : S:=hint_colors;
- hcOpenINI : S:=hint_openini;
- hcSaveINI : S:=hint_saveini;
- hcSaveAsINI : S:=hint_saveasini;
- hcWindowMenu : S:=hint_windowmenu;
- hcTile : S:=hint_tile;
- hcCascade : S:=hint_cascade;
- hcCloseAll : S:=hint_closeall;
- hcResize : S:=hint_resize;
- hcZoom : S:=hint_zoom;
- hcNext : S:=hint_next;
- hcPrev : S:=hint_prev;
- hcClose : S:=hint_closewindow;
- hcWindowList : S:=hint_windowlist;
- hcUserScreenWindow:S:=hint_userscreenwindow;
- hcHelpMenu : S:=hint_helpmenu;
- hcHelpContents : S:=hint_helpcontents;
- hcHelpIndex : S:=hint_helpindex;
- hcHelpTopicSearch:S:=hint_helptopicsearch;
- hcHelpPrevTopic : S:=hint_helpprevtopic;
- hcHelpUsingHelp : S:=hint_helphowtouse;
- hcHelpFiles : S:=hint_helpfiles;
- hcOpenAtCursor : S:=hint_openatcursor;
- hcBrowseAtCursor: S:=hint_browseatcursor;
- hcEditorOptions : S:=hint_editoroptionscur;
- else S:='???';
- end;
- Hint:=S;
- end;
- procedure TFPHTMLFileLinkScanner.ProcessDoc(Doc: PHTMLLinkScanFile);
- begin
- PushStatus(FormatStrStr(msg_indexingfile,Doc^.GetDocumentURL));
- inherited ProcessDoc(Doc);
- PopStatus;
- end;
- function TFPHTMLFileLinkScanner.CheckURL(const URL: string): boolean;
- var OK: boolean;
- const HTTPPrefix = 'http:';
- FTPPrefix = 'ftp:';
- begin
- OK:=inherited CheckURL(URL);
- if OK then OK:=DirAndNameOf(URL)<>'';
- if OK then OK:=CompareText(copy(ExtOf(URL),1,4),'.HTM')=0;
- if OK then OK:=CompareText(copy(URL,1,length(HTTPPrefix)),HTTPPrefix)<>0;
- if OK then OK:=CompareText(copy(URL,1,length(FTPPrefix)),FTPPrefix)<>0;
- CheckURL:=OK;
- end;
- function TFPHTMLFileLinkScanner.CheckText(const Text: string): boolean;
- var OK: boolean;
- S: string;
- begin
- S:=Trim(Text);
- OK:=(S<>'') and (copy(S,1,1)<>'[');
- CheckText:=OK;
- end;
- procedure InitHelpSystem;
- procedure AddHelpFile(HelpFile,Param: string);
- begin
- {$IFDEF DEBUG}SetStatus(msg_LoadingHelpFile+' ('+SmartPath(HelpFile)+')');{$ENDIF}
- if HelpFacility^.AddFile(HelpFile,Param)=nil then
- ErrorBox(FormatStrStr(msg_failedtoloadhelpfile,HelpFile),nil);
- {$IFDEF DEBUG}SetStatus(msg_LoadingHelpFile);{$ENDIF}
- end;
- var I,P: sw_integer;
- S: string;
- Param: string;
- begin
- New(HelpFacility, Init);
- WOAHelp.RegisterHelpType;
- WNGHelp.RegisterHelpType;
- WOS2Help.RegisterHelpType;
- WWinHelp.RegisterHelpType;
- WVPHelp.RegisterHelpType;
- WHTMLHlp.RegisterHelpType;
- PushStatus(msg_LoadingHelpFiles);
- for I:=0 to HelpFiles^.Count-1 do
- begin
- S:=HelpFiles^.At(I)^; Param:='';
- P:=Pos('|',S);
- if P>0 then
- begin Param:=copy(S,P+1,High(S)); S:=copy(S,1,P-1); end;
- AddHelpFile(S,Param);
- end;
- PopStatus;
- end;
- procedure CheckHelpSystem;
- begin
- if HelpInited then Exit;
- InitHelpSystem;
- HelpInited:=true;
- end;
- procedure DoneHelpSystem;
- begin
- if assigned(HelpFacility) then
- begin
- Dispose(HelpFacility, Done);
- HelpFacility:=nil;
- end;
- HelpInited:=false;
- end;
- procedure HelpCreateWindow;
- var R: TRect;
- begin
- CheckHelpSystem;
- if HelpWindow=nil then
- begin
- Desktop^.GetExtent(R); R.Grow(-15,-3); Dec(R.A.Y);
- New(HelpWindow, Init(R, dialog_help, 0, 0, SearchFreeWindowNo));
- if HelpWindow<>nil then
- begin
- HelpWindow^.Hide;
- Desktop^.Insert(HelpWindow);
- end;
- end;
- end;
- procedure Help(FileID, Context: THelpCtx; Modal: boolean);
- begin
- if Modal then
- begin MessageBox(msg_modalhelpnotimplemented,nil,mfInformation+mfInsertInApp+mfOKButton); Exit; end;
- HelpCreateWindow;
- with HelpWindow^ do
- begin
- HelpWindow^.ShowTopic(FileID,Context);
- if GetState(sfVisible)=false then Show;
- MakeFirst;
- end;
- Message(Application,evCommand,cmUpdate,nil);
- end;
- procedure HelpTopicSearch(Editor: PEditor);
- var S: string;
- begin
- if Editor=nil then S:='' else
- S:=GetEditorCurWord(Editor,[]);
- HelpTopic(S);
- end;
- procedure HelpTopic(const S: string);
- var FileID: word;
- Ctx : THelpCtx;
- var Found: boolean;
- begin
- CheckHelpSystem;
- PushStatus(msg_LocatingTopic);
- Found:=HelpFacility^.TopicSearch(S,FileID,Ctx);
- PopStatus;
- if Found then
- Help(FileID,Ctx,false)
- else
- HelpIndex(S);
- end;
- procedure HelpIndex(Keyword: string);
- begin
- HelpCreateWindow;
- with HelpWindow^ do
- begin
- PushStatus(msg_BuildingHelpIndex);
- HelpWindow^.ShowIndex;
- if Keyword<>'' then
- HelpWindow^.HelpView^.Lookup(Keyword);
- PopStatus;
- if GetState(sfVisible)=false then Show;
- MakeFirst;
- end;
- Message(Application,evCommand,cmUpdate,nil);
- end;
- procedure PushStatus(S: string);
- begin
- if StatusLine=nil then
- Exit;
- If StatusStackPtr<=MaxStatusLevel then
- StatusStack[StatusStackPtr]:=PAdvancedStatusLine(StatusLine)^.GetStatusText
- else
- StatusStack[MaxStatusLevel]:=PAdvancedStatusLine(StatusLine)^.GetStatusText;
- SetStatus(S);
- Inc(StatusStackPtr);
- end;
- procedure PopStatus;
- begin
- if StatusLine=nil then
- Exit;
- Dec(StatusStackPtr);
- If StatusStackPtr<=MaxStatusLevel then
- SetStatus(StatusStack[StatusStackPtr])
- else
- SetStatus(StatusStack[MaxStatusLevel]);
- end;
- procedure SetStatus(S: string);
- begin
- if StatusLine=nil then
- Exit;
- PAdvancedStatusLine(StatusLine)^.SetStatusText(S);
- end;
- procedure ClearStatus;
- begin
- PAdvancedStatusLine(StatusLine)^.ClearStatusText;
- end;
- function FPHTMLGetSectionColor(Section: THTMLSection; var Color: byte): boolean;
- var OK: boolean;
- S: string;
- begin
- Color:=0;
- OK:=(ord(Section) in [1..length(CHTMLSectionAttrs)]);
- if OK then
- begin
- S:=#0;
- S:=copy(CHTMLSectionAttrs,ord(Section),1);
- if Assigned(Application)=false then Color:=0 else
- Color:=Application^.GetColor(ord(S[1]));
- if (Color and $0f) = ((Color and $f0) shr 4) then { same color ? }
- OK:=false;
- end;
- FPHTMLGetSectionColor:=OK;
- end;
- function FPNGGetAttrColor(Attr: char; var Color: byte): boolean;
- var OK: boolean;
- begin
- OK:=false;
- case Attr of
- 'A' : OK:=FPHTMLGetSectionColor(hsHeading1,Color);
- 'B' : OK:=FPHTMLGetSectionColor(hsHeading2,Color);
- 'b' : OK:=FPHTMLGetSectionColor(hsHeading5,Color);
- 'U' : OK:=FPHTMLGetSectionColor(hsHeading3,Color);
- 'N' : OK:=FPHTMLGetSectionColor(hsHeading4,Color);
- {$ifdef DEBUGMSG}
- else ErrorBox('Unknown attr encountered : "'+Attr+'"',nil);
- {$endif}
- end;
- FPNGGetAttrColor:=OK;
- end;
- function FPINFGetAttrColor(TextStyle, TextColor: byte; var Color: byte): boolean;
- var OK: boolean;
- begin
- OK:=false;
- case TextColor of
- 1 : OK:=FPHTMLGetSectionColor(hsHeading1,Color);
- 2 : OK:=FPHTMLGetSectionColor(hsHeading2,Color);
- 3 : OK:=FPHTMLGetSectionColor(hsHeading3,Color);
- end;
- FPINFGetAttrColor:=OK;
- end;
- procedure InitHelpFiles;
- begin
- HTMLGetSectionColor:={$ifdef FPC}@{$endif}FPHTMLGetSectionColor;
- NGGetAttrColor:={$ifdef FPC}@{$endif}FPNGGetAttrColor;
- INFGetAttrColor:={$ifdef FPC}@{$endif}FPINFGetAttrColor;
- New(HelpFiles, Init(10,10));
- end;
- procedure DoneHelpFiles;
- begin
- if assigned(HelpFiles) then
- Dispose(HelpFiles, Done);
- end;
- procedure CloseHelpWindows;
- procedure CloseIfHelpWindow(P: PView); {$ifndef FPC}far;{$endif}
- begin
- if P^.HelpCtx=hcHelpWindow then
- begin
- Message(P,evCommand,cmClose,nil);
- {Dispose(P, Done); help windows are only hidden on close so we've
- to destroy them manually
- but this was wrong as it was not correctly
- resetting the corresponding pointer in whelp unit PM }
- end;
- end;
- begin
- Desktop^.ForEach(@CloseIfHelpWindow);
- end;
- END.
- {
- $Log$
- Revision 1.5 2002-01-24 09:21:41 pierre
- * only disable Alt-X in Options|Compiler dialog
- Revision 1.4 2001/10/01 00:24:09 pierre
- * fix several help problems
- Revision 1.3 2001/09/10 10:52:59 pierre
- * fix web bug 1368
- Revision 1.2 2001/08/05 02:01:47 peter
- * FVISION define to compile with fvision units
- Revision 1.1 2001/08/04 11:30:23 peter
- * ide works now with both compiler versions
- Revision 1.1.2.7 2001/03/12 17:34:55 pierre
- + Disassembly window started
- Revision 1.1.2.6 2000/11/29 11:25:59 pierre
- + TFPDlgWindow that handles cmSearchWindow
- Revision 1.1.2.5 2000/11/29 00:54:44 pierre
- + preserve window number and save special windows
- Revision 1.1.2.4 2000/11/27 12:06:48 pierre
- New bunch of Gabor fixes
- Revision 1.1.2.3 2000/11/23 16:33:30 pierre
- * fix Alt-X problem and set HelpCtx for most dialogs
- Revision 1.1.2.2 2000/09/18 13:20:54 pierre
- New bunch of Gabor changes
- Revision 1.1.2.1 2000/08/15 03:40:53 peter
- [*] no more fatal exits when the IDE can't find the error file (containing
- the redirected assembler/linker output) after compilation
- [*] hidden windows are now added always at the end of the Window List
- [*] TINIFile parsed entries encapsulated in string delimiters incorrectly
- [*] selection was incorrectly adjusted when typing in overwrite mode
- [*] the line wasn't expanded when it's end was reached in overw. mode
- [*] the IDE now tries to locate source files also in the user specified
- unit dirs (for ex. as a response to 'Open at cursor' (Ctrl+Enter) )
- [*] 'Open at cursor' is now aware of the extension (if specified)
- Revision 1.1 2000/07/13 09:48:34 michael
- + Initial import
- Revision 1.35 2000/06/26 07:29:23 pierre
- * new bunch of Gabor's changes
- Revision 1.34 2000/06/22 09:07:12 pierre
- * Gabor changes: see fixes.txt
- Revision 1.33 2000/06/16 08:50:40 pierre
- + new bunch of Gabor's changes
- Revision 1.32 2000/05/30 07:18:33 pierre
- + colors for HTML help by Gabor
- Revision 1.31 2000/05/29 10:44:56 pierre
- + New bunch of Gabor's changes: see fixes.txt
- Revision 1.30 2000/05/02 08:42:27 pierre
- * new set of Gabor changes: see fixes.txt
- Revision 1.29 2000/04/25 08:42:33 pierre
- * New Gabor changes : see fixes.txt
- Revision 1.28 2000/03/21 23:31:14 pierre
- adapted to wcedit addition by Gabor
- Revision 1.27 2000/02/07 11:58:01 pierre
- Gabor's code inserted
- Revision 1.26 2000/01/08 18:26:20 florian
- + added a register window, doesn't work yet
- Revision 1.25 2000/01/05 17:25:26 pierre
- * typo error corrected
- Revision 1.24 2000/01/03 11:38:33 michael
- Changes from Gabor
- Revision 1.23 1999/09/09 16:31:45 pierre
- * some breakpoint related fixes and Help contexts
- Revision 1.22 1999/09/09 14:15:27 pierre
- + cmCopyWin,cmPasteWin
- Revision 1.21 1999/08/16 18:25:17 peter
- * Adjusting the selection when the editor didn't contain any line.
- * Reserved word recognition redesigned, but this didn't affect the overall
- syntax highlight speed remarkably (at least not on my Amd-K6/350).
- The syntax scanner loop is a bit slow but the main problem is the
- recognition of special symbols. Switching off symbol processing boosts
- the performance up to ca. 200%...
- * The editor didn't allow copying (for ex to clipboard) of a single character
- * 'File|Save as' caused permanently run-time error 3. Not any more now...
- * Compiler Messages window (actually the whole desktop) did not act on any
- keypress when compilation failed and thus the window remained visible
- + Message windows are now closed upon pressing Esc
- + At 'Run' the IDE checks whether any sources are modified, and recompiles
- only when neccessary
- + BlockRead and BlockWrite (Ctrl+K+R/W) implemented in TCodeEditor
- + LineSelect (Ctrl+K+L) implemented
- * The IDE had problems closing help windows before saving the desktop
- Revision 1.20 1999/08/03 20:22:31 peter
- + TTab acts now on Ctrl+Tab and Ctrl+Shift+Tab...
- + Desktop saving should work now
- - History saved
- - Clipboard content saved
- - Desktop saved
- - Symbol info saved
- * syntax-highlight bug fixed, which compared special keywords case sensitive
- (for ex. 'asm' caused asm-highlighting, while 'ASM' didn't)
- * with 'whole words only' set, the editor didn't found occourences of the
- searched text, if the text appeared previously in the same line, but didn't
- satisfied the 'whole-word' condition
- * ^QB jumped to (SelStart.X,SelEnd.X) instead of (SelStart.X,SelStart.Y)
- (ie. the beginning of the selection)
- * when started typing in a new line, but not at the start (X=0) of it,
- the editor inserted the text one character more to left as it should...
- * TCodeEditor.HideSelection (Ctrl-K+H) didn't update the screen
- * Shift shouldn't cause so much trouble in TCodeEditor now...
- * Syntax highlight had problems recognizing a special symbol if it was
- prefixed by another symbol character in the source text
- * Auto-save also occours at Dos shell, Tool execution, etc. now...
- Revision 1.19 1999/07/12 13:14:17 pierre
- * LineEnd bug corrected, now goes end of text even if selected
- + Until Return for debugger
- + Code for Quit inside GDB Window
- Revision 1.18 1999/07/10 01:24:16 pierre
- + First implementation of watches window
- Revision 1.17 1999/06/30 23:58:14 pierre
- + BreakpointsList Window implemented
- with Edit/New/Delete functions
- + Individual breakpoint dialog with support for all types
- ignorecount and conditions
- (commands are not yet implemented, don't know if this wolud be useful)
- awatch and rwatch have problems because GDB does not annotate them
- I fixed v4.16 for this
- Revision 1.16 1999/06/28 19:32:19 peter
- * fixes from gabor
- Revision 1.15 1999/06/25 00:39:58 pierre
- help for cmSymbol,cmAddWatch,cmStack and cmBreakpoint list
- Revision 1.14 1999/04/07 21:55:46 peter
- + object support for browser
- * html help fixes
- * more desktop saving things
- * NODEBUG directive to exclude debugger
- Revision 1.13 1999/03/23 15:11:28 peter
- * desktop saving things
- * vesa mode
- * preferences dialog
- Revision 1.12 1999/03/16 12:38:09 peter
- * tools macro fixes
- + tph writer
- + first things for resource files
- Revision 1.11 1999/03/01 15:41:53 peter
- + Added dummy entries for functions not yet implemented
- * MenuBar didn't update itself automatically on command-set changes
- * Fixed Debugging/Profiling options dialog
- * TCodeEditor converts spaces to tabs at save only if efUseTabChars is set
- * efBackSpaceUnindents works correctly
- + 'Messages' window implemented
- + Added '$CAP MSG()' and '$CAP EDIT' to available tool-macros
- + Added TP message-filter support (for ex. you can call GREP thru
- GREP2MSG and view the result in the messages window - just like in TP)
- * A 'var' was missing from the param-list of THelpFacility.TopicSearch,
- so topic search didn't work...
- * In FPHELP.PAS there were still context-variables defined as word instead
- of THelpCtx
- * StdStatusKeys() was missing from the statusdef for help windows
- + Topic-title for index-table can be specified when adding a HTML-files
- Revision 1.10 1999/02/22 11:51:35 peter
- * browser updates from gabor
- Revision 1.9 1999/02/19 18:43:45 peter
- + open dialog supports mask list
- Revision 1.8 1999/02/11 19:07:21 pierre
- * GDBWindow redesigned :
- normal editor apart from
- that any kbEnter will send the line (for begin to cursor)
- to GDB command !
- GDBWindow opened in Debugger Menu
- still buggy :
- -echo should not be present if at end of text
- -GDBWindow becomes First after each step (I don't know why !)
- Revision 1.7 1999/02/08 17:40:01 pierre
- + cmContToCursor added
- Revision 1.6 1999/02/08 10:37:43 peter
- + html helpviewer
- Revision 1.5 1999/02/04 12:23:44 pierre
- + cmResetDebugger and cmGrep
- * Avoid StatusStack overflow
- Revision 1.4 1999/01/21 11:54:13 peter
- + tools menu
- + speedsearch in symbolbrowser
- * working run command
- Revision 1.3 1999/01/04 11:49:44 peter
- * 'Use tab characters' now works correctly
- + Syntax highlight now acts on File|Save As...
- + Added a new class to syntax highlight: 'hex numbers'.
- * There was something very wrong with the palette managment. Now fixed.
- + Added output directory (-FE<xxx>) support to 'Directories' dialog...
- * Fixed some possible bugs in Running/Compiling, and the compilation/run
- process revised
- Revision 1.2 1998/12/28 15:47:44 peter
- + Added user screen support, display & window
- + Implemented Editor,Mouse Options dialog
- + Added location of .INI and .CFG file
- + Option (INI) file managment implemented (see bottom of Options Menu)
- + Switches updated
- + Run program
- Revision 1.3 1998/12/22 10:39:42 peter
- + options are now written/read
- + find and replace routines
- }
|