editor, call tips, decrease level on open paren deletion

This commit is contained in:
Basile Burg 2016-04-16 17:36:22 +02:00
parent 8261d07ca4
commit db17fb68a8
1 changed files with 47 additions and 41 deletions

View File

@ -151,7 +151,6 @@ type
procedure loadCache; procedure loadCache;
class procedure cleanCache; static; class procedure cleanCache; static;
procedure setDefaultFontSize(aValue: Integer); procedure setDefaultFontSize(aValue: Integer);
procedure getCallTips;
procedure DDocTimerEvent(sender: TObject); procedure DDocTimerEvent(sender: TObject);
procedure AutoDotTimerEvent(sender: TObject); procedure AutoDotTimerEvent(sender: TObject);
procedure InitHintWins; procedure InitHintWins;
@ -197,8 +196,9 @@ type
procedure saveTempFile; procedure saveTempFile;
// //
procedure invertVersionAllNone; procedure invertVersionAllNone;
procedure showCallTips; procedure showCallTips(findOpenParen: boolean = true);
procedure hideCallTips; procedure hideCallTips;
procedure decCallTipsLvl;
procedure showDDocs; procedure showDDocs;
procedure hideDDocs; procedure hideDDocs;
// //
@ -924,7 +924,7 @@ begin
begin begin
hideCallTips; hideCallTips;
hideDDocs; hideDDocs;
showCallTips; showCallTips(true);
end; end;
ecCurlyBraceClose: ecCurlyBraceClose:
curlyBraceCloseAndIndent(self); curlyBraceCloseAndIndent(self);
@ -1026,7 +1026,7 @@ begin
end; end;
end; end;
procedure TCESynMemo.showCallTips; procedure TCESynMemo.showCallTips(findOpenParen: boolean = true);
var var
str: string; str: string;
i: integer; i: integer;
@ -1035,7 +1035,7 @@ begin
fCallTipStrings.Clear; fCallTipStrings.Clear;
str := LineText[1..CaretX]; str := LineText[1..CaretX];
i := CaretX; i := CaretX;
while true do if findOpenParen then while true do
begin begin
if i = 1 then if i = 1 then
break; break;
@ -1090,6 +1090,21 @@ begin
fCallTipWin.Hide; fCallTipWin.Hide;
end; end;
procedure TCESynMemo.decCallTipsLvl;
var
i: integer;
begin
{$PUSH}{$HINTS OFF}{$WARNINGS OFF}
i := integer(pointer(fCallTipStrings.Objects[0]));
{$POP}
for i in [0..i-1] do
fCallTipStrings.Delete(0);
if fCallTipStrings.Count = 0 then
hideCallTips
else
showCallTips(fCallTipStrings.Text);
end;
procedure TCESynMemo.showDDocs; procedure TCESynMemo.showDDocs;
var var
str: string; str: string;
@ -1112,11 +1127,6 @@ begin
fDDocWin.Hide; fDDocWin.Hide;
end; end;
procedure TCESynMemo.getCallTips();
begin
showCallTips;
end;
procedure TCESynMemo.setDDocDelay(aValue: Integer); procedure TCESynMemo.setDDocDelay(aValue: Integer);
begin begin
fDDocDelay:=aValue; fDDocDelay:=aValue;
@ -1428,8 +1438,14 @@ end;
{$REGION user input ------------------------------------------------------------} {$REGION user input ------------------------------------------------------------}
procedure TCESynMemo.KeyDown(var Key: Word; Shift: TShiftState); procedure TCESynMemo.KeyDown(var Key: Word; Shift: TShiftState);
var
i: integer;
begin begin
if Key = VK_RETURN then case Key of
VK_BACK: if fCallTipWin.Visible and (CaretX > 1)
and (LineText[LogicalCaretXY.X-1] = '(') then
decCallTipsLvl;
VK_RETURN:
begin begin
if (fAutoCloseCurlyBrace in [autoCloseOnNewLineEof .. autoCloseOnNewLineLexically]) then if (fAutoCloseCurlyBrace in [autoCloseOnNewLineEof .. autoCloseOnNewLineLexically]) then
case fAutoCloseCurlyBrace of case fAutoCloseCurlyBrace of
@ -1456,6 +1472,7 @@ begin
end; end;
end; end;
end; end;
end;
inherited; inherited;
highlightCurrentIdentifier; highlightCurrentIdentifier;
if fCompletion.IsActive then if fCompletion.IsActive then
@ -1499,19 +1516,8 @@ begin
c := Key; c := Key;
inherited; inherited;
case c of case c of
'(': getCallTips; '(': showCallTips(false);
')': if fCallTipWin.Visible then ')': if fCallTipWin.Visible then decCallTipsLvl;
begin
{$PUSH}{$HINTS OFF}{$WARNINGS OFF}
i := integer(pointer(fCallTipStrings.Objects[0]));
{$POP}
for i in [0..i-1] do
fCallTipStrings.Delete(0);
if fCallTipStrings.Count = 0 then
hideCallTips
else
showCallTips(fCallTipStrings.Text);
end;
'{': '{':
case fAutoCloseCurlyBrace of case fAutoCloseCurlyBrace of
autoCloseAlways: autoCloseAlways: