Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
Ftt_Common
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Ftt_Common
Commits
a5970404
Commit
a5970404
authored
Jun 29, 2026
by
段廷瑞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pref: sql格式化缩进优化
parent
a73cf70d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
4 deletions
+39
-4
wTextFormatter.cs
Tools/UI/wTextFormatter.cs
+39
-4
No files found.
Tools/UI/wTextFormatter.cs
View file @
a5970404
...
...
@@ -849,6 +849,7 @@ namespace Tools.UI
TokenType
prevType
=
TokenType
.
Whitespace
;
string
prevValue
=
""
;
ClauseCtx
ctx
=
ClauseCtx
.
None
;
var
caseIndentStack
=
new
System
.
Collections
.
Generic
.
Stack
<
int
>();
// CASE 缩进栈,用于 END 对齐
// 局部函数:计算内容缩进 = clauseBase + IndentSize * (局部嵌套层数 + 1)
int
ContentIndent
()
=>
clauseBase
+
IndentSize
*
(
parenDepth
-
clauseParenBase
+
1
);
...
...
@@ -942,11 +943,42 @@ namespace Tools.UI
continue
;
}
// ---- CASE: 块起始关键字,与同级字段缩进一致(非顶级关键字) ----
if
(
kw
==
"CASE"
)
{
// 嵌套CASE(已在 CASE 内部):与 THEN 同行,缩进比外层 CASE 深一级
if
(
ctx
==
ClauseCtx
.
CaseWhen
)
{
int
nestedIndent
=
(
caseIndentStack
.
Count
>
0
?
caseIndentStack
.
Peek
()
:
ContentIndent
())
+
IndentSize
;
if
(
NeedsLeadingSpace
(
prevType
))
sb
.
Append
(
' '
);
sb
.
Append
(
kw
);
sb
.
Append
(
' '
);
newline
=
false
;
caseIndentStack
.
Push
(
nestedIndent
);
}
else
{
if
(!
newline
)
{
sb
.
AppendLine
();
newline
=
true
;
}
int
caseIndent
=
ContentIndent
();
WriteIndent
(
sb
,
ref
newline
,
caseIndent
);
sb
.
Append
(
kw
);
sb
.
AppendLine
();
newline
=
true
;
caseIndentStack
.
Push
(
caseIndent
);
ctx
=
ClauseCtx
.
CaseWhen
;
}
prevType
=
TokenType
.
Keyword
;
prevValue
=
kw
;
continue
;
}
// ---- WHEN / ELSE / THEN / END: CASE 子句 ----
if
(
kw
==
"WHEN"
||
kw
==
"ELSE"
)
{
if
(!
newline
)
{
sb
.
AppendLine
();
newline
=
true
;
}
WriteIndent
(
sb
,
ref
newline
,
ContentIndent
());
int
caseBase
=
caseIndentStack
.
Count
>
0
?
caseIndentStack
.
Peek
()
:
ContentIndent
();
WriteIndent
(
sb
,
ref
newline
,
caseBase
+
IndentSize
);
sb
.
Append
(
kw
);
sb
.
Append
(
' '
);
newline
=
false
;
...
...
@@ -967,7 +999,9 @@ namespace Tools.UI
if
(
kw
==
"END"
)
{
if
(!
newline
)
{
sb
.
AppendLine
();
newline
=
true
;
}
WriteIndent
(
sb
,
ref
newline
,
clauseBase
);
// END 与对应的 CASE 保持对齐
int
caseIndent
=
caseIndentStack
.
Count
>
0
?
caseIndentStack
.
Pop
()
:
clauseBase
;
WriteIndent
(
sb
,
ref
newline
,
caseIndent
);
sb
.
Append
(
kw
);
sb
.
Append
(
' '
);
newline
=
false
;
...
...
@@ -1116,8 +1150,9 @@ namespace Tools.UI
continue
;
}
// ---- 非子句关键字(AS / IN / NOT / NULL / BY 等): 内联 ----
if
(
NeedsLeadingSpace
(
prevType
))
// ---- 非子句关键字(AS / IN / NOT / NULL / BY / CAST / COALESCE 等): 内联 ----
if
(
newline
)
{
WriteIndent
(
sb
,
ref
newline
,
ContentIndent
());
}
else
if
(
NeedsLeadingSpace
(
prevType
))
sb
.
Append
(
' '
);
sb
.
Append
(
kw
);
// 字符串前缀(N等)与紧随的字符串字面量之间不能有空格
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment