add commands to goto next / prev warning

This commit is contained in:
Basile Burg 2017-07-09 15:06:01 +02:00
parent 1fd020978a
commit b0c14cc3ef
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
2 changed files with 91 additions and 11 deletions

View File

@ -58,6 +58,10 @@ type
MenuItem10: TMenuItem; MenuItem10: TMenuItem;
MenuItem11: TMenuItem; MenuItem11: TMenuItem;
MenuItem12: TMenuItem; MenuItem12: TMenuItem;
MenuItem13: TMenuItem;
MenuItem14: TMenuItem;
mnuedPrevWarn: TMenuItem;
mnuedNextWarn: TMenuItem;
mnuedDdocTmp: TMenuItem; mnuedDdocTmp: TMenuItem;
mnuedPrevProtGrp: TMenuItem; mnuedPrevProtGrp: TMenuItem;
mnuedNextProtGrp: TMenuItem; mnuedNextProtGrp: TMenuItem;
@ -91,11 +95,13 @@ type
editorStatus: TStatusBar; editorStatus: TStatusBar;
mnuEditor: TPopupMenu; mnuEditor: TPopupMenu;
procedure mnuedDdocTmpClick(Sender: TObject); procedure mnuedDdocTmpClick(Sender: TObject);
procedure mnuedNextWarnClick(Sender: TObject);
procedure mnuedPrevProtGrpClick(Sender: TObject); procedure mnuedPrevProtGrpClick(Sender: TObject);
procedure mnuedNextProtGrpClick(Sender: TObject); procedure mnuedNextProtGrpClick(Sender: TObject);
procedure mnuedNextCareaClick(Sender: TObject); procedure mnuedNextCareaClick(Sender: TObject);
procedure mnuedPrevCareaClick(Sender: TObject); procedure mnuedPrevCareaClick(Sender: TObject);
procedure mnuedLowcaseClick(Sender: TObject); procedure mnuedLowcaseClick(Sender: TObject);
procedure mnuedPrevWarnClick(Sender: TObject);
procedure mnuedSortLinesClick(Sender: TObject); procedure mnuedSortLinesClick(Sender: TObject);
procedure mnuedUpcaseClick(Sender: TObject); procedure mnuedUpcaseClick(Sender: TObject);
procedure MenuItem5Click(Sender: TObject); procedure MenuItem5Click(Sender: TObject);
@ -334,6 +340,8 @@ begin
AssignPng(mnuedSortLines.Bitmap, 'SORT_AZ'); AssignPng(mnuedSortLines.Bitmap, 'SORT_AZ');
AssignPng(mnuedNextProtGrp.Bitmap, 'GO_NEXT'); AssignPng(mnuedNextProtGrp.Bitmap, 'GO_NEXT');
AssignPng(mnuedPrevProtGrp.Bitmap, 'GO_PREVIOUS'); AssignPng(mnuedPrevProtGrp.Bitmap, 'GO_PREVIOUS');
AssignPng(mnuedNextWarn.Bitmap, 'GO_NEXT');
AssignPng(mnuedPrevWarn.Bitmap, 'GO_PREVIOUS');
// //
EntitiesConnector.addObserver(self); EntitiesConnector.addObserver(self);
EntitiesConnector.addSingleService(self); EntitiesConnector.addSingleService(self);
@ -884,6 +892,12 @@ begin
fDoc.CommandProcessor(ecLowerCaseWordOrSel, #0, nil); fDoc.CommandProcessor(ecLowerCaseWordOrSel, #0, nil);
end; end;
procedure TCEEditorWidget.mnuedPrevWarnClick(Sender: TObject);
begin
if fDoc.isNotNil then
fDoc.previousWarning;
end;
procedure TCEEditorWidget.mnuedSortLinesClick(Sender: TObject); procedure TCEEditorWidget.mnuedSortLinesClick(Sender: TObject);
begin begin
if fDoc.isNotNil then if fDoc.isNotNil then
@ -908,6 +922,12 @@ begin
fDoc.insertDdocTemplate; fDoc.insertDdocTemplate;
end; end;
procedure TCEEditorWidget.mnuedNextWarnClick(Sender: TObject);
begin
if fDoc.isNotNil then
fDoc.nextWarning;
end;
procedure TCEEditorWidget.mnuedNextProtGrpClick(Sender: TObject); procedure TCEEditorWidget.mnuedNextProtGrpClick(Sender: TObject);
begin begin
if fDoc.isNotNil then if fDoc.isNotNil then

View File

@ -253,8 +253,9 @@ type
function lexCanCloseBrace: boolean; function lexCanCloseBrace: boolean;
function lexInDdoc: char; function lexInDdoc: char;
procedure handleStatusChanged(Sender: TObject; Changes: TSynStatusChanges); procedure handleStatusChanged(Sender: TObject; Changes: TSynStatusChanges);
procedure gotoToChangedArea(next: boolean); procedure goToChangedArea(next: boolean);
procedure gotoToProtectionGroup(next: boolean); procedure goToProtectionGroup(next: boolean);
procedure goToWarning(next: boolean);
procedure autoClosePair(value: TAutoClosedPair); procedure autoClosePair(value: TAutoClosedPair);
procedure setSelectionOrWordCase(upper: boolean); procedure setSelectionOrWordCase(upper: boolean);
procedure sortSelectedLines(descending, caseSensitive: boolean); procedure sortSelectedLines(descending, caseSensitive: boolean);
@ -319,6 +320,8 @@ type
procedure nextChangedArea; procedure nextChangedArea;
procedure previousProtectionGroup; procedure previousProtectionGroup;
procedure nextProtectionGroup; procedure nextProtectionGroup;
procedure previousWarning;
procedure nextWarning;
procedure sortLines; procedure sortLines;
procedure addCurLineBreakPoint; procedure addCurLineBreakPoint;
procedure removeCurLineBreakPoint; procedure removeCurLineBreakPoint;
@ -407,6 +410,8 @@ const
ecRemoveBreakpoint = ecUserFirst + 23; ecRemoveBreakpoint = ecUserFirst + 23;
ecToggleBreakpoint = ecUserFirst + 24; ecToggleBreakpoint = ecUserFirst + 24;
ecInsertDdocTemplate = ecUserFirst + 25; ecInsertDdocTemplate = ecUserFirst + 25;
ecNextWarning = ecUserFirst + 26;
ecPrevWarning = ecUserFirst + 27;
var var
D2Syn: TSynD2Syn; // used as model to set the options when no editor exists. D2Syn: TSynD2Syn; // used as model to set the options when no editor exists.
@ -1095,6 +1100,8 @@ begin
AddKey(ecRemoveBreakpoint, 0, [], 0, []); AddKey(ecRemoveBreakpoint, 0, [], 0, []);
AddKey(ecToggleBreakpoint, 0, [], 0, []); AddKey(ecToggleBreakpoint, 0, [], 0, []);
AddKey(ecInsertDdocTemplate, 0, [], 0, []); AddKey(ecInsertDdocTemplate, 0, [], 0, []);
AddKey(ecPrevWarning, 0, [], 0, []);
AddKey(ecNextWarning, 0, [], 0, []);
end; end;
end; end;
@ -1126,6 +1133,8 @@ begin
'ecRemoveBreakpoint': begin Int := ecRemoveBreakpoint; exit(true); end; 'ecRemoveBreakpoint': begin Int := ecRemoveBreakpoint; exit(true); end;
'ecToggleBreakpoint': begin Int := ecToggleBreakpoint; exit(true); end; 'ecToggleBreakpoint': begin Int := ecToggleBreakpoint; exit(true); end;
'ecInsertDdocTemplate': begin Int := ecInsertDdocTemplate; exit(true); end; 'ecInsertDdocTemplate': begin Int := ecInsertDdocTemplate; exit(true); end;
'ecPrevWarning': begin Int := ecPrevWarning; exit(true); end;
'ecNextWarning': begin Int := ecNextWarning; exit(true); end;
else exit(false); else exit(false);
end; end;
end; end;
@ -1158,6 +1167,8 @@ begin
ecRemoveBreakpoint: begin Ident := 'ecRemoveBreakpoint'; exit(true); end; ecRemoveBreakpoint: begin Ident := 'ecRemoveBreakpoint'; exit(true); end;
ecToggleBreakpoint: begin Ident := 'ecToggleBreakpoint'; exit(true); end; ecToggleBreakpoint: begin Ident := 'ecToggleBreakpoint'; exit(true); end;
ecInsertDdocTemplate: begin Ident := 'ecInsertDdocTemplate'; exit(true); end; ecInsertDdocTemplate: begin Ident := 'ecInsertDdocTemplate'; exit(true); end;
ecPrevWarning: begin Ident := 'ecPrevWarning'; exit(true); end;
ecNextWarning: begin Ident := 'ecNextWarning'; exit(true); end;
else exit(false); else exit(false);
end; end;
end; end;
@ -1209,9 +1220,9 @@ begin
ecShowPhobosDoc: ecShowPhobosDoc:
ShowPhobosDoc; ShowPhobosDoc;
ecNextChangedArea: ecNextChangedArea:
gotoToChangedArea(true); goToChangedArea(true);
ecPreviousChangedArea: ecPreviousChangedArea:
gotoToChangedArea(false); goToChangedArea(false);
ecUpperCaseWordOrSel: ecUpperCaseWordOrSel:
setSelectionOrWordCase(true); setSelectionOrWordCase(true);
ecLowerCaseWordOrSel: ecLowerCaseWordOrSel:
@ -1230,6 +1241,10 @@ begin
toggleCurLineBreakpoint; toggleCurLineBreakpoint;
ecInsertDdocTemplate: ecInsertDdocTemplate:
insertDdocTemplate; insertDdocTemplate;
ecPrevWarning:
goToWarning(false);
ecNextWarning:
goToWarning(true);
end; end;
if fOverrideColMode and not SelAvail then if fOverrideColMode and not SelAvail then
begin begin
@ -1660,15 +1675,25 @@ end;
procedure TCESynMemo.nextChangedArea; procedure TCESynMemo.nextChangedArea;
begin begin
gotoToChangedArea(true); goToChangedArea(true);
end; end;
procedure TCESynMemo.previousChangedArea; procedure TCESynMemo.previousChangedArea;
begin begin
gotoToChangedArea(false); goToChangedArea(false);
end; end;
procedure TCESynMemo.gotoToChangedArea(next: boolean); procedure TCESynMemo.previousWarning;
begin
goToWarning(false);
end;
procedure TCESynMemo.nextWarning;
begin
goToWarning(true);
end;
procedure TCESynMemo.goToChangedArea(next: boolean);
var var
i: integer; i: integer;
s: TSynLineState; s: TSynLineState;
@ -1709,7 +1734,7 @@ begin
end; end;
end; end;
procedure TCESynMemo.gotoToProtectionGroup(next: boolean); procedure TCESynMemo.goToProtectionGroup(next: boolean);
var var
i: integer; i: integer;
tk0, tk1: PLexToken; tk0, tk1: PLexToken;
@ -1743,14 +1768,49 @@ begin
ExecuteCommand(ecGotoXY, #0, @tk^.position); ExecuteCommand(ecGotoXY, #0, @tk^.position);
end; end;
procedure TCESynMemo.goToWarning(next: boolean);
var
i: integer;
j: integer = -1;
begin
if not next then
begin
for i:= 0 to fDscannerResults.count-1 do
begin
j := i - 1;
if fDscannerResults.item[i]^.line >= caretY then
break;
end;
if j <> -1 then
begin
CaretY:= fDscannerResults.item[j]^.line;
EnsureCursorPosVisible;
end;
end
else
begin
for i:= fDscannerResults.count-1 downto 0 do
begin
j := i + 1;
if fDscannerResults.item[i]^.line <= caretY then
break;
end;
if j < fDscannerResults.count then
begin
CaretY:= fDscannerResults.item[j]^.line;
EnsureCursorPosVisible;
end;
end;
end;
procedure TCESynMemo.previousProtectionGroup; procedure TCESynMemo.previousProtectionGroup;
begin begin
gotoToProtectionGroup(false); goToProtectionGroup(false);
end; end;
procedure TCESynMemo.nextProtectionGroup; procedure TCESynMemo.nextProtectionGroup;
begin begin
gotoToProtectionGroup(true); goToProtectionGroup(true);
end; end;
function TCESynMemo.implementMain: THasMain; function TCESynMemo.implementMain: THasMain;