mirror of https://gitlab.com/basile.b/dexed.git
refact, extract method to lex editor lines
This commit is contained in:
parent
ddccb37c04
commit
6a3a49f1f2
|
@ -300,6 +300,7 @@ type
|
||||||
procedure removeGutterIcon(line: integer; value: TGutterIcon);
|
procedure removeGutterIcon(line: integer; value: TGutterIcon);
|
||||||
procedure patchClipboardIndentation;
|
procedure patchClipboardIndentation;
|
||||||
procedure gotoWordEdge(right: boolean);
|
procedure gotoWordEdge(right: boolean);
|
||||||
|
procedure lexWholeText(opts: TLexOptions = []);
|
||||||
//
|
//
|
||||||
procedure gutterClick(Sender: TObject; X, Y, Line: integer; mark: TSynEditMark);
|
procedure gutterClick(Sender: TObject; X, Y, Line: integer; mark: TSynEditMark);
|
||||||
procedure removeDebugTimeMarks;
|
procedure removeDebugTimeMarks;
|
||||||
|
@ -1489,6 +1490,12 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TDexedMemo.lexWholeText(opts: TLexOptions = []);
|
||||||
|
begin
|
||||||
|
fLexToks.Clear;
|
||||||
|
lex(lines.Text, fLexToks, nil, opts);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TDexedMemo.DoOnProcessCommand(var Command: TSynEditorCommand;
|
procedure TDexedMemo.DoOnProcessCommand(var Command: TSynEditorCommand;
|
||||||
var AChar: TUTF8Char; Data: pointer);
|
var AChar: TUTF8Char; Data: pointer);
|
||||||
begin
|
begin
|
||||||
|
@ -1938,8 +1945,7 @@ var
|
||||||
begin
|
begin
|
||||||
if not fIsDSource and not alwaysAdvancedFeatures then
|
if not fIsDSource and not alwaysAdvancedFeatures then
|
||||||
exit;
|
exit;
|
||||||
fLexToks.Clear;
|
lexWholeText([lxoNoComments]);
|
||||||
lex(lines.Text, fLexToks, nil, [lxoNoComments]);
|
|
||||||
cp := CaretXY;
|
cp := CaretXY;
|
||||||
if SelAvail then
|
if SelAvail then
|
||||||
begin
|
begin
|
||||||
|
@ -2270,8 +2276,7 @@ var
|
||||||
begin
|
begin
|
||||||
if not fIsDSource and not alwaysAdvancedFeatures then
|
if not fIsDSource and not alwaysAdvancedFeatures then
|
||||||
exit;
|
exit;
|
||||||
fLexToks.Clear;
|
lexWholeText([lxoNoComments, lxoNoWhites]);
|
||||||
lex(Lines.Text, fLexToks, nil, [lxoNoComments, lxoNoWhites]);
|
|
||||||
for i:=0 to fLexToks.Count-2 do
|
for i:=0 to fLexToks.Count-2 do
|
||||||
begin
|
begin
|
||||||
tk0 := fLexToks[i];
|
tk0 := fLexToks[i];
|
||||||
|
@ -3539,8 +3544,7 @@ begin
|
||||||
if ((LogicalCaretXY.X - 1 >= line.length) or
|
if ((LogicalCaretXY.X - 1 >= line.length) or
|
||||||
isBlank(line[LogicalCaretXY.X .. line.length])) then
|
isBlank(line[LogicalCaretXY.X .. line.length])) then
|
||||||
begin
|
begin
|
||||||
fLexToks.Clear;
|
lexWholeText();
|
||||||
lex(lines.Text, fLexToks);
|
|
||||||
lxd := true;
|
lxd := true;
|
||||||
ccb := lexCanCloseBrace;
|
ccb := lexCanCloseBrace;
|
||||||
if ccb <> braceCloseInvalid then
|
if ccb <> braceCloseInvalid then
|
||||||
|
@ -3553,10 +3557,7 @@ begin
|
||||||
if (fSmartDdocNewline) then
|
if (fSmartDdocNewline) then
|
||||||
begin
|
begin
|
||||||
if not lxd then
|
if not lxd then
|
||||||
begin
|
lexWholeText();
|
||||||
fLexToks.Clear;
|
|
||||||
lex(lines.Text, fLexToks);
|
|
||||||
end;
|
|
||||||
ddc := canInsertLeadingDdocSymbol;
|
ddc := canInsertLeadingDdocSymbol;
|
||||||
if ddc in ['*', '+'] then
|
if ddc in ['*', '+'] then
|
||||||
begin
|
begin
|
||||||
|
@ -3612,13 +3613,6 @@ end;
|
||||||
procedure TDexedMemo.UTF8KeyPress(var Key: TUTF8Char);
|
procedure TDexedMemo.UTF8KeyPress(var Key: TUTF8Char);
|
||||||
var
|
var
|
||||||
c: AnsiChar;
|
c: AnsiChar;
|
||||||
|
|
||||||
procedure reLex();
|
|
||||||
begin
|
|
||||||
fLexToks.Clear;
|
|
||||||
lex(Lines.Text, fLexToks);
|
|
||||||
end;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
c := Key[1];
|
c := Key[1];
|
||||||
|
|
||||||
|
@ -3626,13 +3620,13 @@ begin
|
||||||
// tokens following the cursor are wrong after the "inherited" call.
|
// tokens following the cursor are wrong after the "inherited" call.
|
||||||
case c of
|
case c of
|
||||||
#39: if autoCloseSingleQuote in fAutoClosedPairs then
|
#39: if autoCloseSingleQuote in fAutoClosedPairs then
|
||||||
reLex();
|
lexWholeText();
|
||||||
'"': if autoCloseDoubleQuote in fAutoClosedPairs then
|
'"': if autoCloseDoubleQuote in fAutoClosedPairs then
|
||||||
reLex();
|
lexWholeText();
|
||||||
'`': if autoCloseBackTick in fAutoClosedPairs then
|
'`': if autoCloseBackTick in fAutoClosedPairs then
|
||||||
reLex();
|
lexWholeText();
|
||||||
'[': if autoCloseSquareBracket in fAutoClosedPairs then
|
'[': if autoCloseSquareBracket in fAutoClosedPairs then
|
||||||
reLex();
|
lexWholeText();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
inherited;
|
inherited;
|
||||||
|
@ -3657,8 +3651,7 @@ begin
|
||||||
'{': if (fAutoCloseCurlyBrace = autoCloseLexically) and
|
'{': if (fAutoCloseCurlyBrace = autoCloseLexically) and
|
||||||
(GetKeyShiftState <> [ssShift]) then
|
(GetKeyShiftState <> [ssShift]) then
|
||||||
begin
|
begin
|
||||||
fLexToks.Clear;
|
lexWholeText();
|
||||||
lex(lines.Text, fLexToks);
|
|
||||||
case lexCanCloseBrace of
|
case lexCanCloseBrace of
|
||||||
braceClosePositive: curlyBraceCloseAndIndent;
|
braceClosePositive: curlyBraceCloseAndIndent;
|
||||||
braceCloseLessEven: curlyBraceCloseAndIndent(false);
|
braceCloseLessEven: curlyBraceCloseAndIndent(false);
|
||||||
|
|
Loading…
Reference in New Issue