Ver código fonte

Add comment & cleanup.

Martijn Laan 1 ano atrás
pai
commit
b02b421f8d
2 arquivos alterados com 25 adições e 25 exclusões
  1. 23 24
      Components/ScintEdit.pas
  2. 2 1
      Projects/Src/CompForm.pas

+ 23 - 24
Components/ScintEdit.pas

@@ -121,6 +121,8 @@ type
     function GetRawSelText: TScintRawString;
     function GetRawSelText: TScintRawString;
     function GetRawText: TScintRawString;
     function GetRawText: TScintRawString;
     function GetReadOnly: Boolean;
     function GetReadOnly: Boolean;
+    function GetSearchFlags(const Options: TScintFindOptions): Integer; overload;
+    function GetSearchFlags(const MatchCase: Boolean): Integer; overload;
     function GetSelection: TScintRange;
     function GetSelection: TScintRange;
     function GetSelectionAnchorPosition(Selection: Integer): Integer;
     function GetSelectionAnchorPosition(Selection: Integer): Integer;
     function GetSelectionCaretPosition(Selection: Integer): Integer;
     function GetSelectionCaretPosition(Selection: Integer): Integer;
@@ -723,17 +725,9 @@ end;
 function TScintEdit.FindRawText(const StartPos, EndPos: Integer;
 function TScintEdit.FindRawText(const StartPos, EndPos: Integer;
   const S: TScintRawString; const Options: TScintFindOptions;
   const S: TScintRawString; const Options: TScintFindOptions;
   out MatchRange: TScintRange): Boolean;
   out MatchRange: TScintRange): Boolean;
-var
-  Flags: Integer;
 begin
 begin
-  Flags := 0;
-  if sfoMatchCase in Options then
-    Flags := Flags or SCFIND_MATCHCASE;
-  if sfoWholeWord in Options then
-    Flags := Flags or SCFIND_WHOLEWORD;
-
   SetTarget(StartPos, EndPos);
   SetTarget(StartPos, EndPos);
-  Call(SCI_SETSEARCHFLAGS, Flags, 0);
+  Call(SCI_SETSEARCHFLAGS, GetSearchFlags(Options), 0);
   Result := Call(SCI_SEARCHINTARGET, Length(S), LPARAM(PAnsiChar(S))) >= 0;
   Result := Call(SCI_SEARCHINTARGET, Length(S), LPARAM(PAnsiChar(S))) >= 0;
   if Result then
   if Result then
     MatchRange := GetTarget;
     MatchRange := GetTarget;
@@ -1002,6 +996,23 @@ begin
   Result := Call(SCI_GETREADONLY, 0, 0) <> 0;
   Result := Call(SCI_GETREADONLY, 0, 0) <> 0;
 end;
 end;
 
 
+function TScintEdit.GetSearchFlags(const Options: TScintFindOptions): Integer;
+begin
+  Result := 0;
+  if sfoMatchCase in Options then
+    Result := Result or SCFIND_MATCHCASE;
+  if sfoWholeWord in Options then
+    Result := Result or SCFIND_WHOLEWORD;
+end;
+
+function TScintEdit.GetSearchFlags(const MatchCase: Boolean): Integer;
+begin
+  if MatchCase then
+    Result := GetSearchFlags([sfoMatchCase])
+  else
+    Result := GetSearchFlags([]);
+end;
+
 function TScintEdit.GetSelection: TScintRange;
 function TScintEdit.GetSelection: TScintRange;
 begin
 begin
   Result.StartPos := Call(SCI_GETSELECTIONSTART, 0, 0);
   Result.StartPos := Call(SCI_GETSELECTIONSTART, 0, 0);
@@ -1156,12 +1167,8 @@ end;
 function TScintEdit.RawSelTextEquals(const S: TScintRawString;
 function TScintEdit.RawSelTextEquals(const S: TScintRawString;
   const MatchCase: Boolean): Boolean;
   const MatchCase: Boolean): Boolean;
 begin
 begin
-  var SearchFlags := 0;
-  if MatchCase then
-    SearchFlags := SearchFlags or SCFIND_MATCHCASE;
-
   Call(SCI_TARGETFROMSELECTION, 0, 0);
   Call(SCI_TARGETFROMSELECTION, 0, 0);
-  Call(SCI_SETSEARCHFLAGS, SearchFlags, 0);
+  Call(SCI_SETSEARCHFLAGS, GetSearchFlags(MatchCase), 0);
   Result := False;
   Result := False;
   if Call(SCI_SEARCHINTARGET, Length(S), LPARAM(PAnsiChar(S))) >= 0 then begin
   if Call(SCI_SEARCHINTARGET, Length(S), LPARAM(PAnsiChar(S))) >= 0 then begin
     var Target := GetTarget;
     var Target := GetTarget;
@@ -1220,23 +1227,15 @@ end;
 
 
 procedure TScintEdit.SelectAllOccurrences(const MatchCase: Boolean);
 procedure TScintEdit.SelectAllOccurrences(const MatchCase: Boolean);
 begin
 begin
-  var SearchFlags := 0;
-  if MatchCase then
-    SearchFlags := SearchFlags or SCFIND_MATCHCASE;
-
   Call(SCI_TARGETWHOLEDOCUMENT, 0, 0);
   Call(SCI_TARGETWHOLEDOCUMENT, 0, 0);
-  Call(SCI_SETSEARCHFLAGS, SearchFlags, 0);
+  Call(SCI_SETSEARCHFLAGS, GetSearchFlags(MatchCase), 0);
   Call(SCI_MULTIPLESELECTADDEACH, 0, 0);
   Call(SCI_MULTIPLESELECTADDEACH, 0, 0);
 end;
 end;
 
 
 procedure TScintEdit.SelectNextOccurrence(const MatchCase: Boolean);
 procedure TScintEdit.SelectNextOccurrence(const MatchCase: Boolean);
 begin
 begin
-  var SearchFlags := 0;
-  if MatchCase then
-    SearchFlags := SearchFlags or SCFIND_MATCHCASE;
-
   Call(SCI_TARGETWHOLEDOCUMENT, 0, 0);
   Call(SCI_TARGETWHOLEDOCUMENT, 0, 0);
-  Call(SCI_SETSEARCHFLAGS, SearchFlags, 0);
+  Call(SCI_SETSEARCHFLAGS, GetSearchFlags(MatchCase), 0);
   Call(SCI_MULTIPLESELECTADDNEXT, 0, 0);
   Call(SCI_MULTIPLESELECTADDNEXT, 0, 0);
 end;
 end;
 
 

+ 2 - 1
Projects/Src/CompForm.pas

@@ -1048,7 +1048,8 @@ begin
     else begin
     else begin
       { The built in Esc (SCI_CANCEL) simply drops all additional selections
       { The built in Esc (SCI_CANCEL) simply drops all additional selections
         and does not empty the main selection, It doesn't matter if Esc is
         and does not empty the main selection, It doesn't matter if Esc is
-        pressed once or twice. Implement our own behaviour, same as VSCode. }
+        pressed once or twice. Implement our own behaviour, same as VSCode.
+        Also see https://github.com/microsoft/vscode/issues/118835. }
       if FActiveMemo.SelectionCount > 1 then
       if FActiveMemo.SelectionCount > 1 then
         FActiveMemo.RemoveAdditionalSelections
         FActiveMemo.RemoveAdditionalSelections
       else if not FActiveMemo.SelEmpty then
       else if not FActiveMemo.SelEmpty then