diff --git a/ide/fpide.pas b/ide/fpide.pas index 075e4b4bdd..a705025e94 100644 --- a/ide/fpide.pas +++ b/ide/fpide.pas @@ -1326,7 +1326,7 @@ begin cmHelpContents : HelpContents; cmHelpIndex : HelpHelpIndex; cmHelpDebug : HelpDebugInfos; -{ cmHelpTopicSearch: HelpTopicSearch;} + cmHelpTopicSearch: HelpTopicSearch; cmHelpPrevTopic : HelpPrevTopic; cmHelpUsingHelp : HelpUsingHelp; cmHelpFiles : HelpFiles; diff --git a/ide/whelp.pas b/ide/whelp.pas index b63d7e6ab2..0e31407fb7 100644 --- a/ide/whelp.pas +++ b/ide/whelp.pas @@ -833,6 +833,18 @@ end; function THelpFacility.TopicSearch(Keyword: string; var FileID: word; var Context: THelpCtx): boolean; +function ScanHelpFileExact(H: PHelpFile): boolean; {$ifndef FPC}far;{$endif} +function SearchExact(P: PIndexEntry): boolean; {$ifndef FPC}far;{$endif} +begin + SearchExact:=UpcaseStr(P^.Tag^)=Keyword; +end; +var P: PIndexEntry; +begin + H^.LoadIndex; + P:=H^.IndexEntries^.FirstThat(@SearchExact); + if P<>nil then begin FileID:=H^.ID; Context:=P^.HelpCtx; end; + ScanHelpFileExact:=P<>nil; +end; function ScanHelpFile(H: PHelpFile): boolean; {$ifndef FPC}far;{$endif} function Search(P: PIndexEntry): boolean; {$ifndef FPC}far;{$endif} begin @@ -845,9 +857,14 @@ begin if P<>nil then begin FileID:=H^.ID; Context:=P^.HelpCtx; end; ScanHelpFile:=P<>nil; end; +var + PH : PHelpFile; begin Keyword:=UpcaseStr(Keyword); - TopicSearch:=HelpFiles^.FirstThat(@ScanHelpFile)<>nil; + PH:=HelpFiles^.FirstThat(@ScanHelpFileExact); + if not assigned(PH) then + PH:=HelpFiles^.FirstThat(@ScanHelpFile); + TopicSearch:=PH<>nil; end; function THelpFacility.BuildIndexTopic: PTopic;