mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 03:19:25 +02:00
IDE+codetools: implemented complete blocks in statements
git-svn-id: trunk@20108 -
This commit is contained in:
parent
f8012d194e
commit
9bd290d86e
@ -69,6 +69,7 @@ function FindMainUnitHint(const ASource: string; out Filename: string): boolean;
|
|||||||
procedure GetLineStartEndAtPosition(const Source:string; Position:integer;
|
procedure GetLineStartEndAtPosition(const Source:string; Position:integer;
|
||||||
var LineStart,LineEnd:integer);
|
var LineStart,LineEnd:integer);
|
||||||
function GetLineIndent(const Source: string; Position: integer): integer;
|
function GetLineIndent(const Source: string; Position: integer): integer;
|
||||||
|
function GetPosInLine(const Source: string; Position: integer): integer;
|
||||||
function GetBlockMinIndent(const Source: string;
|
function GetBlockMinIndent(const Source: string;
|
||||||
StartPos, EndPos: integer): integer;
|
StartPos, EndPos: integer): integer;
|
||||||
function GetIndentStr(Indent: integer): string;
|
function GetIndentStr(Indent: integer): string;
|
||||||
@ -3526,6 +3527,15 @@ begin
|
|||||||
until false;
|
until false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GetPosInLine(const Source: string; Position: integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=0;
|
||||||
|
while (Position>1) and (not (Source[Position] in [#10,#13])) do begin
|
||||||
|
inc(Result);
|
||||||
|
dec(Position);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function GetBlockMinIndent(const Source: string;
|
function GetBlockMinIndent(const Source: string;
|
||||||
StartPos, EndPos: integer): integer;
|
StartPos, EndPos: integer): integer;
|
||||||
var
|
var
|
||||||
|
@ -979,6 +979,7 @@ begin
|
|||||||
if (CurPos.EndPos-CurPos.StartPos=3)
|
if (CurPos.EndPos-CurPos.StartPos=3)
|
||||||
and (Src[CurPos.StartPos+1] in ['n','N'])
|
and (Src[CurPos.StartPos+1] in ['n','N'])
|
||||||
and (Src[CurPos.StartPos+2] in ['d','D'])
|
and (Src[CurPos.StartPos+2] in ['d','D'])
|
||||||
|
and ((CurPos.StartPos=1) or (Src[CurPos.StartPos-1]<>'@'))
|
||||||
then
|
then
|
||||||
CurPos.Flag:=cafEnd;
|
CurPos.Flag:=cafEnd;
|
||||||
'r','R':
|
'r','R':
|
||||||
|
@ -5086,32 +5086,338 @@ end;
|
|||||||
function TStandardCodeTool.CompleteBlock(const CursorPos: TCodeXYPosition;
|
function TStandardCodeTool.CompleteBlock(const CursorPos: TCodeXYPosition;
|
||||||
SourceChangeCache: TSourceChangeCache;
|
SourceChangeCache: TSourceChangeCache;
|
||||||
out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean;
|
out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean;
|
||||||
{ begin: end;
|
{ For example:
|
||||||
asm: end;
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
try: finally end;
|
begin
|
||||||
finally: end;
|
|
|
||||||
except: end;
|
...
|
||||||
repeat: until ;
|
something
|
||||||
case of: end;
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
case :: ;
|
if then begin
|
||||||
case else: end;
|
|
|
||||||
(: )
|
...
|
||||||
[: ]
|
something
|
||||||
record: end;
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
class: end;
|
begin
|
||||||
object: end;
|
|
|
||||||
interface: end;
|
|
||||||
|
procedure
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
|
ToDo:
|
||||||
|
|
||||||
|
if then begin
|
||||||
|
|
|
||||||
|
else
|
||||||
|
|
||||||
|
while do begin
|
||||||
|
|
|
||||||
|
foo;
|
||||||
|
bar;
|
||||||
|
|
||||||
|
|
||||||
|
Statements:
|
||||||
|
begin: end;
|
||||||
|
asm: end;
|
||||||
|
try: finally end;
|
||||||
|
finally: end;
|
||||||
|
except: end;
|
||||||
|
repeat: until ;
|
||||||
|
case of: end;
|
||||||
|
case :: ;
|
||||||
|
case else: end;
|
||||||
|
(: )
|
||||||
|
[: ]
|
||||||
|
|
||||||
|
Types:
|
||||||
|
(: )
|
||||||
|
[: ]
|
||||||
|
record: end;
|
||||||
|
class: end;
|
||||||
|
object: end;
|
||||||
|
interface: end;
|
||||||
}
|
}
|
||||||
|
type
|
||||||
|
TBlockType = (
|
||||||
|
btNone,
|
||||||
|
btBegin,
|
||||||
|
btAsm,
|
||||||
|
btEdgedBracket,
|
||||||
|
btRoundBracket,
|
||||||
|
btTry,
|
||||||
|
btFinally,
|
||||||
|
btExcept,
|
||||||
|
btCase,
|
||||||
|
btCaseOf,
|
||||||
|
btCaseColon,
|
||||||
|
btCaseElse,
|
||||||
|
btRepeat,
|
||||||
|
btClass,
|
||||||
|
btInterface,
|
||||||
|
btObject,
|
||||||
|
btRecord
|
||||||
|
);
|
||||||
|
TBlock = record
|
||||||
|
Typ: TBlockType;
|
||||||
|
StartPos: integer;
|
||||||
|
end;
|
||||||
|
PBlock = ^TBlock;
|
||||||
|
TBlockStack = record
|
||||||
|
Stack: PBlock;
|
||||||
|
Capacity: integer;
|
||||||
|
Top: integer;
|
||||||
|
end;
|
||||||
var
|
var
|
||||||
CleanCursorPos: integer;
|
CleanCursorPos: integer;
|
||||||
Node: TCodeTreeNode;
|
StartNode: TCodeTreeNode;
|
||||||
|
|
||||||
|
procedure InitStack(out Stack: TBlockStack);
|
||||||
|
begin
|
||||||
|
FillByte(Stack,SizeOf(Stack),0);
|
||||||
|
Stack.Top:=-1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure FreeStack(var Stack: TBlockStack);
|
||||||
|
begin
|
||||||
|
ReAllocMem(Stack.Stack,0);
|
||||||
|
Stack.Capacity:=0;
|
||||||
|
Stack.Top:=-1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure BeginBlock(var Stack: TBlockStack; Typ: TBlockType;
|
||||||
|
StartPos: integer);
|
||||||
|
var
|
||||||
|
Block: PBlock;
|
||||||
|
begin
|
||||||
|
inc(Stack.Top);
|
||||||
|
if Stack.Top>=Stack.Capacity then begin
|
||||||
|
if Stack.Capacity=0 then
|
||||||
|
Stack.Capacity:=16
|
||||||
|
else
|
||||||
|
Stack.Capacity:=Stack.Capacity*2;
|
||||||
|
ReAllocMem(Stack.Stack,SizeOf(TBlock)*Stack.Capacity);
|
||||||
|
end;
|
||||||
|
Block:=@Stack.Stack[Stack.Top];
|
||||||
|
Block^.Typ:=Typ;
|
||||||
|
Block^.StartPos:=StartPos;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure EndBlock(var Stack: TBlockStack);
|
||||||
|
begin
|
||||||
|
dec(Stack.Top);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TopBlockType(const Stack: TBlockStack): TBlockType;
|
||||||
|
begin
|
||||||
|
if Stack.Top>=0 then
|
||||||
|
Result:=Stack.Stack[Stack.Top].Typ
|
||||||
|
else
|
||||||
|
Result:=btNone;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ReadStatements(var Stack: TBlockStack): Boolean;
|
||||||
|
var
|
||||||
|
CursorBlockLvl: Integer; // the stack level of the cursor
|
||||||
|
LastPos: Integer;
|
||||||
|
LineStart: boolean; // Atom is first atom of a line in cursor block (not in sub block)
|
||||||
|
Indent: Integer;
|
||||||
|
CursorBlockIndent: LongInt;
|
||||||
|
CursorBlock: TBlock;
|
||||||
|
BehindCursorBlock: Boolean; // atom behind cursor block
|
||||||
|
InCursorBlock: Boolean;
|
||||||
|
NeedCompletion: Boolean;
|
||||||
|
InsertPos: LongInt;
|
||||||
|
NewCode: String;
|
||||||
|
|
||||||
|
function EndBlockIsOk: boolean;
|
||||||
|
begin
|
||||||
|
//DebugLn(['EndBlockIsOk ']);
|
||||||
|
EndBlock(Stack);
|
||||||
|
Result:=true;
|
||||||
|
if (not BehindCursorBlock) and (Stack.Top<CursorBlockLvl) then
|
||||||
|
BehindCursorBlock:=true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:=false;
|
||||||
|
MoveCursorToNodeStart(StartNode);
|
||||||
|
CursorBlockLvl:=-2;
|
||||||
|
LastPos:=-1;
|
||||||
|
CursorBlockIndent:=0;
|
||||||
|
Indent:=0;
|
||||||
|
CursorBlock.StartPos:=0;
|
||||||
|
BehindCursorBlock:=false;
|
||||||
|
NeedCompletion:=false;
|
||||||
|
repeat
|
||||||
|
ReadNextAtom;
|
||||||
|
|
||||||
|
//DebugLn(['ReadStatements Atom=',GetAtom,' TopTyp=',ord(TopBlockType(Stack)),' Top=',Stack.Top]);
|
||||||
|
|
||||||
|
// check if cursor reached
|
||||||
|
if (CurPos.StartPos>=CleanCursorPos) and (CursorBlockLvl<0) then begin
|
||||||
|
// reached cursor
|
||||||
|
CursorBlockLvl:=Stack.Top;
|
||||||
|
if CursorBlockLvl<0 then
|
||||||
|
CursorBlockIndent:=GetLineIndent(Src,CurPos.StartPos)
|
||||||
|
else begin
|
||||||
|
CursorBlock:=Stack.Stack[CursorBlockLvl];
|
||||||
|
CursorBlockIndent:=GetLineIndent(Src,CursorBlock.StartPos);
|
||||||
|
end;
|
||||||
|
//DebugLn(['ReadStatements CursorBlockLvl=',CursorBlockLvl,' Indent=',CursorBlockIndent]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
// check if end of node
|
||||||
|
if (CurPos.StartPos>SrcLen) or (CurPos.StartPos>=StartNode.EndPos) then
|
||||||
|
break;
|
||||||
|
|
||||||
|
// check if line start
|
||||||
|
InCursorBlock:=(CursorBlockLvl=Stack.Top) and (not BehindCursorBlock);
|
||||||
|
LineStart:=InCursorBlock and (LastPos>0)
|
||||||
|
and not PositionsInSameLine(Src,LastPos,CurPos.StartPos);
|
||||||
|
if LineStart then
|
||||||
|
Indent:=GetLineIndent(Src,CurPos.StartPos);
|
||||||
|
|
||||||
|
if LineStart then begin
|
||||||
|
// atom is in same block as cursor (not sub block)
|
||||||
|
// and first atom of a line
|
||||||
|
// => check indent
|
||||||
|
if Indent<CursorBlockIndent then begin
|
||||||
|
//DebugLn(['ReadStatements Indent=',Indent,' < CursorBlockIndent=',CursorBlockIndent]);
|
||||||
|
NeedCompletion:=true;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// check block starts/ends
|
||||||
|
case CurPos.Flag of
|
||||||
|
cafEnd:
|
||||||
|
begin
|
||||||
|
case TopBlockType(Stack) of
|
||||||
|
btBegin,btFinally,btExcept,btCase,btCaseOf,btCaseColon,btCaseElse:
|
||||||
|
if not EndBlockIsOk then exit;
|
||||||
|
btAsm:
|
||||||
|
if (CurPos.StartPos>1) and (Src[CurPos.StartPos-1]<>'@') then begin
|
||||||
|
if not EndBlockIsOk then exit;
|
||||||
|
end;
|
||||||
|
else
|
||||||
|
// missing begin
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
cafEdgedBracketOpen:
|
||||||
|
BeginBlock(Stack,btEdgedBracket,CurPos.StartPos);
|
||||||
|
cafEdgedBracketClose:
|
||||||
|
if TopBlockType(Stack)=btEdgedBracket then begin
|
||||||
|
if not EndBlockIsOk then exit;
|
||||||
|
end else begin
|
||||||
|
// missing [
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
cafRoundBracketOpen:
|
||||||
|
BeginBlock(Stack,btRoundBracket,CurPos.StartPos);
|
||||||
|
cafRoundBracketClose:
|
||||||
|
if TopBlockType(Stack)=btRoundBracket then begin
|
||||||
|
if not EndBlockIsOk then exit;
|
||||||
|
end else begin
|
||||||
|
// missing (
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
cafColon:
|
||||||
|
if TopBlockType(Stack)=btCaseOf then
|
||||||
|
BeginBlock(Stack,btCaseColon,CurPos.StartPos);
|
||||||
|
cafSemicolon:
|
||||||
|
if TopBlockType(Stack)=btCaseColon then
|
||||||
|
if not EndBlockIsOk then exit;
|
||||||
|
cafBegin:
|
||||||
|
BeginBlock(Stack,btBegin,CurPos.StartPos);
|
||||||
|
cafWord:
|
||||||
|
if TopBlockType(Stack)<>btAsm then begin
|
||||||
|
if UpAtomIs('TRY') then
|
||||||
|
BeginBlock(Stack,btTry,CurPos.StartPos)
|
||||||
|
else if UpAtomIs('FINALLY') then
|
||||||
|
BeginBlock(Stack,btFinally,CurPos.StartPos)
|
||||||
|
else if UpAtomIs('EXCEPT') then
|
||||||
|
BeginBlock(Stack,btExcept,CurPos.StartPos)
|
||||||
|
else if UpAtomIs('REPEAT') then
|
||||||
|
BeginBlock(Stack,btRepeat,CurPos.StartPos)
|
||||||
|
else if UpAtomIs('UNTIL') then begin
|
||||||
|
if TopBlockType(Stack)=btRepeat then begin
|
||||||
|
if not EndBlockIsOk then exit;
|
||||||
|
end else begin
|
||||||
|
// until without repeat
|
||||||
|
end;
|
||||||
|
end else if UpAtomIs('ASM') then begin
|
||||||
|
BeginBlock(Stack,btAsm,CurPos.StartPos);
|
||||||
|
end else if UpAtomIs('CASE') then begin
|
||||||
|
BeginBlock(Stack,btCase,CurPos.StartPos)
|
||||||
|
end else if UpAtomIs('OF') then begin
|
||||||
|
if TopBlockType(Stack)=btCase then
|
||||||
|
BeginBlock(Stack,btCaseOf,CurPos.StartPos);
|
||||||
|
end else if UpAtomIs('ELSE') then begin
|
||||||
|
if TopBlockType(Stack)=btCaseOf then begin
|
||||||
|
if not EndBlockIsOk then exit;
|
||||||
|
BeginBlock(Stack,btCaseElse,CurPos.StartPos);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
LastPos:=CurPos.StartPos;
|
||||||
|
until false;
|
||||||
|
|
||||||
|
//DebugLn(['ReadStatements END Stack.Top=',Stack.Top,' CursorBlockLvl=',CursorBlockLvl,' BehindCursorBlock=',BehindCursorBlock]);
|
||||||
|
|
||||||
|
if (not NeedCompletion) and (Stack.Top>=0)
|
||||||
|
and (not BehindCursorBlock) and (CursorBlockLvl=Stack.Top) then begin
|
||||||
|
NeedCompletion:=true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if NeedCompletion then begin
|
||||||
|
InsertPos:=CleanCursorPos;
|
||||||
|
Indent:=CursorBlockIndent;
|
||||||
|
NewCode:='';
|
||||||
|
case CursorBlock.Typ of
|
||||||
|
btBegin,btFinally,btExcept,btAsm,btCaseOf,btCaseElse:
|
||||||
|
NewCode:='end;';
|
||||||
|
btRepeat:
|
||||||
|
NewCode:='until ;';
|
||||||
|
btTry:
|
||||||
|
NewCode:='finally'+SourceChangeCache.BeautifyCodeOptions.LineEnd
|
||||||
|
+'end;';
|
||||||
|
end;
|
||||||
|
if NewCode<>'' then begin
|
||||||
|
NewCode:=SourceChangeCache.BeautifyCodeOptions.BeautifyStatement(
|
||||||
|
NewCode,Indent,[bcfIndentExistingLineBreaks]);
|
||||||
|
if not SourceChangeCache.Replace(gtNewLine,gtNewLine,
|
||||||
|
InsertPos,InsertPos,NewCode) then exit;
|
||||||
|
if not SourceChangeCache.Apply then exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result:=true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
Stack: TBlockStack;
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
|
NewPos:=CursorPos;
|
||||||
BuildTreeAndGetCleanPos(trTillCursor,CursorPos,CleanCursorPos,
|
BuildTreeAndGetCleanPos(trTillCursor,CursorPos,CleanCursorPos,
|
||||||
[{$IFNDEF DisableIgnoreErrorAfter}btSetIgnoreErrorPos{$ENDIF}]);
|
[{$IFNDEF DisableIgnoreErrorAfter}btSetIgnoreErrorPos{$ENDIF}]);
|
||||||
Node:=FindDeepestNodeAtPos(CleanCursorPos,true);
|
StartNode:=FindDeepestNodeAtPos(CleanCursorPos,true);
|
||||||
|
SourceChangeCache.MainScanner:=Scanner;
|
||||||
|
InitStack(Stack);
|
||||||
|
try
|
||||||
|
//DebugLn(['TStandardCodeTool.CompleteBlock ',StartNode.DescAsString]);
|
||||||
|
|
||||||
DebugLn(['TStandardCodeTool.CompleteBlock ',Node.DescAsString]);
|
if StartNode.Desc in AllPascalStatements then begin
|
||||||
|
if (StartNode.Parent<>nil)
|
||||||
|
and (StartNode.Parent.Desc in AllPascalStatements) then
|
||||||
|
StartNode:=StartNode.Parent;
|
||||||
|
if not ReadStatements(Stack) then exit;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FreeStack(Stack);
|
||||||
|
end;
|
||||||
|
Result:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TStandardCodeTool.GuessMisplacedIfdefEndif(
|
function TStandardCodeTool.GuessMisplacedIfdefEndif(
|
||||||
|
@ -5,16 +5,17 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
ClientWidth = 492
|
ClientWidth = 492
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
Visible = False
|
Visible = False
|
||||||
DesignTop = 25
|
DesignLeft = 398
|
||||||
|
DesignTop = 291
|
||||||
object AutoDelayMaxLabel: TLabel[0]
|
object AutoDelayMaxLabel: TLabel[0]
|
||||||
AnchorSideTop.Control = AutoDelayTrackBar
|
AnchorSideTop.Control = AutoDelayTrackBar
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideRight.Control = Owner
|
AnchorSideRight.Control = Owner
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 360
|
Left = 365
|
||||||
Height = 18
|
Height = 18
|
||||||
Top = 182
|
Top = 182
|
||||||
Width = 132
|
Width = 127
|
||||||
Alignment = taRightJustify
|
Alignment = taRightJustify
|
||||||
Anchors = [akTop, akRight]
|
Anchors = [akTop, akRight]
|
||||||
BorderSpacing.Top = 2
|
BorderSpacing.Top = 2
|
||||||
@ -28,7 +29,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 18
|
Height = 18
|
||||||
Top = 182
|
Top = 182
|
||||||
Width = 128
|
Width = 123
|
||||||
BorderSpacing.Top = 2
|
BorderSpacing.Top = 2
|
||||||
Caption = 'AutoDelayMinLabel'
|
Caption = 'AutoDelayMinLabel'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -40,7 +41,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 18
|
Height = 18
|
||||||
Top = 204
|
Top = 204
|
||||||
Width = 104
|
Width = 101
|
||||||
BorderSpacing.Top = 24
|
BorderSpacing.Top = 24
|
||||||
Caption = 'AutoDelayLabel'
|
Caption = 'AutoDelayLabel'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -52,7 +53,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 18
|
Height = 18
|
||||||
Top = 354
|
Top = 354
|
||||||
Width = 180
|
Width = 171
|
||||||
BorderSpacing.Top = 2
|
BorderSpacing.Top = 2
|
||||||
Caption = 'MarkupWordDelayMinLabel'
|
Caption = 'MarkupWordDelayMinLabel'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -62,10 +63,10 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideRight.Control = Owner
|
AnchorSideRight.Control = Owner
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 308
|
Left = 317
|
||||||
Height = 18
|
Height = 18
|
||||||
Top = 354
|
Top = 354
|
||||||
Width = 184
|
Width = 175
|
||||||
Alignment = taRightJustify
|
Alignment = taRightJustify
|
||||||
Anchors = [akTop, akRight]
|
Anchors = [akTop, akRight]
|
||||||
BorderSpacing.Top = 2
|
BorderSpacing.Top = 2
|
||||||
@ -79,7 +80,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 18
|
Height = 18
|
||||||
Top = 376
|
Top = 376
|
||||||
Width = 156
|
Width = 149
|
||||||
BorderSpacing.Top = 24
|
BorderSpacing.Top = 24
|
||||||
Caption = 'MarkupWordDelayLabel'
|
Caption = 'MarkupWordDelayLabel'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -90,10 +91,10 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
AnchorSideTop.Control = MarkupWordFullCheckBox
|
AnchorSideTop.Control = MarkupWordFullCheckBox
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
AnchorSideRight.Control = MarkupWordFullLenSpin
|
AnchorSideRight.Control = MarkupWordFullLenSpin
|
||||||
Left = 239
|
Left = 230
|
||||||
Height = 18
|
Height = 18
|
||||||
Top = 258
|
Top = 258
|
||||||
Width = 164
|
Width = 156
|
||||||
BorderSpacing.Left = 45
|
BorderSpacing.Left = 45
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'MarkupWordFullLenLabel'
|
Caption = 'MarkupWordFullLenLabel'
|
||||||
@ -105,7 +106,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 252
|
Width = 245
|
||||||
Caption = 'AutoIdentifierCompletionCheckBox'
|
Caption = 'AutoIdentifierCompletionCheckBox'
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
@ -116,7 +117,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 28
|
Top = 28
|
||||||
Width = 255
|
Width = 251
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'AutoRemoveEmptyMethodsOnSave'
|
Caption = 'AutoRemoveEmptyMethodsOnSave'
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
@ -128,32 +129,31 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 56
|
Top = 56
|
||||||
Width = 235
|
Width = 227
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'AutoToolTipSymbToolsCheckBox'
|
Caption = 'AutoToolTipSymbToolsCheckBox'
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object AutoCodeParametersCheckBox: TCheckBox[10]
|
object AutoCompleteBlockCheckBox: TCheckBox[10]
|
||||||
AnchorSideLeft.Control = Owner
|
AnchorSideLeft.Control = Owner
|
||||||
AnchorSideTop.Control = AutoToolTipSymbToolsCheckBox
|
AnchorSideTop.Control = AutoToolTipSymbToolsCheckBox
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 84
|
Top = 84
|
||||||
Width = 226
|
Width = 213
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'AutoCodeParametersCheckBox'
|
Caption = 'AutoCompleteBlockCheckBox'
|
||||||
Enabled = False
|
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
object AutoToolTipExprEvalCheckBox: TCheckBox[11]
|
object AutoToolTipExprEvalCheckBox: TCheckBox[11]
|
||||||
AnchorSideLeft.Control = Owner
|
AnchorSideLeft.Control = Owner
|
||||||
AnchorSideTop.Control = AutoCodeParametersCheckBox
|
AnchorSideTop.Control = AutoCompleteBlockCheckBox
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 112
|
Top = 112
|
||||||
Width = 222
|
Width = 213
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'AutoToolTipExprEvalCheckBox'
|
Caption = 'AutoToolTipExprEvalCheckBox'
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
@ -201,7 +201,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 256
|
Top = 256
|
||||||
Width = 194
|
Width = 185
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'MarkupWordFullCheckBox'
|
Caption = 'MarkupWordFullCheckBox'
|
||||||
TabOrder = 7
|
TabOrder = 7
|
||||||
@ -213,7 +213,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 284
|
Top = 284
|
||||||
Width = 180
|
Width = 172
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'MarkupWordNoKeyword'
|
Caption = 'MarkupWordNoKeyword'
|
||||||
TabOrder = 8
|
TabOrder = 8
|
||||||
@ -225,11 +225,10 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
AnchorSideRight.Control = Owner
|
AnchorSideRight.Control = Owner
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 409
|
Left = 392
|
||||||
Height = 27
|
Height = 27
|
||||||
Top = 254
|
Top = 254
|
||||||
Width = 48
|
Width = 48
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
TabOrder = 9
|
TabOrder = 9
|
||||||
@ -241,7 +240,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 228
|
Top = 228
|
||||||
Width = 227
|
Width = 219
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'MarkupWordNoTimerCheckBox'
|
Caption = 'MarkupWordNoTimerCheckBox'
|
||||||
TabOrder = 10
|
TabOrder = 10
|
||||||
@ -249,10 +248,10 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
|
|||||||
object MarkupWordTrim: TCheckBox[18]
|
object MarkupWordTrim: TCheckBox[18]
|
||||||
AnchorSideLeft.Control = MarkupWordFullLenLabel
|
AnchorSideLeft.Control = MarkupWordFullLenLabel
|
||||||
AnchorSideTop.Control = MarkupWordNoKeyword
|
AnchorSideTop.Control = MarkupWordNoKeyword
|
||||||
Left = 239
|
Left = 230
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 284
|
Top = 284
|
||||||
Width = 134
|
Width = 128
|
||||||
Caption = 'MarkupWordTrim'
|
Caption = 'MarkupWordTrim'
|
||||||
TabOrder = 11
|
TabOrder = 11
|
||||||
end
|
end
|
||||||
|
@ -3,66 +3,66 @@
|
|||||||
LazarusResources.Add('TEditorCodetoolsOptionsFrame','FORMDATA',[
|
LazarusResources.Add('TEditorCodetoolsOptionsFrame','FORMDATA',[
|
||||||
'TPF0'#241#28'TEditorCodetoolsOptionsFrame'#27'EditorCodetoolsOptionsFrame'#6
|
'TPF0'#241#28'TEditorCodetoolsOptionsFrame'#27'EditorCodetoolsOptionsFrame'#6
|
||||||
+'Height'#3#184#1#5'Width'#3#240#1#12'ClientHeight'#3#180#1#11'ClientWidth'#3
|
+'Height'#3#184#1#5'Width'#3#240#1#12'ClientHeight'#3#180#1#11'ClientWidth'#3
|
||||||
+#236#1#8'TabOrder'#2#0#7'Visible'#8#9'DesignTop'#2#25#0#242#2#0#6'TLabel'#17
|
+#236#1#8'TabOrder'#2#0#7'Visible'#8#10'DesignLeft'#3#142#1#9'DesignTop'#3'#'
|
||||||
+'AutoDelayMaxLabel'#21'AnchorSideTop.Control'#7#17'AutoDelayTrackBar'#18'Anc'
|
+#1#0#242#2#0#6'TLabel'#17'AutoDelayMaxLabel'#21'AnchorSideTop.Control'#7#17
|
||||||
+'horSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'A'
|
+'AutoDelayTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight'
|
||||||
+'nchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'h'#1#6'Height'#2#18#3'Top'#3
|
+'.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'm'#1
|
||||||
+#182#0#5'Width'#3#132#0#9'Alignment'#7#14'taRightJustify'#7'Anchors'#11#5'ak'
|
+#6'Height'#2#18#3'Top'#3#182#0#5'Width'#2''#9'Alignment'#7#14'taRightJustif'
|
||||||
+'Top'#7'akRight'#0#17'BorderSpacing.Top'#2#2#7'Caption'#6#17'AutoDelayMaxLab'
|
+'y'#7'Anchors'#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#2#7'Caption'
|
||||||
+'el'#11'ParentColor'#8#0#0#242#2#1#6'TLabel'#17'AutoDelayMinLabel'#22'Anchor'
|
+#6#17'AutoDelayMaxLabel'#11'ParentColor'#8#0#0#242#2#1#6'TLabel'#17'AutoDela'
|
||||||
+'SideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#17'AutoDelayTrackB'
|
+'yMinLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7
|
||||||
+'ar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#18#3'Top'
|
+#17'AutoDelayTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'H'
|
||||||
+#3#182#0#5'Width'#3#128#0#17'BorderSpacing.Top'#2#2#7'Caption'#6#17'AutoDela'
|
+'eight'#2#18#3'Top'#3#182#0#5'Width'#2'{'#17'BorderSpacing.Top'#2#2#7'Captio'
|
||||||
+'yMinLabel'#11'ParentColor'#8#0#0#242#2#2#6'TLabel'#14'AutoDelayLabel'#22'An'
|
+'n'#6#17'AutoDelayMinLabel'#11'ParentColor'#8#0#0#242#2#2#6'TLabel'#14'AutoD'
|
||||||
+'chorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#17'AutoDelayTr'
|
+'elayLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7
|
||||||
+'ackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#18#3
|
+#17'AutoDelayTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'H'
|
||||||
+'Top'#3#204#0#5'Width'#2'h'#17'BorderSpacing.Top'#2#24#7'Caption'#6#14'AutoD'
|
+'eight'#2#18#3'Top'#3#204#0#5'Width'#2'e'#17'BorderSpacing.Top'#2#24#7'Capti'
|
||||||
+'elayLabel'#11'ParentColor'#8#0#0#242#2#3#6'TLabel'#18'MarkupWordMinLabel'#22
|
+'on'#6#14'AutoDelayLabel'#11'ParentColor'#8#0#0#242#2#3#6'TLabel'#18'MarkupW'
|
||||||
+'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#22'MarkupWor'
|
+'ordMinLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'
|
||||||
+'dTimeTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2
|
+#7#22'MarkupWordTimeTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2
|
||||||
+#18#3'Top'#3'b'#1#5'Width'#3#180#0#17'BorderSpacing.Top'#2#2#7'Caption'#6#23
|
+#0#6'Height'#2#18#3'Top'#3'b'#1#5'Width'#3#171#0#17'BorderSpacing.Top'#2#2#7
|
||||||
+'MarkupWordDelayMinLabel'#11'ParentColor'#8#0#0#242#2#4#6'TLabel'#18'MarkupW'
|
+'Caption'#6#23'MarkupWordDelayMinLabel'#11'ParentColor'#8#0#0#242#2#4#6'TLab'
|
||||||
+'ordMaxLabel'#21'AnchorSideTop.Control'#7#22'MarkupWordTimeTrackBar'#18'Anch'
|
+'el'#18'MarkupWordMaxLabel'#21'AnchorSideTop.Control'#7#22'MarkupWordTimeTra'
|
||||||
+'orSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'An'
|
+'ckBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5
|
||||||
+'chorSideRight.Side'#7#9'asrBottom'#4'Left'#3'4'#1#6'Height'#2#18#3'Top'#3'b'
|
+'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'='#1#6'Height'#2#18
|
||||||
+#1#5'Width'#3#184#0#9'Alignment'#7#14'taRightJustify'#7'Anchors'#11#5'akTop'
|
+#3'Top'#3'b'#1#5'Width'#3#175#0#9'Alignment'#7#14'taRightJustify'#7'Anchors'
|
||||||
+#7'akRight'#0#17'BorderSpacing.Top'#2#2#7'Caption'#6#23'MarkupWordDelayMaxLa'
|
+#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#2#7'Caption'#6#23'MarkupWo'
|
||||||
+'bel'#11'ParentColor'#8#0#0#242#2#5#6'TLabel'#20'MarkupWordDelayLabel'#22'An'
|
+'rdDelayMaxLabel'#11'ParentColor'#8#0#0#242#2#5#6'TLabel'#20'MarkupWordDelay'
|
||||||
+'chorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#22'MarkupWordT'
|
+'Label'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#22
|
||||||
+'imeTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2
|
+'MarkupWordTimeTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6
|
||||||
+#18#3'Top'#3'x'#1#5'Width'#3#156#0#17'BorderSpacing.Top'#2#24#7'Caption'#6#20
|
+'Height'#2#18#3'Top'#3'x'#1#5'Width'#3#149#0#17'BorderSpacing.Top'#2#24#7'Ca'
|
||||||
+'MarkupWordDelayLabel'#11'ParentColor'#8#0#0#242#2#6#6'TLabel'#22'MarkupWord'
|
+'ption'#6#20'MarkupWordDelayLabel'#11'ParentColor'#8#0#0#242#2#6#6'TLabel'#22
|
||||||
+'FullLenLabel'#22'AnchorSideLeft.Control'#7#22'MarkupWordFullCheckBox'#19'An'
|
+'MarkupWordFullLenLabel'#22'AnchorSideLeft.Control'#7#22'MarkupWordFullCheck'
|
||||||
+'chorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#22'MarkupWord'
|
+'Box'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#22
|
||||||
+'FullCheckBox'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Cont'
|
+'MarkupWordFullCheckBox'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSide'
|
||||||
+'rol'#7#21'MarkupWordFullLenSpin'#4'Left'#3#239#0#6'Height'#2#18#3'Top'#3#2#1
|
+'Right.Control'#7#21'MarkupWordFullLenSpin'#4'Left'#3#230#0#6'Height'#2#18#3
|
||||||
+#5'Width'#3#164#0#18'BorderSpacing.Left'#2'-'#17'BorderSpacing.Top'#2#6#7'Ca'
|
+'Top'#3#2#1#5'Width'#3#156#0#18'BorderSpacing.Left'#2'-'#17'BorderSpacing.To'
|
||||||
+'ption'#6#22'MarkupWordFullLenLabel'#11'ParentColor'#8#0#0#242#2#7#9'TCheckB'
|
+'p'#2#6#7'Caption'#6#22'MarkupWordFullLenLabel'#11'ParentColor'#8#0#0#242#2#7
|
||||||
+'ox AutoIdentifierCompletionCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'
|
+#9'TCheckBox AutoIdentifierCompletionCheckBox'#22'AnchorSideLeft.Control'#7#5
|
||||||
+#21'AnchorSideTop.Control'#7#5'Owner'#4'Left'#2#0#6'Height'#2#22#3'Top'#2#0#5
|
+'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#4'Left'#2#0#6'Height'#2#22#3'To'
|
||||||
+'Width'#3#252#0#7'Caption'#6' AutoIdentifierCompletionCheckBox'#8'TabOrder'#2
|
+'p'#2#0#5'Width'#3#245#0#7'Caption'#6' AutoIdentifierCompletionCheckBox'#8'T'
|
||||||
+#0#0#0#242#2#8#9'TCheckBox'#28'AutoRemoveEmptyMethodsOnSave'#22'AnchorSideLe'
|
+'abOrder'#2#0#0#0#242#2#8#9'TCheckBox'#28'AutoRemoveEmptyMethodsOnSave'#22'A'
|
||||||
+'ft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7' AutoIdentifierCompletio'
|
+'nchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7' AutoIdentifi'
|
||||||
+'nCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22
|
+'erCompletionCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'H'
|
||||||
+#3'Top'#2#28#5'Width'#3#255#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#28'Auto'
|
+'eight'#2#22#3'Top'#2#28#5'Width'#3#251#0#17'BorderSpacing.Top'#2#6#7'Captio'
|
||||||
+'RemoveEmptyMethodsOnSave'#8'TabOrder'#2#1#0#0#242#2#9#9'TCheckBox'#28'AutoT'
|
+'n'#6#28'AutoRemoveEmptyMethodsOnSave'#8'TabOrder'#2#1#0#0#242#2#9#9'TCheckB'
|
||||||
+'oolTipSymbToolsCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSid'
|
+'ox'#28'AutoToolTipSymbToolsCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'
|
||||||
+'eTop.Control'#7#28'AutoRemoveEmptyMethodsOnSave'#18'AnchorSideTop.Side'#7#9
|
+#21'AnchorSideTop.Control'#7#28'AutoRemoveEmptyMethodsOnSave'#18'AnchorSideT'
|
||||||
+'asrBottom'#4'Left'#2#0#6'Height'#2#22#3'Top'#2'8'#5'Width'#3#235#0#17'Borde'
|
+'op.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3'Top'#2'8'#5'Width'#3
|
||||||
+'rSpacing.Top'#2#6#7'Caption'#6#28'AutoToolTipSymbToolsCheckBox'#8'TabOrder'
|
+#227#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#28'AutoToolTipSymbToolsCheckBo'
|
||||||
+#2#2#0#0#242#2#10#9'TCheckBox'#26'AutoCodeParametersCheckBox'#22'AnchorSideL'
|
+'x'#8'TabOrder'#2#2#0#0#242#2#10#9'TCheckBox'#25'AutoCompleteBlockCheckBox'
|
||||||
+'eft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#28'AutoToolTipSymbTools'
|
+#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#28'AutoTo'
|
||||||
+'CheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3
|
+'olTipSymbToolsCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6
|
||||||
+'Top'#2'T'#5'Width'#3#226#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#26'AutoCo'
|
+'Height'#2#22#3'Top'#2'T'#5'Width'#3#213#0#17'BorderSpacing.Top'#2#6#7'Capti'
|
||||||
+'deParametersCheckBox'#7'Enabled'#8#8'TabOrder'#2#3#0#0#242#2#11#9'TCheckBox'
|
+'on'#6#25'AutoCompleteBlockCheckBox'#8'TabOrder'#2#3#0#0#242#2#11#9'TCheckBo'
|
||||||
+#27'AutoToolTipExprEvalCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'An'
|
+'x'#27'AutoToolTipExprEvalCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21
|
||||||
+'chorSideTop.Control'#7#26'AutoCodeParametersCheckBox'#18'AnchorSideTop.Side'
|
+'AnchorSideTop.Control'#7#25'AutoCompleteBlockCheckBox'#18'AnchorSideTop.Sid'
|
||||||
+#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3'Top'#2'p'#5'Width'#3#222#0#17'B'
|
+'e'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3'Top'#2'p'#5'Width'#3#213#0#17
|
||||||
+'orderSpacing.Top'#2#6#7'Caption'#6#27'AutoToolTipExprEvalCheckBox'#8'TabOrd'
|
+'BorderSpacing.Top'#2#6#7'Caption'#6#27'AutoToolTipExprEvalCheckBox'#8'TabOr'
|
||||||
+'er'#2#4#0#0#242#2#12#9'TTrackBar'#17'AutoDelayTrackBar'#22'AnchorSideLeft.C'
|
+'der'#2#4#0#0#242#2#12#9'TTrackBar'#17'AutoDelayTrackBar'#22'AnchorSideLeft.'
|
||||||
+'ontrol'#7#5'Owner'#21'AnchorSideTop.Control'#7#27'AutoToolTipExprEvalCheckB'
|
+'Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#27'AutoToolTipExprEvalCheck'
|
||||||
+'ox'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'O'
|
+'Box'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5
|
||||||
+'wner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'('#3
|
+'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'('#3
|
||||||
+'Top'#3#140#0#5'Width'#3#236#1#9'Frequency'#3#250#0#3'Max'#3#160#15#3'Min'#3
|
+'Top'#3#140#0#5'Width'#3#236#1#9'Frequency'#3#250#0#3'Max'#3#160#15#3'Min'#3
|
||||||
+#244#1#8'Position'#3#244#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17
|
+#244#1#8'Position'#3#244#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17
|
||||||
,'BorderSpacing.Top'#2#6#8'TabOrder'#2#5#0#0#242#2#13#9'TTrackBar'#22'MarkupW'
|
,'BorderSpacing.Top'#2#6#8'TabOrder'#2#5#0#0#242#2#13#9'TTrackBar'#22'MarkupW'
|
||||||
@ -75,24 +75,24 @@ LazarusResources.Add('TEditorCodetoolsOptionsFrame','FORMDATA',[
|
|||||||
+#9'TCheckBox'#22'MarkupWordFullCheckBox'#22'AnchorSideLeft.Control'#7#5'Owne'
|
+#9'TCheckBox'#22'MarkupWordFullCheckBox'#22'AnchorSideLeft.Control'#7#5'Owne'
|
||||||
+'r'#21'AnchorSideTop.Control'#7#25'MarkupWordNoTimerCheckBox'#18'AnchorSideT'
|
+'r'#21'AnchorSideTop.Control'#7#25'MarkupWordNoTimerCheckBox'#18'AnchorSideT'
|
||||||
+'op.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3'Top'#3#0#1#5'Width'#3
|
+'op.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3'Top'#3#0#1#5'Width'#3
|
||||||
+#194#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#22'MarkupWordFullCheckBox'#8'T'
|
+#185#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#22'MarkupWordFullCheckBox'#8'T'
|
||||||
+'abOrder'#2#7#0#0#242#2#15#9'TCheckBox'#19'MarkupWordNoKeyword'#22'AnchorSid'
|
+'abOrder'#2#7#0#0#242#2#15#9'TCheckBox'#19'MarkupWordNoKeyword'#22'AnchorSid'
|
||||||
+'eLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#22'MarkupWordFullChec'
|
+'eLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#22'MarkupWordFullChec'
|
||||||
+'kBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3'To'
|
+'kBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#22#3'To'
|
||||||
+'p'#3#28#1#5'Width'#3#180#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#19'Markup'
|
+'p'#3#28#1#5'Width'#3#172#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#19'Markup'
|
||||||
+'WordNoKeyword'#8'TabOrder'#2#8#0#0#242#2#16#9'TSpinEdit'#21'MarkupWordFullL'
|
+'WordNoKeyword'#8'TabOrder'#2#8#0#0#242#2#16#9'TSpinEdit'#21'MarkupWordFullL'
|
||||||
+'enSpin'#22'AnchorSideLeft.Control'#7#22'MarkupWordFullLenLabel'#19'AnchorSi'
|
+'enSpin'#22'AnchorSideLeft.Control'#7#22'MarkupWordFullLenLabel'#19'AnchorSi'
|
||||||
+'deLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#22'MarkupWordFullLe'
|
+'deLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#22'MarkupWordFullLe'
|
||||||
+'nLabel'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7
|
+'nLabel'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7
|
||||||
+#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#153#1#6'Height'#2
|
+#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#136#1#6'Height'#2
|
||||||
+#27#3'Top'#3#254#0#5'Width'#2'0'#8'AutoSize'#9#18'BorderSpacing.Left'#2#6#17
|
+#27#3'Top'#3#254#0#5'Width'#2'0'#18'BorderSpacing.Left'#2#6#17'BorderSpacing'
|
||||||
+'BorderSpacing.Top'#2#6#8'TabOrder'#2#9#0#0#242#2#17#9'TCheckBox'#25'MarkupW'
|
+'.Top'#2#6#8'TabOrder'#2#9#0#0#242#2#17#9'TCheckBox'#25'MarkupWordNoTimerChe'
|
||||||
+'ordNoTimerCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.'
|
+'ckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#14
|
||||||
+'Control'#7#14'AutoDelayLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'
|
+'AutoDelayLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'
|
||||||
+#2#0#6'Height'#2#22#3'Top'#3#228#0#5'Width'#3#227#0#17'BorderSpacing.Top'#2#6
|
+#2#22#3'Top'#3#228#0#5'Width'#3#219#0#17'BorderSpacing.Top'#2#6#7'Caption'#6
|
||||||
+#7'Caption'#6#25'MarkupWordNoTimerCheckBox'#8'TabOrder'#2#10#0#0#242#2#18#9
|
+#25'MarkupWordNoTimerCheckBox'#8'TabOrder'#2#10#0#0#242#2#18#9'TCheckBox'#14
|
||||||
+'TCheckBox'#14'MarkupWordTrim'#22'AnchorSideLeft.Control'#7#22'MarkupWordFul'
|
+'MarkupWordTrim'#22'AnchorSideLeft.Control'#7#22'MarkupWordFullLenLabel'#21
|
||||||
+'lLenLabel'#21'AnchorSideTop.Control'#7#19'MarkupWordNoKeyword'#4'Left'#3#239
|
+'AnchorSideTop.Control'#7#19'MarkupWordNoKeyword'#4'Left'#3#230#0#6'Height'#2
|
||||||
+#0#6'Height'#2#22#3'Top'#3#28#1#5'Width'#3#134#0#7'Caption'#6#14'MarkupWordT'
|
+#22#3'Top'#3#28#1#5'Width'#3#128#0#7'Caption'#6#14'MarkupWordTrim'#8'TabOrde'
|
||||||
+'rim'#8'TabOrder'#2#11#0#0#0
|
+'r'#2#11#0#0#0
|
||||||
]);
|
]);
|
||||||
|
@ -32,7 +32,7 @@ type
|
|||||||
{ TEditorCodetoolsOptionsFrame }
|
{ TEditorCodetoolsOptionsFrame }
|
||||||
|
|
||||||
TEditorCodetoolsOptionsFrame = class(TAbstractIDEOptionsEditor)
|
TEditorCodetoolsOptionsFrame = class(TAbstractIDEOptionsEditor)
|
||||||
AutoCodeParametersCheckBox: TCheckBox;
|
AutoCompleteBlockCheckBox: TCheckBox;
|
||||||
AutoDelayLabel: TLabel;
|
AutoDelayLabel: TLabel;
|
||||||
AutoDelayMaxLabel: TLabel;
|
AutoDelayMaxLabel: TLabel;
|
||||||
AutoDelayMinLabel: TLabel;
|
AutoDelayMinLabel: TLabel;
|
||||||
@ -73,7 +73,7 @@ end;
|
|||||||
procedure TEditorCodetoolsOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
procedure TEditorCodetoolsOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
||||||
begin
|
begin
|
||||||
AutoIdentifierCompletionCheckBox.Caption := dlgEdIdComlet;
|
AutoIdentifierCompletionCheckBox.Caption := dlgEdIdComlet;
|
||||||
AutoCodeParametersCheckBox.Caption := dlgEdCodeParams;
|
AutoCompleteBlockCheckBox.Caption := dlgEdCompleteBlocks;
|
||||||
AutoToolTipExprEvalCheckBox.Caption := dlgTooltipEval;
|
AutoToolTipExprEvalCheckBox.Caption := dlgTooltipEval;
|
||||||
AutoToolTipSymbToolsCheckBox.Caption := dlgTooltipTools;
|
AutoToolTipSymbToolsCheckBox.Caption := dlgTooltipTools;
|
||||||
AutoRemoveEmptyMethodsOnSave.Caption := dlgAutoRemoveEmptyMethods;
|
AutoRemoveEmptyMethodsOnSave.Caption := dlgAutoRemoveEmptyMethods;
|
||||||
@ -97,7 +97,7 @@ begin
|
|||||||
with AOptions as TEditorOptions do
|
with AOptions as TEditorOptions do
|
||||||
begin
|
begin
|
||||||
AutoIdentifierCompletionCheckBox.Checked := AutoIdentifierCompletion;
|
AutoIdentifierCompletionCheckBox.Checked := AutoIdentifierCompletion;
|
||||||
AutoCodeParametersCheckBox.Checked := AutoCodeParameters;
|
AutoCompleteBlockCheckBox.Checked := AutoBlockCompletion;
|
||||||
AutoToolTipExprEvalCheckBox.Checked := AutoToolTipExprEval;
|
AutoToolTipExprEvalCheckBox.Checked := AutoToolTipExprEval;
|
||||||
AutoToolTipSymbToolsCheckBox.Checked := AutoToolTipSymbTools;
|
AutoToolTipSymbToolsCheckBox.Checked := AutoToolTipSymbTools;
|
||||||
AutoDelayTrackBar.Position := AutoDelayInMSec;
|
AutoDelayTrackBar.Position := AutoDelayInMSec;
|
||||||
@ -116,7 +116,7 @@ begin
|
|||||||
with AOptions as TEditorOptions do
|
with AOptions as TEditorOptions do
|
||||||
begin
|
begin
|
||||||
AutoIdentifierCompletion := AutoIdentifierCompletionCheckBox.Checked;
|
AutoIdentifierCompletion := AutoIdentifierCompletionCheckBox.Checked;
|
||||||
AutoCodeParameters := AutoCodeParametersCheckBox.Checked;
|
AutoBlockCompletion := AutoCompleteBlockCheckBox.Checked;
|
||||||
AutoToolTipExprEval := AutoToolTipExprEvalCheckBox.Checked;
|
AutoToolTipExprEval := AutoToolTipExprEvalCheckBox.Checked;
|
||||||
AutoToolTipSymbTools := AutoToolTipSymbToolsCheckBox.Checked;
|
AutoToolTipSymbTools := AutoToolTipSymbToolsCheckBox.Checked;
|
||||||
AutoDelayInMSec := AutoDelayTrackBar.Position;
|
AutoDelayInMSec := AutoDelayTrackBar.Position;
|
||||||
|
@ -1222,7 +1222,7 @@ resourcestring
|
|||||||
dlgEdOff = 'Off';
|
dlgEdOff = 'Off';
|
||||||
dlgEdInvert = 'Invert';
|
dlgEdInvert = 'Invert';
|
||||||
dlgEdIdComlet = 'Identifier completion';
|
dlgEdIdComlet = 'Identifier completion';
|
||||||
dlgEdCodeParams = 'Code parameters';
|
dlgEdCompleteBlocks = 'Complete blocks';
|
||||||
dlgTooltipEval = 'Tooltip expression evaluation';
|
dlgTooltipEval = 'Tooltip expression evaluation';
|
||||||
dlgTooltipTools = 'Tooltip symbol Tools';
|
dlgTooltipTools = 'Tooltip symbol Tools';
|
||||||
dlgMarkupWordFull = 'Current Word match word boundaries';
|
dlgMarkupWordFull = 'Current Word match word boundaries';
|
||||||
|
@ -1550,10 +1550,8 @@ begin
|
|||||||
if AutoCompleteChar(aChar,AddChar,acoLineBreak) then ;
|
if AutoCompleteChar(aChar,AddChar,acoLineBreak) then ;
|
||||||
//DebugLn(['TSourceEditor.ProcessCommand ecLineBreak AddChar=',AddChar]);
|
//DebugLn(['TSourceEditor.ProcessCommand ecLineBreak AddChar=',AddChar]);
|
||||||
if not AddChar then Command:=ecNone;
|
if not AddChar then Command:=ecNone;
|
||||||
{$IFDEF EnableCompleteBlock}
|
|
||||||
if EditorOpts.AutoBlockCompletion then
|
if EditorOpts.AutoBlockCompletion then
|
||||||
AutoCompleteBlock;
|
AutoCompleteBlock;
|
||||||
{$ENDIF}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ecPrevBookmark: // Note: book mark commands lower than ecUserFirst must be handled here
|
ecPrevBookmark: // Note: book mark commands lower than ecUserFirst must be handled here
|
||||||
@ -2342,10 +2340,21 @@ var
|
|||||||
begin
|
begin
|
||||||
if not LazarusIDE.SaveSourceEditorChangesToCodeCache(PageIndex) then exit;
|
if not LazarusIDE.SaveSourceEditorChangesToCodeCache(PageIndex) then exit;
|
||||||
XY:=FEditor.LogicalCaretXY;
|
XY:=FEditor.LogicalCaretXY;
|
||||||
if not CodeToolBoss.CompleteBlock(CodeBuffer,XY.X,XY.Y,
|
FEditor.BeginUndoBlock;
|
||||||
NewCode,NewX,NewY,NewTopLine) then exit;
|
try
|
||||||
if (NewCode<>CodeBuffer) or (NewX<>XY.X) or (NewY<>XY.Y) or (NewTopLine>0)
|
if not CodeToolBoss.CompleteBlock(CodeBuffer,XY.X,XY.Y,
|
||||||
then ;
|
NewCode,NewX,NewY,NewTopLine) then exit;
|
||||||
|
XY:=FEditor.LogicalCaretXY;
|
||||||
|
//DebugLn(['TSourceEditor.AutoCompleteBlock XY=',dbgs(XY),' NewX=',NewX,' NewY=',NewY]);
|
||||||
|
if (NewCode<>CodeBuffer) or (NewX<>XY.X) or (NewY<>XY.Y) or (NewTopLine>0)
|
||||||
|
then begin
|
||||||
|
XY.X:=NewX;
|
||||||
|
XY.Y:=NewY;
|
||||||
|
FEditor.LogicalCaretXY:=XY;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FEditor.EndUndoBlock;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TSourceEditor.CreateEditor(AOwner: TComponent; AParent: TWinControl);
|
Procedure TSourceEditor.CreateEditor(AOwner: TComponent; AParent: TWinControl);
|
||||||
|
Loading…
Reference in New Issue
Block a user