synedit + IDE: added KeyShortCuts for Folding in SynEdit from Martin Friebe (issue #12593)

git-svn-id: trunk@17299 -
This commit is contained in:
vincents 2008-11-09 19:25:29 +00:00
parent f07d918ee6
commit 1614e73034
4 changed files with 122 additions and 5 deletions

View File

@ -8546,6 +8546,22 @@ begin
end;
end;
{$ENDIF}
{$IFDEF SYN_LAZARUS}
EcFoldLevel1..EcFoldLevel9:
FoldAll(Command - EcFoldLevel1);
EcFoldLevel0:
UnfoldAll;
EcFoldCurrent:
begin
CY := fTextView.ExpandedLineForBlockAtLine(CaretY);
if CY > 0 then begin
fTextView.FoldAtTextIndex(CY-1);
SetCaretXY(Point(1, CY));
end;
end;
EcUnFoldCurrent:
fTextView.UnFoldAtTextIndex(CaretY-1);
{$ENDIF}
end;
finally
DecPaintLock;

View File

@ -155,6 +155,19 @@ const
ecSetMarker8 = 359; // Set marker, Data = PPoint - X, Y Pos
ecSetMarker9 = 360; // Set marker, Data = PPoint - X, Y Pos
EcFoldLevel1 = 361; // fold all folds, greater/equal than nesting level 1
EcFoldLevel2 = EcFoldLevel1 + 1;
EcFoldLevel3 = EcFoldLevel2 + 1;
EcFoldLevel4 = EcFoldLevel3 + 1;
EcFoldLevel5 = EcFoldLevel4 + 1;
EcFoldLevel6 = EcFoldLevel5 + 1;
EcFoldLevel7 = EcFoldLevel6 + 1;
EcFoldLevel8 = EcFoldLevel7 + 1;
EcFoldLevel9 = EcFoldLevel8 + 1;
EcFoldLevel0 = EcFoldLevel9 + 1;
EcFoldCurrent = 371;
EcUnFoldCurrent = 372;
ecDeleteLastChar = 501; // Delete last char (i.e. backspace key)
ecDeleteChar = 502; // Delete char at cursor (i.e. delete key)
ecDeleteWord = 503; // Delete from cursor to end of word
@ -381,7 +394,7 @@ type
{$ENDIF}
const
EditorCommandStrs: array[0..89] of TIdentMapEntry = (
EditorCommandStrs: array[0..101] of TIdentMapEntry = (
(Value: ecNone; Name: 'ecNone'),
(Value: ecLeft; Name: 'ecLeft'),
(Value: ecRight; Name: 'ecRight'),
@ -471,7 +484,20 @@ const
(Value: ecSetMarker6; Name: 'ecSetMarker6'),
(Value: ecSetMarker7; Name: 'ecSetMarker7'),
(Value: ecSetMarker8; Name: 'ecSetMarker8'),
(Value: ecSetMarker9; Name: 'ecSetMarker9'));
(Value: ecSetMarker9; Name: 'ecSetMarker9'),
(Value: EcFoldLevel1; Name: 'EcFoldLevel1'),
(Value: EcFoldLevel2; Name: 'EcFoldLevel2'),
(Value: EcFoldLevel3; Name: 'EcFoldLevel1'),
(Value: EcFoldLevel4; Name: 'EcFoldLevel1'),
(Value: EcFoldLevel5; Name: 'EcFoldLevel1'),
(Value: EcFoldLevel6; Name: 'EcFoldLevel6'),
(Value: EcFoldLevel7; Name: 'EcFoldLevel7'),
(Value: EcFoldLevel8; Name: 'EcFoldLevel8'),
(Value: EcFoldLevel9; Name: 'EcFoldLevel9'),
(Value: EcFoldLevel0; Name: 'EcFoldLevel0'),
(Value: EcFoldCurrent; Name: 'EcFoldCurrent'),
(Value: EcUnFoldCurrent; Name: 'EcUnFoldCurrent')
);
procedure GetEditorCommandValues(Proc: TGetStrProc);
var
@ -888,6 +914,18 @@ begin
AddKey(ecSetMarker7, ord('7'), [ssCtrl,ssShift]);
AddKey(ecSetMarker8, ord('8'), [ssCtrl,ssShift]);
AddKey(ecSetMarker9, ord('9'), [ssCtrl,ssShift]);
AddKey(EcFoldLevel1, ord('1'), [ssAlt,ssShift]);
AddKey(EcFoldLevel2, ord('2'), [ssAlt,ssShift]);
AddKey(EcFoldLevel3, ord('3'), [ssAlt,ssShift]);
AddKey(EcFoldLevel4, ord('4'), [ssAlt,ssShift]);
AddKey(EcFoldLevel5, ord('5'), [ssAlt,ssShift]);
AddKey(EcFoldLevel6, ord('6'), [ssAlt,ssShift]);
AddKey(EcFoldLevel7, ord('7'), [ssAlt,ssShift]);
AddKey(EcFoldLevel8, ord('8'), [ssAlt,ssShift]);
AddKey(EcFoldLevel9, ord('9'), [ssAlt,ssShift]);
AddKey(EcFoldLevel0, ord('0'), [ssAlt,ssShift]);
AddKey(EcFoldCurrent, ord('-'), [ssAlt,ssShift]);
AddKey(EcUnFoldCurrent, ord('+'), [ssAlt,ssShift]);
AddKey(ecNormalSelect, ord('N'), [ssCtrl,ssShift]);
AddKey(ecColumnSelect, ord('C'), [ssCtrl,ssShift]);
AddKey(ecLineSelect, ord('L'), [ssCtrl,ssShift]);

View File

@ -400,6 +400,19 @@ begin
ecGotoEditor9: SetResult(VK_9,[ssAlt],VK_UNKNOWN,[]);
ecGotoEditor0: SetResult(VK_0,[ssAlt],VK_UNKNOWN,[]);
EcFoldLevel1: SetResult(VK_1,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel2: SetResult(VK_2,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel3: SetResult(VK_3,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel4: SetResult(VK_4,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel5: SetResult(VK_5,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel6: SetResult(VK_6,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel7: SetResult(VK_7,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel8: SetResult(VK_8,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel9: SetResult(VK_9,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel0: SetResult(VK_0,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldCurrent: SetResult(VK_OEM_MINUS,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcUnFoldCurrent: SetResult(VK_OEM_PLUS,[ssAlt,ssShift],VK_UNKNOWN,[]);
// file menu
ecNew: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecNewUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -726,6 +739,19 @@ begin
ecGotoEditor9: SetResult(VK_9,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecGotoEditor0: SetResult(VK_0,[ssAlt],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel1: SetResult(VK_1,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel2: SetResult(VK_2,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel3: SetResult(VK_3,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel4: SetResult(VK_4,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel5: SetResult(VK_5,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel6: SetResult(VK_6,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel7: SetResult(VK_7,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel8: SetResult(VK_8,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel9: SetResult(VK_9,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel0: SetResult(VK_0,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldCurrent: SetResult(VK_OEM_PLUS,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcUnFoldCurrent: SetResult(VK_OEM_MINUS,[ssAlt,ssShift],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
// file menu
ecNew: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecNewUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -1231,6 +1257,19 @@ begin
ecGotoEditor9: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecGotoEditor0: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
EcFoldLevel1: SetResult(VK_1,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel2: SetResult(VK_2,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel3: SetResult(VK_3,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel4: SetResult(VK_4,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel5: SetResult(VK_5,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel6: SetResult(VK_6,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel7: SetResult(VK_7,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel8: SetResult(VK_8,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel9: SetResult(VK_9,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldLevel0: SetResult(VK_0,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcFoldCurrent: SetResult(VK_OEM_PLUS,[ssAlt,ssShift],VK_UNKNOWN,[]);
EcUnFoldCurrent: SetResult(VK_OEM_MINUS,[ssAlt,ssShift],VK_UNKNOWN,[]);
// file menu
ecNew: SetResult(VK_N,[ssMeta],VK_UNKNOWN,[]);
ecNewUnit: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -1538,6 +1577,11 @@ begin
ecRemoveBreakPoint : Result:= srkmecRemoveBreakPoint;
ecGotoEditor1..
ecGotoEditor0 : Result:= Format(srkmecGotoEditor,[cmd-ecGotoEditor1]);
EcFoldLevel1..
EcFoldLevel9 : Result:= Format(srkmEcFoldLevel,[cmd-EcFoldLevel1]);
EcFoldLevel0 : Result:= srkmecUnFoldAll;
EcFoldCurrent : Result:= srkmecFoldCurrent;
EcUnFoldCurrent : Result:= srkmecUnFoldCurrent;
// file menu
ecNew : Result:= lisMenuNewOther;
@ -2016,6 +2060,21 @@ begin
ecOpenFileAtCursor);
AddDefault(C,'Procedure List ...',srkmecProcedureList,ecProcedureList);
// folding
C:=Categories[AddCategory('Folding',srkmCatFold,IDECmdScopeSrcEditOnly)];
AddDefault(C, 'Fold to Level 1', Format(srkmEcFoldLevel,[1]), EcFoldLevel1);
AddDefault(C, 'Fold to Level 2', Format(srkmEcFoldLevel,[2]), EcFoldLevel2);
AddDefault(C, 'Fold to Level 3', Format(srkmEcFoldLevel,[3]), EcFoldLevel3);
AddDefault(C, 'Fold to Level 4', Format(srkmEcFoldLevel,[4]), EcFoldLevel4);
AddDefault(C, 'Fold to Level 5', Format(srkmEcFoldLevel,[5]), EcFoldLevel5);
AddDefault(C, 'Fold to Level 6', Format(srkmEcFoldLevel,[6]), EcFoldLevel6);
AddDefault(C, 'Fold to Level 7', Format(srkmEcFoldLevel,[7]), EcFoldLevel7);
AddDefault(C, 'Fold to Level 8', Format(srkmEcFoldLevel,[8]), EcFoldLevel8);
AddDefault(C, 'Fold to Level 9', Format(srkmEcFoldLevel,[9]), EcFoldLevel9);
AddDefault(C, 'Unfold all', srkmecUnFoldAll, EcFoldLevel0);
AddDefault(C, 'Fold at Cursor', srkmecFoldCurrent, EcFoldCurrent);
AddDefault(C, 'Unfold at Cursor', srkmecUnFoldCurrent, EcUnFoldCurrent);
// marker - without menu items in the IDE bar
C:=Categories[AddCategory('Marker',srkmCatMarker,IDECmdScopeSrcEditOnly)];
AddDefault(C, 'Set free Bookmark', lisKMSetFreeBookmark, ecSetFreeBookmark);
@ -2097,9 +2156,8 @@ begin
AddDefault(C, 'Go to source editor 7', lisKMGoToSourceEditor7, ecGotoEditor7);
AddDefault(C, 'Go to source editor 8', lisKMGoToSourceEditor8, ecGotoEditor8);
AddDefault(C, 'Go to source editor 9', lisKMGoToSourceEditor9, ecGotoEditor9);
AddDefault(C, 'Go to source editor 10', lisKMGoToSourceEditor10, ecGotoEditor0
);
AddDefault(C, 'Go to source editor 10', lisKMGoToSourceEditor10, ecGotoEditor0);
// file menu
C:=Categories[AddCategory('FileMenu',srkmCatFileMenu,nil)];
AddDefault(C, 'New', lisMenuTemplateNew, ecNew);

View File

@ -1871,6 +1871,10 @@ resourcestring
lisKMGoToSourceEditor8 = 'Go to source editor 8';
lisKMGoToSourceEditor9 = 'Go to source editor 9';
srkmecGotoEditor = 'Go to editor %d';
srkmEcFoldLevel = 'Fold to Level %d';
srkmecUnFoldAll = 'Unfold all';
srkmecFoldCurrent = 'Fold at Cursor';
srkmecUnFoldCurrent = 'Unfold at Cursor';
// edit menu
srkmecSelectionTabs2Spaces = 'Convert tabs to spaces in selection';
@ -2007,6 +2011,7 @@ resourcestring
srkmCatCmdCmd = 'Command commands';
srkmCatSearchReplace = 'Text search and replace commands';
srkmCatMarker = 'Text marker commands';
srkmCatFold = 'Text folding commands';
lisKMSetFreeBookmark = 'Set free Bookmark';
srkmCatCodeTools = 'CodeTools commands';
srkmCatSrcNoteBook = 'Source Notebook commands';