如何使用Open Tools API折叠插入的区域?

Bao*_*Zuo 12 delphi region toolsapi

我想在编辑视图中插入一个区域,然后折叠该区域.

// fEditView: IOTAEditView;

var
  writer: IOTAEditWriter;
begin
  writer := fEditView.Buffer.CreateUndoableWriter;
  //...
  writer.Insert('{$REGION ''Documentation''}'#13#10'{$ENDREGION}');
  writer := nil;  // Flush the buffer
  fEditView.Position.GotoLine(lineNo); // go to the line number of the region
  fEditView.Paint;
end;
Run Code Online (Sandbox Code Playgroud)

此代码段将在代码编辑器中插入一个区域.但IDE需要一些操作才能在代码编辑器中生成这样的区域.

有没有办法强制IDE执行此操作然后我可以使用

(fEditView as IOTAElideActions).ElideNearestBlock;
Run Code Online (Sandbox Code Playgroud)

折叠吗?

Ali*_*ard 2

通过肮脏的反复试验发现:-)

(fEditView as IOTAElideActions).EnableElisions;
(fEditView as IOTAElideActions).EnableElisions;
(fEditView as IOTAElideActions).ElideNearestBlock;
Run Code Online (Sandbox Code Playgroud)

EnableElisions() 似乎实际上切换了省略功能。

关闭并重新打开省略似乎达到了预期的效果。正在进行一些不太漂亮的屏幕更新。能不能压制住我就不知道了。