首页 > 解决方案 > IOTAHighlighter 没有调用 Tokenize

问题描述

我正在尝试编写一个简单的荧光笔(它在 pas 文件中添加突出显示某种变量)

我使用了http://www.delphi-central.com/syntax_highlighting.aspx中的代码

问题是永远不会调用 Tokenize 过程。它确实通过以下方式在注册程序中注册:

RegisterPackageWizard(TSimpleHighlight.Create);

或者在构造函数中通过:

(BorlandIDEServices As IOTAHighlightServices).AddHighlighter(TSimpleHighlight.Create);

当我启动菜单 Tools.Options 时调用 GetName

代码片段:

TSimpleHighlight = class(TNotifierObject, IUnknown, IOTANotifier, IOTAHighlighter, IOTAWizard)
public
  function GetIDString: string;
  function GetName: string;
  procedure Tokenize(StartClass: TOTALineClass; LineBuf: POTAEdChar;
    LineBufLen: TOTALineSize; HighlightCodes: POTASyntaxCode);
  function TokenizeLineClass(StartClass: TOTALineClass;
    LineBuf: POTAEdChar; LineBufLen: TOTALineSize): TOTALineClass;
  function GetState: TWizardState;
  procedure Execute;
  constructor Create;
end;

procedure Register;
begin
  RegisterPackageWizard(TSimpleHighlight.Create);
end;

constructor TSimpleHighlight.Create;
begin
  inherited;
  (BorlandIDEServices as IOTAHighlightServices).AddHighlighter(Self);
end;

该教程提到“使用 OTA,您可以为新的源文件类型创建荧光笔”。那么我是否必须以某种方式为pas文件注册它,还是我错过了其他东西?

标签: delphitoolsapiotapi

解决方案


推荐阅读