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

View File

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