Browse Source

* on CtrlF1, first do an exact name search, only allow longer names if exact is not found

git-svn-id: trunk@6126 -
pierre 18 years ago
parent
commit
0ba499339a
2 changed files with 19 additions and 2 deletions
  1. 1 1
      ide/fpide.pas
  2. 18 1
      ide/whelp.pas

+ 1 - 1
ide/fpide.pas

@@ -1326,7 +1326,7 @@ begin
              cmHelpContents  : HelpContents;
              cmHelpIndex     : HelpHelpIndex;
              cmHelpDebug     : HelpDebugInfos;
-{             cmHelpTopicSearch: HelpTopicSearch;}
+             cmHelpTopicSearch: HelpTopicSearch;
              cmHelpPrevTopic : HelpPrevTopic;
              cmHelpUsingHelp : HelpUsingHelp;
              cmHelpFiles     : HelpFiles;

+ 18 - 1
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;