mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-14 13:59:34 +02:00
SynEdit: multi caret, allow espape (remove all carets) to be shared with other plugins / make "escape" default
git-svn-id: trunk@58190 -
This commit is contained in:
parent
dc1a9b3fc8
commit
98b1d8f6ad
@ -2335,6 +2335,7 @@ begin
|
||||
ActiveMode := mcmAddingCarets;
|
||||
end;
|
||||
ecPluginMultiCaretClearAll: begin
|
||||
Handled := FCarets.Count > 0;
|
||||
ClearCarets;
|
||||
if not SelectionObj.SelAvail then
|
||||
SelectionObj.Clear; // clear invisibel selection
|
||||
|
@ -79,6 +79,7 @@ type
|
||||
TSynHighlightElement = TSynHighlighterAttributes;
|
||||
TCustomSynClass = class of TSrcIDEHighlighter;
|
||||
|
||||
TLazSynPluginTemplateMultiCaret = class(TForm) end;
|
||||
TLazSynPluginTemplateEditForm = class(TForm) end;
|
||||
TLazSynPluginTemplateEditFormOff = class(TForm) end;
|
||||
TLazSynPluginSyncroEditFormSel = class(TForm) end;
|
||||
@ -5212,6 +5213,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
if (ASynEdit.Plugin[c] is TSynPluginMultiCaret) then begin
|
||||
// Only ecPluginMultiCaretClearAll
|
||||
// the others are handled in SynEdit.Keystrokes
|
||||
TSynPluginMultiCaret(ASynEdit.Plugin[c]).Keystrokes.Clear;
|
||||
if i >= 0 then begin
|
||||
TSynPluginMultiCaret(ASynEdit.Plugin[c]).Keystrokes.Assign(
|
||||
TSynPluginMultiCaret(SimilarEdit.Plugin[i]).KeyStrokes);
|
||||
end else begin
|
||||
KeyMap.AssignTo(TSynPluginMultiCaret(ASynEdit.Plugin[c]).Keystrokes,
|
||||
TLazSynPluginTemplateMultiCaret, 0); //ecIdePTmplOffset);
|
||||
end;
|
||||
end;
|
||||
|
||||
dec(c);
|
||||
end;
|
||||
end;
|
||||
|
@ -1063,7 +1063,7 @@ begin
|
||||
ecPluginMultiCaretSetCaret: SetSingle(VK_INSERT,[ssShift, XCtrl]);
|
||||
ecPluginMultiCaretUnsetCaret: SetSingle(VK_DELETE,[ssShift, XCtrl]);
|
||||
//ecPluginMultiCaretToggleCaret: SetSingle(VK_INSERT,[ssShift, XCtrl]);
|
||||
ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, XCtrl]);
|
||||
ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, ssCtrl], VK_ESCAPE,[]);
|
||||
|
||||
ecPluginMultiCaretModeCancelOnMove: SetCombo(VK_Q,[ssShift, XCtrl], VK_X,[ssShift, XCtrl]);
|
||||
ecPluginMultiCaretModeMoveAll: SetCombo(VK_Q,[ssShift, XCtrl], VK_M,[ssShift, XCtrl]);
|
||||
@ -1534,7 +1534,7 @@ begin
|
||||
ecPluginMultiCaretSetCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]);
|
||||
ecPluginMultiCaretUnsetCaret: SetSingle(VK_DELETE,[ssShift, ssCtrl]);
|
||||
//ecPluginMultiCaretToggleCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]);
|
||||
ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, ssCtrl], VK_ESCAPE,[ssShift]);
|
||||
ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, ssCtrl], VK_ESCAPE,[]);
|
||||
|
||||
ecPluginMultiCaretModeCancelOnMove: SetCombo(VK_Q,[ssShift, ssCtrl], VK_X,[ssShift, ssCtrl]);
|
||||
ecPluginMultiCaretModeMoveAll: SetCombo(VK_Q,[ssShift, ssCtrl], VK_M,[ssShift, ssCtrl]);
|
||||
@ -2158,7 +2158,7 @@ begin
|
||||
ecPluginMultiCaretSetCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]);
|
||||
ecPluginMultiCaretUnsetCaret: SetSingle(VK_DELETE,[ssShift, ssCtrl]);
|
||||
//ecPluginMultiCaretToggleCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]);
|
||||
ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, ssCtrl], VK_ESCAPE,[ssShift]);
|
||||
ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, ssCtrl], VK_ESCAPE,[]);
|
||||
|
||||
ecPluginMultiCaretModeCancelOnMove: SetCombo(VK_Q,[ssShift, ssCtrl], VK_X,[ssShift, ssCtrl]);
|
||||
ecPluginMultiCaretModeMoveAll: SetCombo(VK_Q,[ssShift, ssCtrl], VK_M,[ssShift, ssCtrl]);
|
||||
@ -2720,13 +2720,14 @@ begin
|
||||
AddDefault(C, 'Column Select to absolute end', srkmecColSelEditorBottom, ecColSelEditorBottom);
|
||||
|
||||
// multi caret
|
||||
C:=Categories[AddCategory('MultiCaret', srkmCatMultiCaret, nil)];
|
||||
C:=Categories[AddCategory('MultiCaret', srkmCatMultiCaret, IDECmdScopeSrcEditOnly)];
|
||||
AddDefault(C, 'Add extra caret', srkmecPluginMultiCaretSetCaret, ecPluginMultiCaretSetCaret);
|
||||
AddDefault(C, 'Remove extra caret', srkmecPluginMultiCaretUnsetCaret, ecPluginMultiCaretUnsetCaret);
|
||||
AddDefault(C, 'Toggle extra caret', srkmecPluginMultiCaretToggleCaret, ecPluginMultiCaretToggleCaret);
|
||||
AddDefault(C, 'Clear all extra carets', srkmecPluginMultiCaretClearAll, ecPluginMultiCaretClearAll);
|
||||
AddDefault(C, 'Cursor keys clear all extra carets', srkmecPluginMultiCaretModeCancelOnMove, ecPluginMultiCaretModeCancelOnMove);
|
||||
AddDefault(C, 'Cursor keys move all extra carets', srkmecPluginMultiCaretModeMoveAll, ecPluginMultiCaretModeMoveAll);
|
||||
C:=Categories[AddCategory('MultiCaret', srkmCatMultiCaret, IDECmdScopeSrcEditOnlyMultiCaret)];
|
||||
AddDefault(C, 'Clear all extra carets', srkmecPluginMultiCaretClearAll, ecPluginMultiCaretClearAll);
|
||||
|
||||
// editing - without menu items in the IDE bar
|
||||
C:=Categories[AddCategory(CommandCategoryTextEditingName,srkmCatEditing,
|
||||
|
@ -2238,6 +2238,8 @@ begin
|
||||
IDECmdScopeSrcEdit.AddWindowClass(nil);
|
||||
IDECmdScopeSrcEditOnly.AddWindowClass(TSourceEditorWindowInterface);
|
||||
|
||||
IDECmdScopeSrcEditOnlyMultiCaret.AddWindowClass(TLazSynPluginTemplateMultiCaret);
|
||||
|
||||
IDECmdScopeSrcEditOnlyTmplEdit.AddWindowClass(TLazSynPluginTemplateEditForm);
|
||||
IDECmdScopeSrcEditOnlyTmplEditOff.AddWindowClass(TLazSynPluginTemplateEditFormOff);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user