Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
fc59387a
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fc59387a
编写于
4月 22, 2016
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixes #5269: [json] "Format Code" folds braces into preceding comments.
上级
41ec572c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
58 addition
and
2 deletion
+58
-2
extensions/json/server/src/jsonFormatter.ts
extensions/json/server/src/jsonFormatter.ts
+3
-1
extensions/json/server/src/test/formatter.test.ts
extensions/json/server/src/test/formatter.test.ts
+27
-0
src/vs/languages/json/common/features/jsonFormatter.ts
src/vs/languages/json/common/features/jsonFormatter.ts
+2
-1
src/vs/languages/json/test/common/formatter.test.ts
src/vs/languages/json/test/common/formatter.test.ts
+26
-0
未找到文件。
extensions/json/server/src/jsonFormatter.ts
浏览文件 @
fc59387a
...
...
@@ -74,14 +74,16 @@ export function format(document: ITextDocument, range: Range, options: Formattin
let
firstTokenEnd
=
scanner
.
getTokenOffset
()
+
scanner
.
getTokenLength
()
+
rangeOffset
;
let
secondToken
=
scanNext
();
let
replaceContent
=
''
;
while
(
!
lineBreak
&&
(
secondToken
===
Json
.
SyntaxKind
.
LineCommentTrivia
||
secondToken
===
Json
.
SyntaxKind
.
BlockCommentTrivia
))
{
// comments on the same line: keep them on the same line, but ignore them otherwise
let
commentTokenStart
=
scanner
.
getTokenOffset
()
+
rangeOffset
;
addEdit
(
'
'
,
firstTokenEnd
,
commentTokenStart
);
firstTokenEnd
=
scanner
.
getTokenOffset
()
+
scanner
.
getTokenLength
()
+
rangeOffset
;
replaceContent
=
secondToken
===
Json
.
SyntaxKind
.
LineCommentTrivia
?
newLineAndIndent
()
:
''
;
secondToken
=
scanNext
();
}
let
replaceContent
=
''
;
if
(
secondToken
===
Json
.
SyntaxKind
.
CloseBraceToken
)
{
if
(
firstToken
!==
Json
.
SyntaxKind
.
OpenBraceToken
)
{
indentLevel
--
;
...
...
extensions/json/server/src/test/formatter.test.ts
浏览文件 @
fc59387a
...
...
@@ -240,6 +240,19 @@ suite('JSON Formatter', () => {
format
(
content
,
expected
);
});
test
(
'
single line comment on same line 2
'
,
()
=>
{
var
content
=
[
'
{ //comment
'
,
'
}
'
].
join
(
'
\n
'
);
var
expected
=
[
'
{ //comment
'
,
'
}
'
].
join
(
'
\n
'
);
format
(
content
,
expected
);
});
test
(
'
block comment on same line
'
,
()
=>
{
var
content
=
[
'
{ "a": {}, /*comment*/
'
,
...
...
@@ -295,6 +308,20 @@ suite('JSON Formatter', () => {
format
(
content
,
expected
);
});
test
(
'
multiple mixed comments on same line
'
,
()
=>
{
var
content
=
[
'
[ /*comment*/ /*comment*/ // comment
'
,
'
]
'
].
join
(
'
\n
'
);
var
expected
=
[
'
[ /*comment*/ /*comment*/ // comment
'
,
'
]
'
].
join
(
'
\n
'
);
format
(
content
,
expected
);
});
test
(
'
range
'
,
()
=>
{
var
content
=
[
...
...
src/vs/languages/json/common/features/jsonFormatter.ts
浏览文件 @
fc59387a
...
...
@@ -66,14 +66,15 @@ export function format(model: EditorCommon.IMirrorModel, range: EditorCommon.IRa
var
firstTokenEnd
=
model
.
getPositionFromOffset
(
scanner
.
getTokenOffset
()
+
scanner
.
getTokenLength
()
+
rangeOffset
);
var
secondToken
=
scanNext
();
let
replaceContent
=
''
;
while
(
!
lineBreak
&&
(
secondToken
===
Json
.
SyntaxKind
.
LineCommentTrivia
||
secondToken
===
Json
.
SyntaxKind
.
BlockCommentTrivia
))
{
// comments on the same line: keep them on the same line, but ignore them otherwise
var
commentTokenStart
=
model
.
getPositionFromOffset
(
scanner
.
getTokenOffset
()
+
rangeOffset
);
addEdit
(
'
'
,
{
startLineNumber
:
firstTokenEnd
.
lineNumber
,
startColumn
:
firstTokenEnd
.
column
,
endLineNumber
:
commentTokenStart
.
lineNumber
,
endColumn
:
commentTokenStart
.
column
});
firstTokenEnd
=
model
.
getPositionFromOffset
(
scanner
.
getTokenOffset
()
+
scanner
.
getTokenLength
()
+
rangeOffset
);
replaceContent
=
secondToken
===
Json
.
SyntaxKind
.
LineCommentTrivia
?
newLineAndIndent
()
:
''
;
secondToken
=
scanNext
();
}
var
replaceContent
=
''
;
if
(
secondToken
===
Json
.
SyntaxKind
.
CloseBraceToken
)
{
if
(
firstToken
!==
Json
.
SyntaxKind
.
OpenBraceToken
)
{
indentLevel
--
;
...
...
src/vs/languages/json/test/common/formatter.test.ts
浏览文件 @
fc59387a
...
...
@@ -253,6 +253,19 @@ suite('JSON - formatter', () => {
format
(
content
,
expected
);
});
test
(
'
single line comment on same line 2
'
,
()
=>
{
var
content
=
[
'
{ //comment
'
,
'
}
'
].
join
(
'
\n
'
);
var
expected
=
[
'
{ //comment
'
,
'
}
'
].
join
(
'
\n
'
);
format
(
content
,
expected
);
});
test
(
'
block comment on same line
'
,
()
=>
{
var
content
=
[
'
{ "a": {}, /*comment*/
'
,
...
...
@@ -308,6 +321,19 @@ suite('JSON - formatter', () => {
format
(
content
,
expected
);
});
test
(
'
multiple mixed comments on same line
'
,
()
=>
{
var
content
=
[
'
[ /*comment*/ /*comment*/ // comment
'
,
'
]
'
].
join
(
'
\n
'
);
var
expected
=
[
'
[ /*comment*/ /*comment*/ // comment
'
,
'
]
'
].
join
(
'
\n
'
);
format
(
content
,
expected
);
});
test
(
'
range
'
,
()
=>
{
var
content
=
[
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录