This commit is contained in:
Basile Burg 2014-07-17 04:47:43 +02:00
parent 2cc2ad3b9d
commit 1f07bdf5aa
6 changed files with 228 additions and 79 deletions

View File

@ -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>

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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