From d61cef1997a6154790ec4a3b28eccd1f833b9f3d Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Thu, 15 Oct 2015 05:48:54 +0200 Subject: [PATCH] memo, sources regions --- src/ce_synmemo.pas | 262 +++++++++++++++++++++++---------------------- 1 file changed, 136 insertions(+), 126 deletions(-) diff --git a/src/ce_synmemo.pas b/src/ce_synmemo.pas index 880372e4..fdbca75a 100644 --- a/src/ce_synmemo.pas +++ b/src/ce_synmemo.pas @@ -16,7 +16,7 @@ type TCESynMemo = class; - // breakpoint added if not removed + // breakpoint added or removed TBreakPointModifyEvent = procedure(sender: TCESynMemo; line: integer; removed: boolean) of object; @@ -193,7 +193,7 @@ type var D2Syn: TSynD2Syn; // used as model to set the options when no editor exists. - LfmSyn: TSynLfmSyn; + LfmSyn: TSynLfmSyn; // used to highlight the native project format. TxtSyn: TSynTxtSyn; // used as model to set the options when no editor exists. implementation @@ -378,6 +378,8 @@ end; {$ENDREGION --------------------------------------------------------------------} {$REGION TCESynMemo ------------------------------------------------------------} + +{$REGION Standard Obj and Comp -------------------------------------------------} constructor TCESynMemo.Create(aOwner: TComponent); begin inherited; @@ -466,112 +468,6 @@ begin inherited; end; -procedure SetDefaultCoeditKeystrokes(ed: TSynEdit); -begin - with ed do begin - Keystrokes.Clear; - // - AddKey(ecUp, VK_UP, [], 0, []); - AddKey(ecSelUp, VK_UP, [ssShift], 0, []); - AddKey(ecScrollUp, VK_UP, [ssCtrl], 0, []); - AddKey(ecDown, VK_DOWN, [], 0, []); - AddKey(ecSelDown, VK_DOWN, [ssShift], 0, []); - AddKey(ecScrollDown, VK_DOWN, [ssCtrl], 0, []); - AddKey(ecLeft, VK_LEFT, [], 0, []); - AddKey(ecSelLeft, VK_LEFT, [ssShift], 0, []); - AddKey(ecWordLeft, VK_LEFT, [ssCtrl], 0, []); - AddKey(ecSelWordLeft, VK_LEFT, [ssShift,ssCtrl], 0, []); - AddKey(ecRight, VK_RIGHT, [], 0, []); - AddKey(ecSelRight, VK_RIGHT, [ssShift], 0, []); - AddKey(ecWordRight, VK_RIGHT, [ssCtrl], 0, []); - AddKey(ecSelWordRight, VK_RIGHT, [ssShift,ssCtrl], 0, []); - AddKey(ecPageDown, VK_NEXT, [], 0, []); - AddKey(ecSelPageDown, VK_NEXT, [ssShift], 0, []); - AddKey(ecPageBottom, VK_NEXT, [ssCtrl], 0, []); - AddKey(ecSelPageBottom, VK_NEXT, [ssShift,ssCtrl], 0, []); - AddKey(ecPageUp, VK_PRIOR, [], 0, []); - AddKey(ecSelPageUp, VK_PRIOR, [ssShift], 0, []); - AddKey(ecPageTop, VK_PRIOR, [ssCtrl], 0, []); - AddKey(ecSelPageTop, VK_PRIOR, [ssShift,ssCtrl], 0, []); - AddKey(ecLineStart, VK_HOME, [], 0, []); - AddKey(ecSelLineStart, VK_HOME, [ssShift], 0, []); - AddKey(ecEditorTop, VK_HOME, [ssCtrl], 0, []); - AddKey(ecSelEditorTop, VK_HOME, [ssShift,ssCtrl], 0, []); - AddKey(ecLineEnd, VK_END, [], 0, []); - AddKey(ecSelLineEnd, VK_END, [ssShift], 0, []); - AddKey(ecEditorBottom, VK_END, [ssCtrl], 0, []); - AddKey(ecSelEditorBottom, VK_END, [ssShift,ssCtrl], 0, []); - AddKey(ecToggleMode, VK_INSERT, [], 0, []); - AddKey(ecDeleteChar, VK_DELETE, [], 0, []); - AddKey(ecDeleteLastChar, VK_BACK, [], 0, []); - AddKey(ecDeleteLastWord, VK_BACK, [ssCtrl], 0, []); - AddKey(ecLineBreak, VK_RETURN, [], 0, []); - AddKey(ecSelectAll, ord('A'), [ssCtrl], 0, []); - AddKey(ecCopy, ord('C'), [ssCtrl], 0, []); - AddKey(ecBlockIndent, ord('I'), [ssCtrl,ssShift], 0, []); - AddKey(ecInsertLine, ord('N'), [ssCtrl], 0, []); - AddKey(ecDeleteWord, ord('T'), [ssCtrl], 0, []); - AddKey(ecBlockUnindent, ord('U'), [ssCtrl,ssShift], 0, []); - AddKey(ecPaste, ord('V'), [ssCtrl], 0, []); - AddKey(ecCut, ord('X'), [ssCtrl], 0, []); - AddKey(ecDeleteLine, ord('Y'), [ssCtrl], 0, []); - AddKey(ecDeleteEOL, ord('Y'), [ssCtrl,ssShift], 0, []); - AddKey(ecUndo, ord('Z'), [ssCtrl], 0, []); - AddKey(ecRedo, ord('Z'), [ssCtrl,ssShift], 0, []); - AddKey(ecGotoMarker0, ord('0'), [ssCtrl], 0, []); - AddKey(ecGotoMarker1, ord('1'), [ssCtrl], 0, []); - AddKey(ecGotoMarker2, ord('2'), [ssCtrl], 0, []); - AddKey(ecGotoMarker3, ord('3'), [ssCtrl], 0, []); - AddKey(ecGotoMarker4, ord('4'), [ssCtrl], 0, []); - AddKey(ecGotoMarker5, ord('5'), [ssCtrl], 0, []); - AddKey(ecGotoMarker6, ord('6'), [ssCtrl], 0, []); - AddKey(ecGotoMarker7, ord('7'), [ssCtrl], 0, []); - AddKey(ecGotoMarker8, ord('8'), [ssCtrl], 0, []); - AddKey(ecGotoMarker9, ord('9'), [ssCtrl], 0, []); - AddKey(ecSetMarker0, ord('0'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker1, ord('1'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker2, ord('2'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker3, ord('3'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker4, ord('4'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker5, ord('5'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker6, ord('6'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker7, ord('7'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker8, ord('8'), [ssCtrl,ssShift], 0, []); - AddKey(ecSetMarker9, ord('9'), [ssCtrl,ssShift], 0, []); - AddKey(ecFoldLevel1, ord('1'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel2, ord('2'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel3, ord('3'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel4, ord('4'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel5, ord('5'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel6, ord('6'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel7, ord('7'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel8, ord('8'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel9, ord('9'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldLevel0, ord('0'), [ssAlt,ssShift], 0, []); - AddKey(ecFoldCurrent, ord('-'), [ssAlt,ssShift], 0, []); - AddKey(ecUnFoldCurrent, ord('+'), [ssAlt,ssShift], 0, []); - AddKey(EcToggleMarkupWord, ord('M'), [ssAlt], 0, []); - AddKey(ecNormalSelect, ord('N'), [ssCtrl,ssShift], 0, []); - AddKey(ecColumnSelect, ord('C'), [ssCtrl,ssShift], 0, []); - AddKey(ecLineSelect, ord('L'), [ssCtrl,ssShift], 0, []); - AddKey(ecTab, VK_TAB, [], 0, []); - AddKey(ecShiftTab, VK_TAB, [ssShift], 0, []); - AddKey(ecMatchBracket, ord('B'), [ssCtrl,ssShift], 0, []); - AddKey(ecColSelUp, VK_UP, [ssAlt, ssShift], 0, []); - AddKey(ecColSelDown, VK_DOWN, [ssAlt, ssShift], 0, []); - AddKey(ecColSelLeft, VK_LEFT, [ssAlt, ssShift], 0, []); - AddKey(ecColSelRight, VK_RIGHT, [ssAlt, ssShift], 0, []); - AddKey(ecColSelPageDown, VK_NEXT, [ssAlt, ssShift], 0, []); - AddKey(ecColSelPageBottom, VK_NEXT, [ssAlt, ssShift,ssCtrl], 0, []); - AddKey(ecColSelPageUp, VK_PRIOR, [ssAlt, ssShift], 0, []); - AddKey(ecColSelPageTop, VK_PRIOR, [ssAlt, ssShift,ssCtrl], 0, []); - AddKey(ecColSelLineStart, VK_HOME, [ssAlt, ssShift], 0, []); - AddKey(ecColSelLineEnd, VK_END, [ssAlt, ssShift], 0, []); - AddKey(ecColSelEditorTop, VK_HOME, [ssAlt, ssShift,ssCtrl], 0, []); - AddKey(ecColSelEditorBottom, VK_END, [ssAlt, ssShift,ssCtrl], 0, []); - end; -end; - procedure TCESynMemo.setDefaultFontSize(aValue: Integer); var old: Integer; @@ -604,6 +500,7 @@ begin fCompletion.Deactivate; end; end; +{$ENDREGION --------------------------------------------------------------------} {$REGION DDoc & CallTip --------------------------------------------------------} procedure TCESynMemo.InitHintWins; @@ -751,6 +648,7 @@ begin end; {$ENDREGION --------------------------------------------------------------------} +{$REGION Coedit memo things ----------------------------------------------------} procedure TCESynMemo.SetHighlighter(const Value: TSynCustomHighlighter); begin inherited; @@ -908,6 +806,132 @@ begin fFileDate := newDate; end; +function TCESynMemo.getMouseFileBytePos: Integer; +var + i, len, llen: Integer; +begin + result := 0; + if fMousePos.y-1 > Lines.Count-1 then exit; + llen := length(Lines.Strings[fMousePos.y-1]); + if fMousePos.X > llen then exit; + // + // something note really clear: + // TCEEditorWidget.getSymbolLoc works when using the line ending of the file. + // TCESynMemo.getMouseFileBytePos works when using the line ending from the system. + len := getSysLineEndLen; + for i:= 0 to fMousePos.y-2 do + result += length(Lines.Strings[i]) + len; + result += fMousePos.x; +end; + +procedure SetDefaultCoeditKeystrokes(ed: TSynEdit); +begin + with ed do begin + Keystrokes.Clear; + // + AddKey(ecUp, VK_UP, [], 0, []); + AddKey(ecSelUp, VK_UP, [ssShift], 0, []); + AddKey(ecScrollUp, VK_UP, [ssCtrl], 0, []); + AddKey(ecDown, VK_DOWN, [], 0, []); + AddKey(ecSelDown, VK_DOWN, [ssShift], 0, []); + AddKey(ecScrollDown, VK_DOWN, [ssCtrl], 0, []); + AddKey(ecLeft, VK_LEFT, [], 0, []); + AddKey(ecSelLeft, VK_LEFT, [ssShift], 0, []); + AddKey(ecWordLeft, VK_LEFT, [ssCtrl], 0, []); + AddKey(ecSelWordLeft, VK_LEFT, [ssShift,ssCtrl], 0, []); + AddKey(ecRight, VK_RIGHT, [], 0, []); + AddKey(ecSelRight, VK_RIGHT, [ssShift], 0, []); + AddKey(ecWordRight, VK_RIGHT, [ssCtrl], 0, []); + AddKey(ecSelWordRight, VK_RIGHT, [ssShift,ssCtrl], 0, []); + AddKey(ecPageDown, VK_NEXT, [], 0, []); + AddKey(ecSelPageDown, VK_NEXT, [ssShift], 0, []); + AddKey(ecPageBottom, VK_NEXT, [ssCtrl], 0, []); + AddKey(ecSelPageBottom, VK_NEXT, [ssShift,ssCtrl], 0, []); + AddKey(ecPageUp, VK_PRIOR, [], 0, []); + AddKey(ecSelPageUp, VK_PRIOR, [ssShift], 0, []); + AddKey(ecPageTop, VK_PRIOR, [ssCtrl], 0, []); + AddKey(ecSelPageTop, VK_PRIOR, [ssShift,ssCtrl], 0, []); + AddKey(ecLineStart, VK_HOME, [], 0, []); + AddKey(ecSelLineStart, VK_HOME, [ssShift], 0, []); + AddKey(ecEditorTop, VK_HOME, [ssCtrl], 0, []); + AddKey(ecSelEditorTop, VK_HOME, [ssShift,ssCtrl], 0, []); + AddKey(ecLineEnd, VK_END, [], 0, []); + AddKey(ecSelLineEnd, VK_END, [ssShift], 0, []); + AddKey(ecEditorBottom, VK_END, [ssCtrl], 0, []); + AddKey(ecSelEditorBottom, VK_END, [ssShift,ssCtrl], 0, []); + AddKey(ecToggleMode, VK_INSERT, [], 0, []); + AddKey(ecDeleteChar, VK_DELETE, [], 0, []); + AddKey(ecDeleteLastChar, VK_BACK, [], 0, []); + AddKey(ecDeleteLastWord, VK_BACK, [ssCtrl], 0, []); + AddKey(ecLineBreak, VK_RETURN, [], 0, []); + AddKey(ecSelectAll, ord('A'), [ssCtrl], 0, []); + AddKey(ecCopy, ord('C'), [ssCtrl], 0, []); + AddKey(ecBlockIndent, ord('I'), [ssCtrl,ssShift], 0, []); + AddKey(ecInsertLine, ord('N'), [ssCtrl], 0, []); + AddKey(ecDeleteWord, ord('T'), [ssCtrl], 0, []); + AddKey(ecBlockUnindent, ord('U'), [ssCtrl,ssShift], 0, []); + AddKey(ecPaste, ord('V'), [ssCtrl], 0, []); + AddKey(ecCut, ord('X'), [ssCtrl], 0, []); + AddKey(ecDeleteLine, ord('Y'), [ssCtrl], 0, []); + AddKey(ecDeleteEOL, ord('Y'), [ssCtrl,ssShift], 0, []); + AddKey(ecUndo, ord('Z'), [ssCtrl], 0, []); + AddKey(ecRedo, ord('Z'), [ssCtrl,ssShift], 0, []); + AddKey(ecGotoMarker0, ord('0'), [ssCtrl], 0, []); + AddKey(ecGotoMarker1, ord('1'), [ssCtrl], 0, []); + AddKey(ecGotoMarker2, ord('2'), [ssCtrl], 0, []); + AddKey(ecGotoMarker3, ord('3'), [ssCtrl], 0, []); + AddKey(ecGotoMarker4, ord('4'), [ssCtrl], 0, []); + AddKey(ecGotoMarker5, ord('5'), [ssCtrl], 0, []); + AddKey(ecGotoMarker6, ord('6'), [ssCtrl], 0, []); + AddKey(ecGotoMarker7, ord('7'), [ssCtrl], 0, []); + AddKey(ecGotoMarker8, ord('8'), [ssCtrl], 0, []); + AddKey(ecGotoMarker9, ord('9'), [ssCtrl], 0, []); + AddKey(ecSetMarker0, ord('0'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker1, ord('1'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker2, ord('2'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker3, ord('3'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker4, ord('4'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker5, ord('5'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker6, ord('6'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker7, ord('7'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker8, ord('8'), [ssCtrl,ssShift], 0, []); + AddKey(ecSetMarker9, ord('9'), [ssCtrl,ssShift], 0, []); + AddKey(ecFoldLevel1, ord('1'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel2, ord('2'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel3, ord('3'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel4, ord('4'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel5, ord('5'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel6, ord('6'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel7, ord('7'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel8, ord('8'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel9, ord('9'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldLevel0, ord('0'), [ssAlt,ssShift], 0, []); + AddKey(ecFoldCurrent, ord('-'), [ssAlt,ssShift], 0, []); + AddKey(ecUnFoldCurrent, ord('+'), [ssAlt,ssShift], 0, []); + AddKey(EcToggleMarkupWord, ord('M'), [ssAlt], 0, []); + AddKey(ecNormalSelect, ord('N'), [ssCtrl,ssShift], 0, []); + AddKey(ecColumnSelect, ord('C'), [ssCtrl,ssShift], 0, []); + AddKey(ecLineSelect, ord('L'), [ssCtrl,ssShift], 0, []); + AddKey(ecTab, VK_TAB, [], 0, []); + AddKey(ecShiftTab, VK_TAB, [ssShift], 0, []); + AddKey(ecMatchBracket, ord('B'), [ssCtrl,ssShift], 0, []); + AddKey(ecColSelUp, VK_UP, [ssAlt, ssShift], 0, []); + AddKey(ecColSelDown, VK_DOWN, [ssAlt, ssShift], 0, []); + AddKey(ecColSelLeft, VK_LEFT, [ssAlt, ssShift], 0, []); + AddKey(ecColSelRight, VK_RIGHT, [ssAlt, ssShift], 0, []); + AddKey(ecColSelPageDown, VK_NEXT, [ssAlt, ssShift], 0, []); + AddKey(ecColSelPageBottom, VK_NEXT, [ssAlt, ssShift,ssCtrl], 0, []); + AddKey(ecColSelPageUp, VK_PRIOR, [ssAlt, ssShift], 0, []); + AddKey(ecColSelPageTop, VK_PRIOR, [ssAlt, ssShift,ssCtrl], 0, []); + AddKey(ecColSelLineStart, VK_HOME, [ssAlt, ssShift], 0, []); + AddKey(ecColSelLineEnd, VK_END, [ssAlt, ssShift], 0, []); + AddKey(ecColSelEditorTop, VK_HOME, [ssAlt, ssShift,ssCtrl], 0, []); + AddKey(ecColSelEditorBottom, VK_END, [ssAlt, ssShift,ssCtrl], 0, []); + end; +end; +{$ENDREGION --------------------------------------------------------------------} + +{$REGION user input ------------------------------------------------------------} procedure TCESynMemo.KeyDown(var Key: Word; Shift: TShiftState); begin inherited; @@ -957,24 +981,6 @@ begin end; end; -function TCESynMemo.getMouseFileBytePos: Integer; -var - i, len, llen: Integer; -begin - result := 0; - if fMousePos.y-1 > Lines.Count-1 then exit; - llen := length(Lines.Strings[fMousePos.y-1]); - if fMousePos.X > llen then exit; - // - // something note really clear: - // TCEEditorWidget.getSymbolLoc works when using the line ending of the file. - // TCESynMemo.getMouseFileBytePos works when using the line ending from the system. - len := getSysLineEndLen; - for i:= 0 to fMousePos.y-2 do - result += length(Lines.Strings[i]) + len; - result += fMousePos.x; -end; - procedure TCESynMemo.MouseLeave; begin fDDocWin.Hide; @@ -1029,7 +1035,9 @@ begin fCanShowHint:=false; fHintTimer.Enabled:=false; end; +{$ENDREGION --------------------------------------------------------------------} +{$REGION breakpoints -----------------------------------------------------------} function TCESynMemo.breakPointsCount: integer; begin exit(fBreakPoints.Count); @@ -1094,6 +1102,8 @@ begin end; {$ENDREGION --------------------------------------------------------------------} +{$ENDREGION --------------------------------------------------------------------} + initialization D2Syn := TSynD2Syn.create(nil); LfmSyn := TSynLFMSyn.Create(nil);