mirror of https://gitlab.com/basile.b/dexed.git
add a goto line command, close #170
This commit is contained in:
parent
35ae9193bc
commit
d22ff41d14
|
@ -93,43 +93,44 @@ inherited CEEditorWidget: TCEEditorWidget
|
||||||
Caption = 'Previous location'
|
Caption = 'Previous location'
|
||||||
OnClick = mnuedPrevClick
|
OnClick = mnuedPrevClick
|
||||||
end
|
end
|
||||||
object mnuedNext: TMenuItem
|
|
||||||
Caption = 'Next location'
|
|
||||||
OnClick = mnuedNextClick
|
|
||||||
end
|
|
||||||
object MenuItem10: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuedPrevCarea: TMenuItem
|
object mnuedPrevCarea: TMenuItem
|
||||||
Caption = 'Previous changed area'
|
Caption = 'Previous changed area'
|
||||||
OnClick = mnuedPrevCareaClick
|
OnClick = mnuedPrevCareaClick
|
||||||
end
|
end
|
||||||
object mnuedNextCarea: TMenuItem
|
|
||||||
Caption = 'Next changed area'
|
|
||||||
OnClick = mnuedNextCareaClick
|
|
||||||
end
|
|
||||||
object MenuItem9: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuedPrevProtGrp: TMenuItem
|
object mnuedPrevProtGrp: TMenuItem
|
||||||
Caption = 'Previous protection attribute'
|
Caption = 'Previous protection attribute'
|
||||||
OnClick = mnuedPrevProtGrpClick
|
OnClick = mnuedPrevProtGrpClick
|
||||||
end
|
end
|
||||||
object mnuedNextProtGrp: TMenuItem
|
|
||||||
Caption = 'Next protection attribute'
|
|
||||||
OnClick = mnuedNextProtGrpClick
|
|
||||||
end
|
|
||||||
object MenuItem14: TMenuItem
|
|
||||||
Caption = '-'
|
|
||||||
end
|
|
||||||
object mnuedPrevWarn: TMenuItem
|
object mnuedPrevWarn: TMenuItem
|
||||||
Caption = 'Previous warning'
|
Caption = 'Previous warning'
|
||||||
OnClick = mnuedPrevWarnClick
|
OnClick = mnuedPrevWarnClick
|
||||||
end
|
end
|
||||||
|
object MenuItem10: TMenuItem
|
||||||
|
Caption = '-'
|
||||||
|
end
|
||||||
|
object mnuedNext: TMenuItem
|
||||||
|
Caption = 'Next location'
|
||||||
|
OnClick = mnuedNextClick
|
||||||
|
end
|
||||||
|
object mnuedNextCarea: TMenuItem
|
||||||
|
Caption = 'Next changed area'
|
||||||
|
OnClick = mnuedNextCareaClick
|
||||||
|
end
|
||||||
|
object mnuedNextProtGrp: TMenuItem
|
||||||
|
Caption = 'Next protection attribute'
|
||||||
|
OnClick = mnuedNextProtGrpClick
|
||||||
|
end
|
||||||
object mnuedNextWarn: TMenuItem
|
object mnuedNextWarn: TMenuItem
|
||||||
Caption = 'Next warning'
|
Caption = 'Next warning'
|
||||||
OnClick = mnuedNextWarnClick
|
OnClick = mnuedNextWarnClick
|
||||||
end
|
end
|
||||||
|
object MenuItem9: TMenuItem
|
||||||
|
Caption = '-'
|
||||||
|
end
|
||||||
|
object mnuedGotoline: TMenuItem
|
||||||
|
Caption = 'Goto line...'
|
||||||
|
OnClick = mnuedGotolineClick
|
||||||
|
end
|
||||||
object MenuItem2: TMenuItem
|
object MenuItem2: TMenuItem
|
||||||
Caption = '-'
|
Caption = '-'
|
||||||
end
|
end
|
||||||
|
|
|
@ -58,7 +58,7 @@ type
|
||||||
MenuItem10: TMenuItem;
|
MenuItem10: TMenuItem;
|
||||||
MenuItem11: TMenuItem;
|
MenuItem11: TMenuItem;
|
||||||
MenuItem12: TMenuItem;
|
MenuItem12: TMenuItem;
|
||||||
MenuItem14: TMenuItem;
|
mnuedGotoline: TMenuItem;
|
||||||
mnuedPrevWarn: TMenuItem;
|
mnuedPrevWarn: TMenuItem;
|
||||||
mnuedNextWarn: TMenuItem;
|
mnuedNextWarn: TMenuItem;
|
||||||
mnuedDdocTmp: TMenuItem;
|
mnuedDdocTmp: TMenuItem;
|
||||||
|
@ -94,6 +94,7 @@ type
|
||||||
editorStatus: TStatusBar;
|
editorStatus: TStatusBar;
|
||||||
mnuEditor: TPopupMenu;
|
mnuEditor: TPopupMenu;
|
||||||
procedure mnuedDdocTmpClick(Sender: TObject);
|
procedure mnuedDdocTmpClick(Sender: TObject);
|
||||||
|
procedure mnuedGotolineClick(Sender: TObject);
|
||||||
procedure mnuedNextWarnClick(Sender: TObject);
|
procedure mnuedNextWarnClick(Sender: TObject);
|
||||||
procedure mnuedPrevProtGrpClick(Sender: TObject);
|
procedure mnuedPrevProtGrpClick(Sender: TObject);
|
||||||
procedure mnuedNextProtGrpClick(Sender: TObject);
|
procedure mnuedNextProtGrpClick(Sender: TObject);
|
||||||
|
@ -921,6 +922,12 @@ begin
|
||||||
fDoc.insertDdocTemplate;
|
fDoc.insertDdocTemplate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEEditorWidget.mnuedGotolineClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if fDoc.isNotNil then
|
||||||
|
fDoc.gotoLinePrompt;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEEditorWidget.mnuedNextWarnClick(Sender: TObject);
|
procedure TCEEditorWidget.mnuedNextWarnClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fDoc.isNotNil then
|
if fDoc.isNotNil then
|
||||||
|
|
|
@ -343,6 +343,7 @@ type
|
||||||
procedure removeCurLineBreakPoint;
|
procedure removeCurLineBreakPoint;
|
||||||
procedure toggleCurLineBreakpoint;
|
procedure toggleCurLineBreakpoint;
|
||||||
procedure insertDdocTemplate;
|
procedure insertDdocTemplate;
|
||||||
|
procedure gotoLinePrompt;
|
||||||
function implementMain: THasMain;
|
function implementMain: THasMain;
|
||||||
procedure replaceUndoableContent(const value: string);
|
procedure replaceUndoableContent(const value: string);
|
||||||
procedure setDscannerOptions(dsEnabled: boolean; dsDelay: integer);
|
procedure setDscannerOptions(dsEnabled: boolean; dsDelay: integer);
|
||||||
|
@ -429,6 +430,7 @@ const
|
||||||
ecInsertDdocTemplate = ecUserFirst + 25;
|
ecInsertDdocTemplate = ecUserFirst + 25;
|
||||||
ecNextWarning = ecUserFirst + 26;
|
ecNextWarning = ecUserFirst + 26;
|
||||||
ecPrevWarning = ecUserFirst + 27;
|
ecPrevWarning = ecUserFirst + 27;
|
||||||
|
ecGotoLine = ecUserFirst + 28;
|
||||||
|
|
||||||
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.
|
||||||
|
@ -1195,6 +1197,7 @@ begin
|
||||||
AddKey(ecInsertDdocTemplate, 0, [], 0, []);
|
AddKey(ecInsertDdocTemplate, 0, [], 0, []);
|
||||||
AddKey(ecPrevWarning, 0, [], 0, []);
|
AddKey(ecPrevWarning, 0, [], 0, []);
|
||||||
AddKey(ecNextWarning, 0, [], 0, []);
|
AddKey(ecNextWarning, 0, [], 0, []);
|
||||||
|
AddKey(ecGotoLine, 0, [], 0, []);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1228,6 +1231,7 @@ begin
|
||||||
'ecInsertDdocTemplate': begin Int := ecInsertDdocTemplate; exit(true); end;
|
'ecInsertDdocTemplate': begin Int := ecInsertDdocTemplate; exit(true); end;
|
||||||
'ecPrevWarning': begin Int := ecPrevWarning; exit(true); end;
|
'ecPrevWarning': begin Int := ecPrevWarning; exit(true); end;
|
||||||
'ecNextWarning': begin Int := ecNextWarning; exit(true); end;
|
'ecNextWarning': begin Int := ecNextWarning; exit(true); end;
|
||||||
|
'ecGotoLine': begin Int := ecGotoLine; exit(true); end;
|
||||||
else exit(false);
|
else exit(false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -1262,6 +1266,7 @@ begin
|
||||||
ecInsertDdocTemplate: begin Ident := 'ecInsertDdocTemplate'; exit(true); end;
|
ecInsertDdocTemplate: begin Ident := 'ecInsertDdocTemplate'; exit(true); end;
|
||||||
ecPrevWarning: begin Ident := 'ecPrevWarning'; exit(true); end;
|
ecPrevWarning: begin Ident := 'ecPrevWarning'; exit(true); end;
|
||||||
ecNextWarning: begin Ident := 'ecNextWarning'; exit(true); end;
|
ecNextWarning: begin Ident := 'ecNextWarning'; exit(true); end;
|
||||||
|
ecGotoLine: begin Ident := 'ecGotoLine'; exit(true); end;
|
||||||
else exit(false);
|
else exit(false);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -1338,6 +1343,8 @@ begin
|
||||||
goToWarning(false);
|
goToWarning(false);
|
||||||
ecNextWarning:
|
ecNextWarning:
|
||||||
goToWarning(true);
|
goToWarning(true);
|
||||||
|
ecGotoLine:
|
||||||
|
gotoLinePrompt;
|
||||||
end;
|
end;
|
||||||
if fOverrideColMode and not SelAvail then
|
if fOverrideColMode and not SelAvail then
|
||||||
begin
|
begin
|
||||||
|
@ -1786,6 +1793,29 @@ begin
|
||||||
goToWarning(true);
|
goToWarning(true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCESynMemo.gotoLinePrompt;
|
||||||
|
var
|
||||||
|
d: string;
|
||||||
|
v: string;
|
||||||
|
i: integer;
|
||||||
|
begin
|
||||||
|
d := caretY.ToString;
|
||||||
|
v := InputBox('Goto line', 'line number', d);
|
||||||
|
if v.isNotEmpty and not v.Equals(d) then
|
||||||
|
begin
|
||||||
|
i := v.toIntNoExcept;
|
||||||
|
if i <> -1 then
|
||||||
|
begin
|
||||||
|
if i < 1 then
|
||||||
|
i := 1
|
||||||
|
else if i > lines.Count then
|
||||||
|
i := lines.Count;
|
||||||
|
CaretY:= i;
|
||||||
|
EnsureCursorPosVisible;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCESynMemo.goToChangedArea(next: boolean);
|
procedure TCESynMemo.goToChangedArea(next: boolean);
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
|
|
Loading…
Reference in New Issue