mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 09:59:23 +02:00
implemented eoAlwaysVisibleCaret from Martin Smat
git-svn-id: trunk@8777 -
This commit is contained in:
parent
83c73c3f8e
commit
16accc1b02
@ -201,7 +201,8 @@ type
|
|||||||
|
|
||||||
{$IFDEF SYN_LAZARUS}
|
{$IFDEF SYN_LAZARUS}
|
||||||
TSynEditorOption2 = (
|
TSynEditorOption2 = (
|
||||||
eoCaretSkipsSelection // caret skips selection on VK_LEFT/VK_RIGHT
|
eoCaretSkipsSelection, // caret skips selection on VK_LEFT/VK_RIGHT
|
||||||
|
eoAlwaysVisibleCaret // Move caret to be always visible when scrolling
|
||||||
);
|
);
|
||||||
TSynEditorOptions2 = set of TSynEditorOption2;
|
TSynEditorOptions2 = set of TSynEditorOption2;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -757,6 +758,7 @@ type
|
|||||||
PhysicalPos: integer): integer;
|
PhysicalPos: integer): integer;
|
||||||
function PhysicalToLogicalCol(const Line: string;
|
function PhysicalToLogicalCol(const Line: string;
|
||||||
PhysicalPos, StartBytePos, StartPhysicalPos: integer): integer;
|
PhysicalPos, StartBytePos, StartPhysicalPos: integer): integer;
|
||||||
|
procedure MoveCaretToVisibleArea;
|
||||||
function NextTokenPos: TPoint; virtual;
|
function NextTokenPos: TPoint; virtual;
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
function LogicalToPhysicalPos(p: TPoint): TPoint;
|
function LogicalToPhysicalPos(p: TPoint): TPoint;
|
||||||
@ -5495,6 +5497,18 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IFDEF SYN_LAZARUS}
|
||||||
|
procedure TCustomSynEdit.MoveCaretToVisibleArea;
|
||||||
|
begin
|
||||||
|
if caretX < fLeftChar then caretX := fLeftChar
|
||||||
|
else if caretX >= fLeftChar + fCharsInWindow then
|
||||||
|
caretX := fLeftChar + fCharsInWindow - 1;
|
||||||
|
if caretY < fTopLine then caretY := fTopLine
|
||||||
|
else if caretY >= fTopLine + fLinesInWindow then
|
||||||
|
caretY := fTopLine + fLinesInWindow - 1;
|
||||||
|
end;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
procedure TCustomSynEdit.UpdateCaret;
|
procedure TCustomSynEdit.UpdateCaret;
|
||||||
var
|
var
|
||||||
CX, CY: Integer;
|
CX, CY: Integer;
|
||||||
@ -5512,6 +5526,10 @@ begin
|
|||||||
Include(fStateFlags, sfCaretChanged)
|
Include(fStateFlags, sfCaretChanged)
|
||||||
else begin
|
else begin
|
||||||
Exclude(fStateFlags, sfCaretChanged);
|
Exclude(fStateFlags, sfCaretChanged);
|
||||||
|
{$IFDEF SYN_LAZARUS}
|
||||||
|
if eoAlwaysVisibleCaret in fOptions2 then
|
||||||
|
MoveCaretToVisibleArea;
|
||||||
|
{$ENDIF}
|
||||||
CX := CaretXPix + FCaretOffset.X;
|
CX := CaretXPix + FCaretOffset.X;
|
||||||
CY := CaretYPix + FCaretOffset.Y;
|
CY := CaretYPix + FCaretOffset.Y;
|
||||||
if (CX >= fGutterWidth)
|
if (CX >= fGutterWidth)
|
||||||
|
@ -1282,6 +1282,8 @@ begin
|
|||||||
case SynEditOpt2 of
|
case SynEditOpt2 of
|
||||||
eoCaretSkipsSelection:
|
eoCaretSkipsSelection:
|
||||||
SynEditOptName := 'CaretSkipsSelection';
|
SynEditOptName := 'CaretSkipsSelection';
|
||||||
|
eoAlwaysVisibleCaret:
|
||||||
|
SynEditOptName := 'AlwaysVisibleCaret';
|
||||||
else
|
else
|
||||||
SynEditOptName := '';
|
SynEditOptName := '';
|
||||||
end;
|
end;
|
||||||
@ -1448,6 +1450,8 @@ begin
|
|||||||
case SynEditOpt2 of
|
case SynEditOpt2 of
|
||||||
eoCaretSkipsSelection:
|
eoCaretSkipsSelection:
|
||||||
SynEditOptName := 'CaretSkipsSelection';
|
SynEditOptName := 'CaretSkipsSelection';
|
||||||
|
eoAlwaysVisibleCaret:
|
||||||
|
SynEditOptName := 'AlwaysVisibleCaret';
|
||||||
else
|
else
|
||||||
SynEditOptName := '';
|
SynEditOptName := '';
|
||||||
end;
|
end;
|
||||||
@ -2560,6 +2564,7 @@ begin
|
|||||||
SetOption(dlgTrimTrailingSpaces, eoTrimTrailingSpaces);
|
SetOption(dlgTrimTrailingSpaces, eoTrimTrailingSpaces);
|
||||||
|
|
||||||
SetOption2(dlgCaretSkipsSelection, eoCaretSkipsSelection);
|
SetOption2(dlgCaretSkipsSelection, eoCaretSkipsSelection);
|
||||||
|
SetOption2(dlgAlwaysVisibleCaret, eoAlwaysVisibleCaret);
|
||||||
|
|
||||||
for a := Low(PreviewEdits) to High(PreviewEdits) do
|
for a := Low(PreviewEdits) to High(PreviewEdits) do
|
||||||
if PreviewEdits[a] <> Nil then
|
if PreviewEdits[a] <> Nil then
|
||||||
@ -3509,6 +3514,7 @@ begin
|
|||||||
Items.Add(dlgScrollPastEndFile);
|
Items.Add(dlgScrollPastEndFile);
|
||||||
Items.Add(dlgScrollPastEndLine);
|
Items.Add(dlgScrollPastEndLine);
|
||||||
Items.Add(dlgHomeKeyJumpsToNearestStart);
|
Items.Add(dlgHomeKeyJumpsToNearestStart);
|
||||||
|
Items.Add(dlgAlwaysVisibleCaret);
|
||||||
// tabs
|
// tabs
|
||||||
Items.Add(dlgSmartTabs);
|
Items.Add(dlgSmartTabs);
|
||||||
Items.Add(dlgTabsToSpaces);
|
Items.Add(dlgTabsToSpaces);
|
||||||
@ -3570,6 +3576,8 @@ begin
|
|||||||
eoEnhanceHomeKey in EditorOpts.SynEditOptions;
|
eoEnhanceHomeKey in EditorOpts.SynEditOptions;
|
||||||
Checked[Items.IndexOf(dlgCaretSkipsSelection)] :=
|
Checked[Items.IndexOf(dlgCaretSkipsSelection)] :=
|
||||||
eoCaretSkipsSelection in EditorOpts.SynEditOptions2;
|
eoCaretSkipsSelection in EditorOpts.SynEditOptions2;
|
||||||
|
Checked[Items.IndexOf(dlgAlwaysVisibleCaret)] :=
|
||||||
|
eoAlwaysVisibleCaret in EditorOpts.SynEditOptions2;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
with BlockIndentComboBox do
|
with BlockIndentComboBox do
|
||||||
|
@ -851,6 +851,7 @@ resourcestring
|
|||||||
lisLazarusPackage = 'Lazarus package';
|
lisLazarusPackage = 'Lazarus package';
|
||||||
lisLazarusProjectSource = 'Lazarus project source';
|
lisLazarusProjectSource = 'Lazarus project source';
|
||||||
dlgAltSetClMode = 'Alt-Key sets column mode';
|
dlgAltSetClMode = 'Alt-Key sets column mode';
|
||||||
|
dlgAlwaysVisibleCaret = 'Always visible caret';
|
||||||
dlgAutoIdent = 'Auto indent';
|
dlgAutoIdent = 'Auto indent';
|
||||||
dlgBracHighlight = 'Bracket highlighting';
|
dlgBracHighlight = 'Bracket highlighting';
|
||||||
dlgDragDropEd = 'Drag Drop editing';
|
dlgDragDropEd = 'Drag Drop editing';
|
||||||
|
@ -8870,3 +8870,7 @@ msgstr ""
|
|||||||
msgid "Save session information in"
|
msgid "Save session information in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lazarusidestrconsts:dlgalwaysvisiblecaret
|
||||||
|
msgid "Always visible caret"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user