📄 cocor.pad
字号:
{
Coco/R-file specific support (*.atg)
}
unit CocoR;
{ Global variables }
var
CocoRItem: TMenuItem;
CocoRItemAdd: TMenuItem;
CocoRShowProductionsItem: TMenuItem;
const
CocoRGotoProductionLineOffset = 3;
{ function NewItem(const ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word; const AName: string): TMenuItem; }
procedure InitCocoR;
var
Empty: Integer;
Ctrl: Integer;
begin
CocoRItem := nil;
CocoRItem := NewItem('&Coco/R', 0, False, True, 0, nil {ignored - always must be nil}, 'miCocoR');
MainWindow.Menu.Items.Insert(MainWindow.Menu.Items.Count - 1, CocoRItem);
CocoRItem.OnClick := CocoRClick;
CocoRItem.Visible := False;
Empty := [];
Ctrl := [ssCtrl];
CocoRShowProductionsItem := NewItem('Go To Production', ShortCut(ord('L'), Ctrl), False, True, 0, 0, 'miCocoRShowProductionsItem');
CocoRShowProductionsItem.OnClick := CocoRShowProductionsItemClick;
CocoRItem.Add(CocoRShowProductionsItem);
end;
procedure OpenCocoR(FileName: string);
begin
CocoRItem.Visible := Cmp(Editor.HighlighterName, 'CocoR');
CocoRItem.Enabled := CocoRItem.Visible;
end;
procedure CloseCocoR(FileName: string);
begin
CocoRItem.Visible := False;
CocoRItem.Enabled := CocoRItem.Visible;
end;
procedure CocoRClick(Sender: TObject);
begin
// IniItemFind.Enabled := P > 0;
end;
procedure CocoRShowProductionsItemClick(Sender: TObject);
var
Form: TForm;
ListBox: TListBox;
i: Integer;
S: string;
Y: Integer;
YY: Integer;
Save: Boolean;
begin
// All forms was constructed in Delphi 5....
Form := JvInterpreterMakeForm(WorkingDir + 'fIniSections.pas');
try
ListBox := Form.FindComponent('ListBox1');
Y := Editor.CaretY;
YY := -1;
Save := False;
for i := 0 to Editor.Lines.Count - 1 do
begin
S := Editor.Lines.Strings[i];
if Cmp(S, 'PRODUCTIONS') then
Save := True;
if Save and (Length(S) > 2) then
if S[1] <> ' ' then
begin
ListBox.Items.AddObject(S, i);
if (YY = -1) and (Y < i) then
YY := ListBox.Items.Count - 2;
end;
end;
if YY = -1 then
YY := ListBox.Items.Count - 1;
ListBox.ItemIndex := YY;
if Form.ShowModal = mrOk then
if ListBox.ItemIndex > -1 then
begin
i := Integer(ListBox.Items.Objects[ListBox.ItemIndex]);
Editor.SetLeftTop(0, i - IniGotoSectionLineOffset);
Editor.CaretY := i + 1;
Editor.CaretX := 0;
end;
finally
Form.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -