fix, dfmt commander, invalid props could be typed, leading to AV

This commit is contained in:
Basile Burg 2015-12-21 05:57:52 +01:00
parent d718f35304
commit 447d6e9e3a
2 changed files with 36 additions and 11 deletions

View File

@ -26,7 +26,7 @@ inherited CEDfmtWidget: TCEDfmtWidget
Width = 442
Align = alClient
BorderSpacing.Around = 4
CheckboxForBoolean = False
CheckboxForBoolean = True
DefaultValueFont.Color = clWindowText
Filter = [tkInteger, tkChar, tkEnumeration, tkFloat, tkSet, tkMethod, tkSString, tkLString, tkAString, tkWString, tkVariant, tkArray, tkRecord, tkInterface, tkClass, tkObject, tkWChar, tkBool, tkInt64, tkQWord, tkDynArray, tkInterfaceRaw, tkProcVar, tkUString, tkUChar, tkHelper]
Indent = 10

View File

@ -12,7 +12,7 @@ uses
type
DfmtEol = (cr, lf, crlf);
DfmtIdentstyle = (tab, space);
DfmtIndentstyle = (tab, space);
DfmtBraceStyle = (allman, otbs, stroustrup);
// wraps dfmt options to build the command line with ease
@ -20,7 +20,7 @@ type
TCEDmtWrapper = class(TWritableLfmTextComponent)
private
fEol: DfmtEol;
fTabStyle: DfmtIdentstyle;
fTabStyle: DfmtIndentstyle;
fIndentSize: integer;
fTabWidth: integer;
fHardLLen: integer;
@ -34,14 +34,17 @@ type
procedure setHardLLen(value: integer);
procedure setTabWidth(value: integer);
procedure setIndentSize(value: integer);
procedure setEol(value: DfmtEol);
procedure setBraceStyle(value: DfmtBraceStyle);
procedure setIndentStyle(value: DfmtIndentstyle);
published
property endOfline: DfmtEol read fEol write fEol default lf;
property identationStyle: DfmtIdentstyle read fTabStyle write fTabStyle default space;
property identSize: integer read fIndentSize write fIndentSize default 4;
property endOfline: DfmtEol read fEol write setEol default lf;
property indentationStyle: DfmtIndentstyle read fTabStyle write setIndentStyle default space;
property indentSize: integer read fIndentSize write fIndentSize default 4;
property tabWidth: integer read fTabWidth write fTabWidth default 8;
property hardLineLen: integer read fHardLLen write fHardLLen default 120;
property softLineLen: integer read fSoftLLen write fSoftLLen default 80;
property braceStyle: DfmtBraceStyle read fBraceStyle write fBraceStyle default allman;
property braceStyle: DfmtBraceStyle read fBraceStyle write setBraceStyle default allman;
property spaceAfterCast: boolean read fSpaceCast write fSpaceCast default true;
property spaceAfterImport: boolean read fSpaceSelImp write fSpaceSelImp default true;
property splitOpAtPrevLine: boolean read fSplitOp write fSplitOp default true;
@ -116,7 +119,7 @@ constructor TCEDmtWrapper.create(AOwner: TComponent);
begin
inherited;
fEol := lf;
fTabStyle := DfmtIdentstyle.space;
fTabStyle := DfmtIndentstyle.space;
fIndentSize := 4;
fTabWidth := 8;
fHardLLen := 120;
@ -172,6 +175,28 @@ begin
value := 8;
fIndentSize := value;
end;
procedure TCEDmtWrapper.setEol(value: DfmtEol);
begin
if not (value in [DfmtEol.cr, DfmtEol.lf, DfmtEol.crlf]) then
value := DfmtEol.lf;
fEol:=value;
end;
procedure TCEDmtWrapper.setBraceStyle(value: DfmtBraceStyle);
begin
if not (value in [DfmtBraceStyle.allman, DfmtBraceStyle.otbs,
DfmtBraceStyle.stroustrup]) then
value := DfmtBraceStyle.allman;
fBraceStyle:=value;
end;
procedure TCEDmtWrapper.setIndentStyle(value: DfmtIndentstyle);
begin
if not (value in [DfmtIndentstyle.space, DfmtIndentstyle.tab]) then
value := DfmtIndentstyle.space;
fTabStyle:=value;
end;
{$ENDREGION}
{$REGION ICEMultiDocObserver ---------------------------------------------------}
@ -204,14 +229,14 @@ procedure TCEDmtWrapper.getParameters(str: TStrings);
const
eol: array[DfmtEol] of string = ('cr', 'lf', 'crlf');
falsetrue: array[boolean] of string = ('false', 'true');
idtstyle: array[DfmtIdentstyle] of string = ('tab', 'space');
idtstyle: array[DfmtIndentstyle] of string = ('tab', 'space');
brc: array[DfmtBraceStyle] of string = ('allman', 'otbs', 'stroustrup');
begin
str.Add('--end_of_line=' + eol[endOfline]);
str.Add('--max_line_length=' + intToStr(hardLineLen));
str.Add('--soft_max_line_length=' + intToStr(softLineLen));
str.Add('--indent_size=' + intToStr(identSize));
str.Add('--indent_style=' + idtstyle[identationStyle]);
str.Add('--indent_size=' + intToStr(indentSize));
str.Add('--indent_style=' + idtstyle[indentationStyle]);
str.Add('--tab_width=' + intToStr(tabWidth));
str.Add('--brace_style=' + brc[braceStyle]);
str.Add('--split_operator_at_line_end=' + falsetrue[splitOpAtPrevLine]);