improve curly brace auto-closing and support CTRL to skip auto closing, clsoe #342

This commit is contained in:
Basile Burg 2018-07-03 13:44:36 +02:00
parent e4fd4d7672
commit ef2ca016ff
1 changed files with 50 additions and 38 deletions

View File

@ -1591,6 +1591,7 @@ var
beg: string = '';
numTabs: integer = 0;
numSpac: integer = 0;
numSkip: integer = 0;
begin
if not fIsDSource and not alwaysAdvancedFeatures then
exit;
@ -1601,10 +1602,18 @@ begin
if i < 0 then
break;
beg := Lines[i];
if (Pos('{', beg) = 0) then
i -= 1
if (Pos('}', beg) <> 0) then
begin
numSkip += 1;
end
else if (Pos('{', beg) <> 0) then
begin
numSkip -= 1;
end;
if numSkip < 0 then
break
else
break;
i -= 1;
end;
for i:= 1 to beg.length do
@ -3337,6 +3346,8 @@ begin
begin
fCanDscan:=true;
line := LineText;
if [ssCtrl] <> Shift then
begin
case fAutoCloseCurlyBrace of
autoCloseOnNewLineAlways: if (CaretX > 1) and (line[LogicalCaretXY.X - 1] = '{') then
begin
@ -3350,7 +3361,6 @@ begin
curlyBraceCloseAndIndent;
end;
end;
if (fAutoCloseCurlyBrace = autoCloseOnNewLineLexically) or
fSmartDdocNewline then
begin
@ -3386,6 +3396,8 @@ begin
end;
end;
end;
end
else shift := [];
end;
end;
inherited;