Просмотр исходного кода

+ Case handling for CodeComplete

pierre 24 лет назад
Родитель
Сommit
cc1bf40f41
1 измененных файлов с 30 добавлено и 4 удалено
  1. 30 4
      ide/fpcodcmp.pas

+ 30 - 4
ide/fpcodcmp.pas

@@ -2,7 +2,7 @@ unit FPCodCmp; { CodeComplete }
 
 interface
 
-uses Objects,Drivers,
+uses Objects,Drivers,Dialogs,
      WUtils,WViews;
 
 type
@@ -17,6 +17,7 @@ type
       procedure   HandleEvent(var Event: TEvent); virtual;
     private
       CodeCompleteLB : PAdvancedListBox;
+      RB : PRadioButtons;
       procedure Add;
       procedure Edit;
       procedure Delete;
@@ -30,12 +31,16 @@ function  StoreCodeComplete(var S: TStream): boolean;
 procedure DoneCodeComplete;
 
 const CodeCompleteWords : PCodeCompleteWordList = nil;
+type
+      TCodeCompleteCase = (ccc_unchanged, ccc_lower, ccc_upper, ccc_mixed);
+const
+     CodeCompleteCase : TCodeCompleteCase = ccc_unchanged;
 
 procedure RegisterCodeComplete;
 
 implementation
 
-uses Views,Dialogs,MsgBox,
+uses Views,MsgBox,
 {$ifdef FVISION}
      FVConsts,
 {$else}
@@ -64,7 +69,12 @@ begin
     Text:=CodeCompleteWords^.Lookup(WordS,Index);
     OK:=(Index<>-1) and (length(Text)<>length(WordS));
   end;
-  if OK=false then Text:='';
+  if OK=false then Text:=''
+  else case CodeCompleteCase of
+    ccc_upper : Text:=UpcaseStr(Text);
+    ccc_lower : Text:=LowcaseStr(Text);
+    ccc_mixed : Text:=UpCase(Text[1])+LowCaseStr(Copy(Text,2,High(Text)));
+  end;
   FPCompleteCodeWord:=OK;
 end;
 
@@ -97,6 +107,7 @@ begin
     begin
       if Assigned(CodeCompleteWords) then Dispose(CodeCompleteWords, Done);
       CodeCompleteWords:=C;
+      S.Read(CodeCompleteCase,Sizeof(TCodeCompleteCase));
     end
   else
     if Assigned(C) then
@@ -111,6 +122,7 @@ begin
   if OK then
   begin
     CodeCompleteWords^.Store(S);
+    S.Write(CodeCompleteCase,Sizeof(TCodeCompleteCase));
     OK:=OK and (S.Status=stOK);
   end;
   StoreCodeComplete:=OK;
@@ -124,12 +136,14 @@ end;
 
 constructor TCodeCompleteDialog.Init;
 var R,R2,R3: TRect;
+    Items: PSItem;
     SB: PScrollBar;
 begin
-  R.Assign(0,0,46,16);
+  R.Assign(0,0,46,20);
   inherited Init(R,dialog_codecomplete);
   HelpCtx:=hcCodeCompleteOptions;
   GetExtent(R); R.Grow(-3,-2); Inc(R.A.Y); R3.Copy(R); Dec(R.B.X,12);
+  Dec(R.B.Y,5);
   R2.Copy(R); R2.Move(1,0); R2.A.X:=R2.B.X-1;
   New(SB, Init(R2)); Insert(SB);
   New(CodeCompleteLB, Init(R,1,SB));
@@ -137,6 +151,17 @@ begin
   R2.Copy(R); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Dec(R2.A.X);
   Insert(New(PLabel, Init(R2, label_codecomplete_keywords, CodeCompleteLB)));
 
+  R.Copy(R3); R.A.Y:=R.B.Y-4; Dec(R.B.X,14); Inc(R.A.X);
+  Items:=NewSItem('Unc~h~anged',
+           NewSItem('~L~ower',
+           NewSItem('~U~pper',
+           NewSItem('~M~ixed',nil))));
+  RB:=New(PRadioButtons,Init(R,Items));
+  RB^.SetData(ord(CodeCompleteCase));
+  R2.Copy(R); R2.Move(0,-1); R2.B.Y:=R2.A.Y+1; Dec(R2.A.X);
+  Insert(New(PLabel, Init(R2, 'Case handling', RB)));
+  Insert(RB);
+
   R.Copy(R3); R.A.X:=R.B.X-10; R.B.Y:=R.A.Y+2;
   Insert(New(PButton, Init(R, button_OK, cmOK, bfNormal)));
   R.Move(0,2);
@@ -202,6 +227,7 @@ begin
     begin
       if Assigned(CodeCompleteWords) then Dispose(CodeCompleteWords, Done);
       CodeCompleteWords:=C;
+      CodeCompleteCase:=TCodeCompleteCase(RB^.Value);
     end
   else
     Dispose(C, Done);