秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  276 随笔 :: 0 文章 :: 305 评论 :: 19万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
lazarus使用中文变量等代码补全功能基础上,按以下方法就可以实现输入中文拼音首字母就可以快速代码补全功能。
代码补全功能快捷键:Ctrl+w

 

修改步骤:
打开\lazarus\ide\wordcompletion.pp文件,修改以下2个位置,添加红色代码后,重新编译lazarus就可以。
1、在uses添加getPinYinCodes,GetPinYinCodes单元在这下载:https://www.cnblogs.com/qiufeng2014/p/18418176

复制代码
unit WordCompletion;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, SynEdit,getPinYinCodes;

type
复制代码

2、找到 procedure AddIfMatch(const ALine, ALineUp:string; const AFirstPos, ALength: Integer);(lazarus 3.4在第145行)

复制代码
 procedure AddIfMatch(const ALine, ALineUp:string; const AFirstPos, ALength: Integer);
  var
    AAdd: Boolean;
    tmpstr:string;
  begin
    if FilterLen=0 then
      AAdd := True
    else
    begin
      AAdd := False;
      if CaseSensitive then begin
        if ContainsFilter then
          AAdd := MyPos(Filter, ALine, AFirstPos, AFirstPos+ALength-1)>0
        else
          AAdd := strlcomp(PChar(@ALine[AFirstPos]),PChar(Filter),FilterLen)=0;
      end else
      begin
        if ContainsFilter then
          AAdd := MyPos(UpFilter, ALineUp, AFirstPos, AFirstPos+ALength-1)>0
        else
          AAdd := strlcomp(PChar(@ALineUp[AFirstPos]),PChar(UpFilter),FilterLen)=0;
      end;
    end;
    tmpstr:=getPinYinCode(copy(ALine,AFirstPos, ALength),filter);
    if pos(UpperCase(filter),tmpstr)>0 then
      AAdd:=true;
    if AAdd then
      Add(Copy(ALine, AFirstPos, ALength));
  end;
复制代码

 

posted on   秋·风  阅读(209)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示