让lazarus IDE格式化代码根据自定义变量名格式化大小写

在Delphi 里用delforex格式化代码习惯了,到了lazarus jediformat  用得很不习惯,自行修改代码:

lazarus 的对象

开发思路:jedi format有个anyword设置变量名称为 SpecificWordCaps,在代码格式化前对把文件定义的变量添加进行,格式化后还原(临时保存在OldSpecificWordCaps,调用ResetSpecificWordCaps),经测试有效。

使用oldSpecificWordCap :tstringlist进行记录anyword,重

一、Unit Converter;位置在\components\jcf2\ReadWrite\Converter.pas

1.修改uses 增加Tokens,classes

2.修改过程

Procedure TConverter.Convert;
Var
 lcTokenList: TSourceTokenList;

//增加以下局部变量
 I: Integer;
 Src: TSourceToken;
 TmpSL: TStringList;
 在    lcTokenList := fcTokeniser.BuildTokenList;  后增加

    TmpSL := TStringList.Create;//临时字符串列表保存自定义变量

 tmpsl.CaseSensitive:=false; //win下本句可省,linux未测试,有需要可以增加
   FormattingSettings.ResetSpecificWordCaps;
   For I := 0 To lcTokenList.Count - 1 Do
     Begin
     Src := lcTokenList.SourceTokens[I];
     If (Src.TokenType = ttIdentifier) And (Src.WordType = wtIdentifier) Then

//若为标识符(即自定义变量含TObject之类变量类型)
       Begin
       If TmpSL.IndexOf(Src.SourceCode) = -1 Then//若未添加
         Begin
         TmpSL.Add(Src.SourceCode);//加入格式化列表
         End;
       End;
     End;
   FormattingSettings.SpecificWordCaps.Words.AddStrings(TmpSL);
   FreeAndNil(TmpSL); 

二修改unit JcfSettings;

位置:components\jcf2\Settings\JcfSettings.pas增加uses classes

1.  TFormattingSettings类增加公用函数procedure ResetSpecificWordCaps;

函数实现:

procedure TFormattingSettings.ResetSpecificWordCaps;
begin
  fcSpecificWordCaps.Words.Clear;
  fcSpecificWordCaps.Words.AddStrings(OldSpecificWordCaps);
end;      

2.增加私有变量定义oldSpecificWordCaps:TStringlist;

在构造函数constructor TFormattingSettings.Create(const pbReadRegFile: boolean); 里增加

 oldSpecificWordCaps:=TStringlist.Create; //增加

在析构函数destructor TFormattingSettings.Destroy;  里增加

FreeAndNil(oldSpecificWordCaps);  //释放

在procedure TFormattingSettings.FromStream(const pcStream: TSettingsInput);函数中

    ReadFromStream(fcSpecificWordCaps);//后面增加
   OldSpecificWordCaps.Clear;
   OldSpecificWordCaps.AddStrings(fcSpecificWordCaps.Words);//保存临时定义

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值