mirror of https://gitlab.com/basile.b/dexed.git
editor shortcuts, fix and change
- fix, default TSynEdit settings have conflicts in primary secondary shortcuts, removed secondary sh. - change: windows style shortcuts (Ctrl+C,V,X,Z...) instead of Ctrl +Ins...
This commit is contained in:
parent
9992452f85
commit
476ee10dc2
|
@ -6,7 +6,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, Graphics, SynEdit, SynEditMouseCmds, SynEditMiscClasses,
|
||||
SynEditKeyCmds, Menus,
|
||||
SynEditKeyCmds, Menus, LCLProc,
|
||||
ce_interfaces, ce_observer, ce_common, ce_writableComponent, ce_synmemo,
|
||||
ce_d2syn, ce_txtsyn;
|
||||
|
||||
|
@ -127,6 +127,7 @@ constructor TCEEditorOptionsBase.Create(AOwner: TComponent);
|
|||
var
|
||||
i: integer;
|
||||
shc: TCEPersistentShortcut;
|
||||
ed: TSynEdit;
|
||||
begin
|
||||
inherited;
|
||||
//
|
||||
|
@ -175,18 +176,18 @@ begin
|
|||
[emAltSetsColumnMode, emDragDropEditing, emCtrlWheelZoom, emShowCtrlMouseLinks];
|
||||
//
|
||||
fShortCuts := TCollection.Create(TCEPersistentShortcut);
|
||||
with TSynEdit.Create(nil) do
|
||||
ed := TSynEdit.Create(nil);
|
||||
try
|
||||
// note cant use a TCESynMemo because it'd be added to the EntitiesConnector
|
||||
SetDefaultKeystrokes;
|
||||
for i:= 0 to Keystrokes.Count-1 do
|
||||
// note: cant use a TCESynMemo because it'd be added to the EntitiesConnector
|
||||
SetDefaultCoeditKeystrokes(ed);
|
||||
for i:= 0 to ed.Keystrokes.Count-1 do
|
||||
begin
|
||||
shc := TCEPersistentShortcut(fShortCuts.Add);
|
||||
shc.actionName:= EditorCommandToCodeString(Keystrokes.Items[i].Command);
|
||||
shc.shortcut := Keystrokes.Items[i].ShortCut;
|
||||
shc.actionName:= EditorCommandToCodeString(ed.Keystrokes.Items[i].Command);
|
||||
shc.shortcut := ed.Keystrokes.Items[i].ShortCut;
|
||||
end;
|
||||
finally
|
||||
free;
|
||||
ed.free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -448,10 +449,12 @@ begin
|
|||
if shc.actionName = EditorCommandToCodeString(kst.Command) then
|
||||
begin
|
||||
try
|
||||
// if anEditor.Keystrokes.FindShortcut();
|
||||
// try to find, if not match cur action, set to 0
|
||||
kst.ShortCut := shc.shortcut;
|
||||
except
|
||||
//TODO-cfeaure: manage shortcuts conflicts
|
||||
//either here or a the shortcut editor level
|
||||
// TODO-cfeaure: manage shortcuts conflicts
|
||||
// either here or in the shortcut editor.
|
||||
// by default and if a conflict exists synedit will raise an exception here.
|
||||
end;
|
||||
break;
|
||||
|
|
|
@ -144,6 +144,8 @@ type
|
|||
property MouseStart: Integer read getMouseFileBytePos;
|
||||
end;
|
||||
|
||||
procedure SetDefaultCoeditKeystrokes(ed: TSynEdit);
|
||||
|
||||
var
|
||||
D2Syn: TSynD2Syn;
|
||||
LfmSyn: TSynLfmSyn;
|
||||
|
@ -338,7 +340,7 @@ begin
|
|||
inherited;
|
||||
//
|
||||
fDefaultFontSize := 10;
|
||||
SetDefaultKeystrokes; // not called in inherited if owner = nil !
|
||||
SetDefaultCoeditKeystrokes(Self); // not called in inherited if owner = nil !
|
||||
//
|
||||
ShowHint :=false;
|
||||
InitHintWins;
|
||||
|
@ -401,6 +403,112 @@ 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;
|
||||
|
|
Loading…
Reference in New Issue