mirror of https://gitlab.com/basile.b/dexed.git
r21
This commit is contained in:
parent
2cc2ad3b9d
commit
1f07bdf5aa
|
@ -44,6 +44,9 @@
|
||||||
<OverflowChecks Value="True"/>
|
<OverflowChecks Value="True"/>
|
||||||
<StackChecks Value="True"/>
|
<StackChecks Value="True"/>
|
||||||
</Checks>
|
</Checks>
|
||||||
|
<Optimizations>
|
||||||
|
<OptimizationLevel Value="0"/>
|
||||||
|
</Optimizations>
|
||||||
</CodeGeneration>
|
</CodeGeneration>
|
||||||
<Linking>
|
<Linking>
|
||||||
<Debugging>
|
<Debugging>
|
||||||
|
|
|
@ -43,7 +43,7 @@ type
|
||||||
end;
|
end;
|
||||||
|
|
||||||
(**
|
(**
|
||||||
* TProcess with assign() overriden.
|
* TProcess with assign() 'overriden'.
|
||||||
*)
|
*)
|
||||||
TProcessEx = class helper for TProcess
|
TProcessEx = class helper for TProcess
|
||||||
public
|
public
|
||||||
|
|
|
@ -40,7 +40,6 @@ type
|
||||||
function getEditor(index: NativeInt): TCESynMemo;
|
function getEditor(index: NativeInt): TCESynMemo;
|
||||||
function getEditorCount: NativeInt;
|
function getEditorCount: NativeInt;
|
||||||
function getEditorIndex: NativeInt;
|
function getEditorIndex: NativeInt;
|
||||||
procedure identifierToD2Syn(const aMemo: TCESynMemo);
|
|
||||||
public
|
public
|
||||||
constructor create(aOwner: TComponent); override;
|
constructor create(aOwner: TComponent); override;
|
||||||
destructor destroy; override;
|
destructor destroy; override;
|
||||||
|
@ -121,11 +120,6 @@ begin
|
||||||
curr := getCurrentEditor;
|
curr := getCurrentEditor;
|
||||||
macRecorder.Editor := curr;
|
macRecorder.Editor := curr;
|
||||||
fSyncEdit.Editor := curr;
|
fSyncEdit.Editor := curr;
|
||||||
if curr <> nil then
|
|
||||||
begin
|
|
||||||
identifierToD2Syn(curr);
|
|
||||||
curr.checkFileDate;
|
|
||||||
end;
|
|
||||||
//
|
//
|
||||||
if pageControl.ActivePageIndex <> -1 then
|
if pageControl.ActivePageIndex <> -1 then
|
||||||
mainForm.docFocusedNotify(Self, pageControl.ActivePageIndex);
|
mainForm.docFocusedNotify(Self, pageControl.ActivePageIndex);
|
||||||
|
@ -164,7 +158,10 @@ begin
|
||||||
memo.OnKeyUp := @memoKeyDown;
|
memo.OnKeyUp := @memoKeyDown;
|
||||||
memo.OnKeyPress := @memoKeyPress;
|
memo.OnKeyPress := @memoKeyPress;
|
||||||
memo.OnMouseDown := @memoMouseDown;
|
memo.OnMouseDown := @memoMouseDown;
|
||||||
memo.OnChange := @memoChange;
|
|
||||||
|
// http://forum.lazarus.freepascal.org/index.php/topic,25213.0.html
|
||||||
|
//memo.OnChange := @memoChange;
|
||||||
|
|
||||||
memo.OnMouseMove := @memoMouseMove;
|
memo.OnMouseMove := @memoMouseMove;
|
||||||
//
|
//
|
||||||
pageControl.ActivePage := sheet;
|
pageControl.ActivePage := sheet;
|
||||||
|
@ -180,19 +177,11 @@ begin
|
||||||
pageControl.Pages[aIndex].Free;
|
pageControl.Pages[aIndex].Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.identifierToD2Syn(const aMemo: TCESynMemo);
|
|
||||||
begin
|
|
||||||
D2Syn.CurrentIdentifier := aMemo.GetWordAtRowCol(aMemo.LogicalCaretXY);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure TCEEditorWidget.memoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
begin
|
begin
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
if (sender is TCESynMemo) then
|
|
||||||
identifierToD2Syn(TCESynMemo(Sender));
|
|
||||||
case Byte(Key) of
|
case Byte(Key) of
|
||||||
VK_CLEAR,VK_RETURN,VK_BACK : fKeyChanged := true;
|
VK_CLEAR,VK_RETURN,VK_BACK : fKeyChanged := true;
|
||||||
//else fKeyChanged := false;
|
|
||||||
end;
|
end;
|
||||||
if fKeyChanged then
|
if fKeyChanged then
|
||||||
beginUpdateByDelay;
|
beginUpdateByDelay;
|
||||||
|
@ -206,8 +195,6 @@ end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
procedure TCEEditorWidget.memoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
begin
|
begin
|
||||||
if (sender is TCESynMemo) then
|
|
||||||
identifierToD2Syn(TCESynMemo(Sender));
|
|
||||||
beginUpdateByDelay;
|
beginUpdateByDelay;
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
end;
|
end;
|
||||||
|
@ -221,11 +208,7 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.memoChange(Sender: TObject);
|
procedure TCEEditorWidget.memoChange(Sender: TObject);
|
||||||
var
|
|
||||||
ed: TCESynMemo;
|
|
||||||
begin
|
begin
|
||||||
ed := TCESynMemo(sender);
|
|
||||||
ed.modified := true;
|
|
||||||
fKeyChanged := true;
|
fKeyChanged := true;
|
||||||
beginUpdateByDelay;
|
beginUpdateByDelay;
|
||||||
UpdateByEvent;
|
UpdateByEvent;
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
object CEMainForm: TCEMainForm
|
object CEMainForm: TCEMainForm
|
||||||
Left = 1122
|
Left = 1435
|
||||||
Height = 53
|
Height = 53
|
||||||
Top = 26
|
Top = 140
|
||||||
Width = 745
|
Width = 745
|
||||||
AllowDropFiles = True
|
AllowDropFiles = True
|
||||||
Caption = 'Coedit'
|
Caption = 'Coedit'
|
||||||
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
||||||
DockSite = True
|
DockSite = True
|
||||||
Menu = mainMenu
|
Menu = mainMenu
|
||||||
|
OnCloseQuery = FormCloseQuery
|
||||||
OnDropFiles = FormDropFiles
|
OnDropFiles = FormDropFiles
|
||||||
Position = poMainFormCenter
|
Position = poMainFormCenter
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
|
@ -818,6 +819,15 @@ object CEMainForm: TCEMainForm
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
object MenuItem56: TMenuItem
|
||||||
|
Caption = '-'
|
||||||
|
end
|
||||||
|
object MenuItem57: TMenuItem
|
||||||
|
Action = actEdFind
|
||||||
|
end
|
||||||
|
object MenuItem58: TMenuItem
|
||||||
|
Action = actEdFindNext
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object MenuItem14: TMenuItem
|
object MenuItem14: TMenuItem
|
||||||
Caption = 'Project'
|
Caption = 'Project'
|
||||||
|
@ -1882,11 +1892,25 @@ object CEMainForm: TCEMainForm
|
||||||
ImageIndex = 21
|
ImageIndex = 21
|
||||||
OnExecute = actProjRunWithArgsExecute
|
OnExecute = actProjRunWithArgsExecute
|
||||||
end
|
end
|
||||||
|
object actEdFind: TAction
|
||||||
|
Category = 'Edit'
|
||||||
|
Caption = 'Find...'
|
||||||
|
ImageIndex = 28
|
||||||
|
OnExecute = actEdFindExecute
|
||||||
|
ShortCut = 16454
|
||||||
|
end
|
||||||
|
object actEdFindNext: TAction
|
||||||
|
Category = 'Edit'
|
||||||
|
Caption = 'Find next'
|
||||||
|
ImageIndex = 28
|
||||||
|
OnExecute = actEdFindNextExecute
|
||||||
|
ShortCut = 114
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object imgList: TImageList
|
object imgList: TImageList
|
||||||
left = 64
|
left = 64
|
||||||
Bitmap = {
|
Bitmap = {
|
||||||
4C691C0000001000000010000000008F4E00008C4AB000965DFF00935AFF0093
|
4C691D0000001000000010000000008F4E00008C4AB000965DFF00935AFF0093
|
||||||
59FF009359FF009359FF009359FF009359FF00945AFF008743FF008945FF008A
|
59FF009359FF009359FF009359FF009359FF00945AFF008743FF008945FF008A
|
||||||
49A8FFFFFF00008F4E00008F4F00008E4E00008A47FF66E2D0FF62DDCAFF62DD
|
49A8FFFFFF00008F4E00008F4F00008E4E00008A47FF66E2D0FF62DDCAFF62DD
|
||||||
C8FF62DDC8FF62DDC8FF62DDC8FF62DDC8FF62DDC9FF61E0CAFF62DEC8FF3ABA
|
C8FF62DDC8FF62DDC8FF62DDC8FF62DDC8FF62DDC9FF61E0CAFF62DEC8FF3ABA
|
||||||
|
@ -2782,7 +2806,39 @@ object CEMainForm: TCEMainForm
|
||||||
ABFFB0B0ACFFAFAFABFFAEAEABFFADADABFFAEAEABFFAFAFABFFAFAFACFFB0B0
|
ABFFB0B0ACFFAFAFABFFAEAEABFFADADABFFAEAEABFFAFAFABFFAFAFACFFB0B0
|
||||||
ADFFA4A4A2C0FFFFFF00FFFFFF00FFFFFF000000002300000033000000330000
|
ADFFA4A4A2C0FFFFFF00FFFFFF00FFFFFF000000002300000033000000330000
|
||||||
0033000000330000003300000033000000330000003300000033000000330000
|
0033000000330000003300000033000000330000003300000033000000330000
|
||||||
003300000023FFFFFF00FFFFFF00
|
003300000023FFFFFF00FFFFFF007B7977007B7977007B7977FF73716FFF6D6B
|
||||||
|
69FF696665FF625F5EFF615E5D007E7C7A007B7977FF73716FFF6D6B69FF6966
|
||||||
|
65FF63605FFF64616000646160007B7977007B7977007A7976FF908D8CFF908E
|
||||||
|
8CFF656461FF615E5DFF615E5D007D7B7900797775FF8E8B8AFF918F8DFF6866
|
||||||
|
64FF63605FFF64616000646160007B7977007B79770000000033787574FFCBCA
|
||||||
|
C7FF9B9A99FF625E5DFF625F5E007D7A7900787574FFCAC8C6FF989796FF605D
|
||||||
|
5CFF0000003364616000646160007B797700797875AE716E6DFF696665FF6460
|
||||||
|
5FFF625E5DFF545251AA7B7A7700656361006A6967AA6F6C6BFF696665FF6764
|
||||||
|
63FF656261FF63605FAE646160007C797800787574FFBDBBB9FFCECCCBFFA5A3
|
||||||
|
A2FF7E7C7BFF5E5B5AFF7B7977FF646260FF797675FFBCBBB8FFCECCCBFFA6A4
|
||||||
|
A3FF807E7DFF605D5CFF63605F007B787700777473FFB9B7B5FFC9C7C6FFA2A0
|
||||||
|
9FFF7D7B7AFF5C5858FF777472FF615F5DFF777473FFB9B8B5FFC9C7C6FFA2A0
|
||||||
|
9FFF7E7C7BFF605D5CFF63605F007B797700777473FFBCBAB8FFCDCBCAFFA5A3
|
||||||
|
A2FF7E7C7BFF595655FFD6D5D3FF8C8C89FF767372FFBCBAB7FFCCCAC9FFA4A2
|
||||||
|
A1FF7E7C7BFF5F5C5BFF625F5E007A7876FF6F6D6BFF666261FF605D5CFF5E5C
|
||||||
|
5AFF5E5A5AFF4946469BD3D2D0FF8A8987FF62615F9B6C6A68FF646160FF625F
|
||||||
|
5EFF615F5DFF615E5DFF615E5DA8777472FFDEDDDDFFEBEBE9FFDBDAD9FFCAC9
|
||||||
|
C8FFBBBAB9FF575453FFD6D5D3FF8C8B89FF757371FFDEDDDCFFEBEBE9FFDBDA
|
||||||
|
D9FFCAC9C8FFBCBCBBFF5E5B5AFF767472FFB3B0AEFFCAC9C7FFB0ADADFF9190
|
||||||
|
8EFF757472FF5B5857FF767472FF615F5DFF767472FFB3B1AFFFCAC9C7FFB0AD
|
||||||
|
ADFF91908EFF757573FF5F5C5BFF767472FFB3B1AFFFCAC9C7FFB1AEAEFF9392
|
||||||
|
90FF777674FF5E5A59FF7A7876FF646260FF777573FFB3B1AFFFCAC9C7FFB1AE
|
||||||
|
AEFF939290FF777674FF605D5CFF767472FFB3B1AFFFCAC9C7FFB0AEADFF9190
|
||||||
|
8EFF757472FF5E5A59FF0000003300000033777573FFB3B1AFFFCAC9C7FFB0AE
|
||||||
|
ADFF91908EFF757572FF5F5C5BFF777573FFCFCFCFFFD9D7D6FFD0CFCEFFC8C8
|
||||||
|
C7FFC3C1C1FF5E5A59FF5F5C5B007E7C7A00777573FFD0CFCFFFD9D7D6FFD0CF
|
||||||
|
CEFFC8C8C7FFC3C1C1FF5E5B5AFF7A7876FF817E7DFF9C9996FF898583FF716F
|
||||||
|
6CFF595756FF605D5CFF605D5C007F7D7B007A7876FF817E7DFF9C9996FF8985
|
||||||
|
83FF716F6CFF595756FF615E5DFF716F6DC0767472FF706D6CFF6D6A69FF6967
|
||||||
|
65FF666362FF5A5756C0605D5C007E7C7A00716F6DC0767472FF706D6CFF6D6A
|
||||||
|
69FF696765FF666362FF5A5756C0000000000000003300000033000000330000
|
||||||
|
0033000000330000000000000000000000000000000000000033000000330000
|
||||||
|
0033000000330000003300000000
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
object ApplicationProperties1: TApplicationProperties
|
object ApplicationProperties1: TApplicationProperties
|
||||||
|
|
|
@ -63,6 +63,8 @@ type
|
||||||
actFileSaveAs: TAction;
|
actFileSaveAs: TAction;
|
||||||
actFileSave: TAction;
|
actFileSave: TAction;
|
||||||
actFileCompAndRunWithArgs: TAction;
|
actFileCompAndRunWithArgs: TAction;
|
||||||
|
actEdFind: TAction;
|
||||||
|
actEdFindNext: TAction;
|
||||||
actProjOptView: TAction;
|
actProjOptView: TAction;
|
||||||
actProjSource: TAction;
|
actProjSource: TAction;
|
||||||
actProjRun: TAction;
|
actProjRun: TAction;
|
||||||
|
@ -138,6 +140,9 @@ type
|
||||||
MenuItem53: TMenuItem;
|
MenuItem53: TMenuItem;
|
||||||
MenuItem54: TMenuItem;
|
MenuItem54: TMenuItem;
|
||||||
MenuItem55: TMenuItem;
|
MenuItem55: TMenuItem;
|
||||||
|
MenuItem56: TMenuItem;
|
||||||
|
MenuItem57: TMenuItem;
|
||||||
|
MenuItem58: TMenuItem;
|
||||||
mnuItemMruFile: TMenuItem;
|
mnuItemMruFile: TMenuItem;
|
||||||
mnuItemMruProj: TMenuItem;
|
mnuItemMruProj: TMenuItem;
|
||||||
mnuItemWin: TMenuItem;
|
mnuItemWin: TMenuItem;
|
||||||
|
@ -148,6 +153,8 @@ type
|
||||||
MenuItem8: TMenuItem;
|
MenuItem8: TMenuItem;
|
||||||
MenuItem9: TMenuItem;
|
MenuItem9: TMenuItem;
|
||||||
LfmSyn: TSynLFMSyn;
|
LfmSyn: TSynLFMSyn;
|
||||||
|
procedure actEdFindExecute(Sender: TObject);
|
||||||
|
procedure actEdFindNextExecute(Sender: TObject);
|
||||||
procedure actFileAddToProjExecute(Sender: TObject);
|
procedure actFileAddToProjExecute(Sender: TObject);
|
||||||
procedure actFileCloseExecute(Sender: TObject);
|
procedure actFileCloseExecute(Sender: TObject);
|
||||||
procedure actFileCompAndRunExecute(Sender: TObject);
|
procedure actFileCompAndRunExecute(Sender: TObject);
|
||||||
|
@ -182,6 +189,7 @@ type
|
||||||
procedure actProjSourceExecute(Sender: TObject);
|
procedure actProjSourceExecute(Sender: TObject);
|
||||||
procedure actEdUnIndentExecute(Sender: TObject);
|
procedure actEdUnIndentExecute(Sender: TObject);
|
||||||
procedure ApplicationProperties1Exception(Sender: TObject; E: Exception);
|
procedure ApplicationProperties1Exception(Sender: TObject; E: Exception);
|
||||||
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
||||||
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
|
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
|
||||||
private
|
private
|
||||||
fUpdateCount: NativeInt;
|
fUpdateCount: NativeInt;
|
||||||
|
@ -284,8 +292,6 @@ begin
|
||||||
fWidgList.addWidget(@fStExpWidg);
|
fWidgList.addWidget(@fStExpWidg);
|
||||||
fWidgList.addWidget(@fFindWidg);
|
fWidgList.addWidget(@fFindWidg);
|
||||||
|
|
||||||
for widg in fWidgList do widg.Show;
|
|
||||||
|
|
||||||
for widg in fWidgList do
|
for widg in fWidgList do
|
||||||
begin
|
begin
|
||||||
act := TAction.Create(self);
|
act := TAction.Create(self);
|
||||||
|
@ -298,6 +304,7 @@ begin
|
||||||
itm.Action := act;
|
itm.Action := act;
|
||||||
itm.Tag := ptrInt(widg);
|
itm.Tag := ptrInt(widg);
|
||||||
mnuItemWin.Add(itm);
|
mnuItemWin.Add(itm);
|
||||||
|
widg.Show
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Height := 0;
|
Height := 0;
|
||||||
|
@ -360,6 +367,25 @@ begin
|
||||||
else fMesgWidg.addCeErr(E.Message);
|
else fMesgWidg.addCeErr(E.Message);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEMainForm.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
||||||
|
var
|
||||||
|
i: NativeInt;
|
||||||
|
ed: TCESynMemo;
|
||||||
|
begin
|
||||||
|
canClose := false;
|
||||||
|
if fProject <> nil then if fProject.modified then
|
||||||
|
if ce_common.dlgOkCancel('last project modifications are not saved, quit anyway ?')
|
||||||
|
<> mrOK then exit;
|
||||||
|
for i := 0 to fEditWidg.editorCount-1 do
|
||||||
|
begin
|
||||||
|
ed := fEditWidg.editor[i];
|
||||||
|
if ed.modified then if ce_common.dlgOkCancel(format
|
||||||
|
('last "%s" modifications are not saved, quit anyway ?',
|
||||||
|
[shortenPath(ed.fileName, 25)])) <> mrOK then exit;
|
||||||
|
end;
|
||||||
|
canClose := true;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.ActionsUpdate(AAction: TBasicAction; var Handled: Boolean);
|
procedure TCEMainForm.ActionsUpdate(AAction: TBasicAction; var Handled: Boolean);
|
||||||
var
|
var
|
||||||
curr: TCESynMemo;
|
curr: TCESynMemo;
|
||||||
|
@ -514,24 +540,9 @@ end;
|
||||||
|
|
||||||
{$REGION file ******************************************************************}
|
{$REGION file ******************************************************************}
|
||||||
procedure TCEMainForm.newFile;
|
procedure TCEMainForm.newFile;
|
||||||
var
|
|
||||||
i, j: NativeInt;
|
|
||||||
str: string;
|
|
||||||
begin
|
begin
|
||||||
if fEditWidg = nil then exit;
|
if fEditWidg = nil then exit;
|
||||||
//
|
|
||||||
i := fEditWidg.editorCount;
|
|
||||||
fEditWidg.addEditor;
|
fEditWidg.addEditor;
|
||||||
j := 0;
|
|
||||||
while(true) do
|
|
||||||
begin
|
|
||||||
str := format('<new %d>',[j]);
|
|
||||||
if findFile(str) = -1 then break;
|
|
||||||
if j >= high(NativeInt) then break;
|
|
||||||
j += 1;
|
|
||||||
end;
|
|
||||||
fEditWidg.editor[i].fileName := str;
|
|
||||||
fEditWidg.editor[i].modified := false;
|
|
||||||
fEditWidg.focusedEditorChanged;
|
fEditWidg.focusedEditorChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -559,8 +570,7 @@ begin
|
||||||
end;
|
end;
|
||||||
i := fEditWidg.editorCount;
|
i := fEditWidg.editorCount;
|
||||||
fEditWidg.addEditor;
|
fEditWidg.addEditor;
|
||||||
fEditWidg.editor[i].Lines.LoadFromFile(aFilename);
|
fEditWidg.editor[i].loadFromFile(aFilename);
|
||||||
fEditWidg.editor[i].fileName := aFilename;
|
|
||||||
fEditWidg.focusedEditorChanged;
|
fEditWidg.focusedEditorChanged;
|
||||||
fFileMru.Insert(0,aFilename);
|
fFileMru.Insert(0,aFilename);
|
||||||
end;
|
end;
|
||||||
|
@ -581,11 +591,7 @@ begin
|
||||||
//
|
//
|
||||||
str := fEditWidg.editor[edIndex].fileName;
|
str := fEditWidg.editor[edIndex].fileName;
|
||||||
if str = '' then exit;
|
if str = '' then exit;
|
||||||
try
|
fEditWidg.editor[edIndex].save;
|
||||||
fEditWidg.editor[edIndex].Lines.SaveToFile(str);
|
|
||||||
finally
|
|
||||||
fEditWidg.editor[edIndex].modified := false;
|
|
||||||
end;
|
|
||||||
//
|
//
|
||||||
for i := 0 to fWidgList.Count-1 do
|
for i := 0 to fWidgList.Count-1 do
|
||||||
fWidgList.widget[i].docChanged(fEditWidg.editor[edIndex]);
|
fWidgList.widget[i].docChanged(fEditWidg.editor[edIndex]);
|
||||||
|
@ -597,13 +603,8 @@ begin
|
||||||
if edIndex < 0 then exit;
|
if edIndex < 0 then exit;
|
||||||
if edIndex >= fEditWidg.editorCount then exit;
|
if edIndex >= fEditWidg.editorCount then exit;
|
||||||
//
|
//
|
||||||
try
|
fEditWidg.editor[edIndex].saveToFile(aFilename);
|
||||||
fEditWidg.editor[edIndex].Lines.SaveToFile(aFilename);
|
fFileMru.Insert(0, aFilename);
|
||||||
finally
|
|
||||||
fEditWidg.editor[edIndex].fileName := aFilename;
|
|
||||||
fEditWidg.editor[edIndex].modified := false;
|
|
||||||
fFileMru.Insert(0,aFilename);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEMainForm.docChangeNotify(Sender: TObject; const aIndex: Integer);
|
procedure TCEMainForm.docChangeNotify(Sender: TObject; const aIndex: Integer);
|
||||||
|
@ -816,6 +817,31 @@ begin
|
||||||
curr := fEditWidg.currentEditor;
|
curr := fEditWidg.currentEditor;
|
||||||
if assigned(curr) then curr.ExecuteCommand(ecBlockUnIndent, '', nil);
|
if assigned(curr) then curr.ExecuteCommand(ecBlockUnIndent, '', nil);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEMainForm.actEdFindExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
win: TAnchorDockHostSite;
|
||||||
|
ed: TCESynMemo;
|
||||||
|
str: string;
|
||||||
|
begin
|
||||||
|
win := DockMaster.GetAnchorSite(fFindWidg);
|
||||||
|
if win = nil then exit;
|
||||||
|
win.Show;
|
||||||
|
win.BringToFront;
|
||||||
|
ed := fEditWidg.currentEditor;
|
||||||
|
if ed = nil then exit;
|
||||||
|
if ed.SelAvail then
|
||||||
|
str := ed.SelText
|
||||||
|
else str := ed.Identifier;
|
||||||
|
ffindwidg.cbToFind.Text := str;
|
||||||
|
ffindwidg.cbToFindChange(nil);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEMainForm.actEdFindNextExecute(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ffindwidg.actFindNextExecute(nil);
|
||||||
|
end;
|
||||||
|
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION run ******************************************************************}
|
{$REGION run ******************************************************************}
|
||||||
|
@ -1160,8 +1186,7 @@ begin
|
||||||
if fProject = nil then exit;
|
if fProject = nil then exit;
|
||||||
if fProject.fileName <> aEditor.fileName then exit;
|
if fProject.fileName <> aEditor.fileName then exit;
|
||||||
//
|
//
|
||||||
aEditor.modified := false;
|
aEditor.saveToFile(fProject.fileName);
|
||||||
aEditor.Lines.SaveToFile(fProject.fileName);
|
|
||||||
openProj(fProject.fileName);
|
openProj(fProject.fileName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,9 @@ unit ce_synmemo;
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, SynEdit, SynMemo, ce_d2syn,
|
Classes, SysUtils, SynEdit, SynMemo, ce_d2syn, SynEditTextBuffer,
|
||||||
SynPluginSyncroEdit, SynEditKeyCmds, ce_project, ce_common;
|
SynEditHighlighter, controls, LazSynEditText, SynPluginSyncroEdit,
|
||||||
|
SynEditKeyCmds, ce_project, ce_common;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
@ -17,19 +18,33 @@ type
|
||||||
fNoDateCheck: boolean;
|
fNoDateCheck: boolean;
|
||||||
fFileDate: double;
|
fFileDate: double;
|
||||||
fAssocProject: TCEProject;
|
fAssocProject: TCEProject;
|
||||||
function getIfDSource: Boolean;
|
fIsDSource: boolean;
|
||||||
function getIfConfig: Boolean;
|
fIsConfig: boolean;
|
||||||
procedure setFilename(const aValue: string);
|
fIdentifier: string;
|
||||||
|
procedure changeNotify(Sender: TObject);
|
||||||
|
procedure identifierToD2Syn;
|
||||||
|
protected
|
||||||
|
procedure SetHighlighter(const Value: TSynCustomHighlighter); override;
|
||||||
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
|
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
|
||||||
|
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y:Integer); override;
|
||||||
public
|
public
|
||||||
constructor Create(aOwner: TComponent); override;
|
constructor Create(aOwner: TComponent); override;
|
||||||
procedure checkFileDate;
|
procedure setFocus; override;
|
||||||
|
procedure UpdateShowing; override;
|
||||||
//
|
//
|
||||||
property fileName: string read fFilename write setFilename;
|
procedure checkFileDate;
|
||||||
property modified: boolean read fModified write fModified;
|
procedure loadFromFile(const aFilename: string);
|
||||||
|
procedure saveToFile(const aFilename: string);
|
||||||
|
procedure save;
|
||||||
|
//
|
||||||
|
property Identifier: string read fIdentifier;
|
||||||
|
property fileName: string read fFilename;
|
||||||
|
property modified: boolean read fModified;
|
||||||
property project: TCEProject read fAssocProject write fAssocProject;
|
property project: TCEProject read fAssocProject write fAssocProject;
|
||||||
//
|
//
|
||||||
property isDSource: boolean read getIfDSource;
|
property isDSource: boolean read fIsDSource;
|
||||||
property isProjectSource: boolean read getIfConfig;
|
property isProjectSource: boolean read fIsConfig;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
|
@ -38,7 +53,7 @@ var
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
graphics, ce_main, controls;
|
graphics, ce_main;
|
||||||
|
|
||||||
constructor TCESynMemo.Create(aOwner: TComponent);
|
constructor TCESynMemo.Create(aOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
|
@ -59,14 +74,73 @@ begin
|
||||||
Gutter.CodeFoldPart.MarkupInfo.Foreground := clGray;
|
Gutter.CodeFoldPart.MarkupInfo.Foreground := clGray;
|
||||||
//
|
//
|
||||||
Highlighter := D2Syn;
|
Highlighter := D2Syn;
|
||||||
|
//
|
||||||
|
fFilename := '<new document>';
|
||||||
|
fModified := false;
|
||||||
|
|
||||||
|
// http://forum.lazarus.freepascal.org/index.php/topic,25213.0.html
|
||||||
|
//TSynEditStringList(Lines).AddNotifyHandler(senrUndoRedoAdded, @changeNotify);
|
||||||
|
onChange := @changeNotify;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESynMemo.setFilename(const aValue: string);
|
procedure TCESynMemo.setFocus;
|
||||||
begin
|
begin
|
||||||
if fFilename = aValue then exit;
|
inherited;
|
||||||
fNoDateCheck := false;
|
checkFileDate;
|
||||||
fFilename := aValue;
|
identifierToD2Syn;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.UpdateShowing;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
if not Visible then exit;
|
||||||
|
checkFileDate;
|
||||||
|
identifierToD2Syn;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.SetHighlighter(const Value: TSynCustomHighlighter);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
fIsDSource := Highlighter = D2Syn;
|
||||||
|
fIsConfig := Highlighter = mainForm.LfmSyn;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.identifierToD2Syn;
|
||||||
|
begin
|
||||||
|
fIdentifier := GetWordAtRowCol(LogicalCaretXY);
|
||||||
|
if fIsDSource then D2Syn.CurrentIdentifier := fIdentifier;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.changeNotify(Sender: TObject);
|
||||||
|
begin
|
||||||
|
identifierToD2Syn;
|
||||||
|
fModified := true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.loadFromFile(const aFilename: string);
|
||||||
|
begin
|
||||||
|
Lines.LoadFromFile(aFilename);
|
||||||
|
fFilename := aFilename;
|
||||||
FileAge(fFilename, fFileDate);
|
FileAge(fFilename, fFileDate);
|
||||||
|
fNoDateCheck := false;
|
||||||
|
fModified := false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.saveToFile(const aFilename: string);
|
||||||
|
begin
|
||||||
|
Lines.SaveToFile(aFilename);
|
||||||
|
fFilename := aFilename;
|
||||||
|
FileAge(fFilename, fFileDate);
|
||||||
|
fNoDateCheck := false;
|
||||||
|
fModified := false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.save;
|
||||||
|
begin
|
||||||
|
Lines.SaveToFile(fFilename);
|
||||||
|
FileAge(fFilename, fFileDate);
|
||||||
|
fNoDateCheck := false;
|
||||||
|
fModified := false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCESynMemo.checkFileDate;
|
procedure TCESynMemo.checkFileDate;
|
||||||
|
@ -78,7 +152,7 @@ begin
|
||||||
if fFileDate <> 0.0 then
|
if fFileDate <> 0.0 then
|
||||||
begin
|
begin
|
||||||
if dlgOkCancel(format('"%s" has been modified by another program, load the new version ?',
|
if dlgOkCancel(format('"%s" has been modified by another program, load the new version ?',
|
||||||
[shortenPath(fFilename)])) = mrOk then
|
[shortenPath(fFilename, 25)])) = mrOk then
|
||||||
begin
|
begin
|
||||||
Lines.LoadFromFile(fFilename);
|
Lines.LoadFromFile(fFilename);
|
||||||
fModified := false;
|
fModified := false;
|
||||||
|
@ -88,14 +162,22 @@ begin
|
||||||
fFileDate := newDate;
|
fFileDate := newDate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCESynMemo.getIfDSource: Boolean;
|
procedure TCESynMemo.KeyDown(var Key: Word; Shift: TShiftState);
|
||||||
begin
|
begin
|
||||||
exit(Highlighter = D2Syn);
|
inherited;
|
||||||
|
identifierToD2Syn;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCESynMemo.getIfConfig: Boolean;
|
procedure TCESynMemo.MouseMove(Shift: TShiftState; X, Y: Integer);
|
||||||
begin
|
begin
|
||||||
exit(Highlighter = mainForm.LfmSyn);
|
inherited;
|
||||||
|
identifierToD2Syn;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y:Integer);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
identifierToD2Syn;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
|
Loading…
Reference in New Issue