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:
Basile Burg 2015-05-14 05:30:25 +02:00
parent 9992452f85
commit 476ee10dc2
2 changed files with 122 additions and 11 deletions

View File

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

View File

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