Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
bdbe2e36
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
bdbe2e36
编写于
11月 07, 2019
作者:
A
Alexandru Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Clear semantic tokens in case of errors/empty results
上级
da52ac20
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
38 addition
and
47 deletion
+38
-47
extensions/typescript-language-features/src/features/semanticColoring.ts
...script-language-features/src/features/semanticColoring.ts
+0
-1
src/vs/editor/common/model.ts
src/vs/editor/common/model.ts
+1
-1
src/vs/editor/common/model/textModel.ts
src/vs/editor/common/model/textModel.ts
+1
-1
src/vs/editor/common/model/tokensStore.ts
src/vs/editor/common/model/tokensStore.ts
+2
-2
src/vs/editor/common/services/modelServiceImpl.ts
src/vs/editor/common/services/modelServiceImpl.ts
+34
-42
未找到文件。
extensions/typescript-language-features/src/features/semanticColoring.ts
浏览文件 @
bdbe2e36
...
...
@@ -102,7 +102,6 @@ class SemanticColoringProvider implements vscode.SemanticColoringProvider {
}
}
console
.
log
(
result
);
return
new
vscode
.
SemanticColoring
([
new
vscode
.
SemanticColoringArea
(
0
,
new
Uint32Array
(
result
))]);
}
...
...
src/vs/editor/common/model.ts
浏览文件 @
bdbe2e36
...
...
@@ -795,7 +795,7 @@ export interface ITextModel {
/**
* @internal
*/
setSemanticTokens
(
tokens
:
MultilineTokens2
[]):
void
;
setSemanticTokens
(
tokens
:
MultilineTokens2
[]
|
null
):
void
;
/**
* Flush all tokenization state.
...
...
src/vs/editor/common/model/textModel.ts
浏览文件 @
bdbe2e36
...
...
@@ -1721,7 +1721,7 @@ export class TextModel extends Disposable implements model.ITextModel {
});
}
public
setSemanticTokens
(
tokens
:
MultilineTokens2
[]):
void
{
public
setSemanticTokens
(
tokens
:
MultilineTokens2
[]
|
null
):
void
{
this
.
_tokens2
.
set
(
tokens
);
// TODO@semantic: could we reduce the event here?
...
...
src/vs/editor/common/model/tokensStore.ts
浏览文件 @
bdbe2e36
...
...
@@ -752,8 +752,8 @@ export class TokensStore2 {
this
.
_pieces
=
[];
}
public
set
(
pieces
:
MultilineTokens2
[])
{
this
.
_pieces
=
pieces
;
public
set
(
pieces
:
MultilineTokens2
[]
|
null
)
{
this
.
_pieces
=
pieces
||
[]
;
}
public
addSemanticTokens
(
lineNumber
:
number
,
aTokens
:
LineTokens
):
LineTokens
{
...
...
src/vs/editor/common/services/modelServiceImpl.ts
浏览文件 @
bdbe2e36
...
...
@@ -464,8 +464,6 @@ class ModelSemanticColoring extends Disposable {
constructor
(
model
:
ITextModel
)
{
super
();
console
.
log
(
`ModelSemanticColoring created for
${
model
.
uri
}
`
);
this
.
_model
=
model
;
this
.
_fetchSemanticTokens
=
this
.
_register
(
new
RunOnceScheduler
(()
=>
this
.
_fetchSemanticTokensNow
(),
500
));
this
.
_currentResponse
=
null
;
...
...
@@ -505,12 +503,6 @@ class ModelSemanticColoring extends Disposable {
request
.
then
((
res
)
=>
{
this
.
_currentRequestCancellationTokenSource
=
null
;
this
.
_setSemanticTokens
(
this
.
_currentRequestVersion
,
res
||
null
);
// if (this._currentResponse) {
// this._currentResponse.dispose();
// this._currentResponse = null;
// }
// this._currentRequestVersion = -1;
console
.
log
(
res
);
},
(
err
)
=>
{
this
.
_currentRequestCancellationTokenSource
=
null
;
errors
.
onUnexpectedError
(
err
);
...
...
@@ -524,45 +516,45 @@ class ModelSemanticColoring extends Disposable {
this
.
_currentResponse
=
null
;
}
this
.
_currentResponse
=
tokens
;
if
(
!
this
.
_currentResponse
)
{
this
.
_model
.
setSemanticTokens
(
null
);
return
;
}
// TODO@semantic: diff here and reduce to only really needed tokens...
// TODO@semantic: might also be a good idea to split areas... ?
if
(
this
.
_currentResponse
)
{
const
result
:
MultilineTokens2
[]
=
[];
for
(
const
area
of
this
.
_currentResponse
.
areas
)
{
const
srcTokens
=
area
.
data
;
const
tokenCount
=
srcTokens
.
length
/
5
;
const
destTokens
=
new
Uint32Array
(
4
*
tokenCount
);
for
(
let
i
=
0
;
i
<
tokenCount
;
i
++
)
{
const
srcOffset
=
5
*
i
;
const
deltaLine
=
srcTokens
[
srcOffset
];
const
startCharacter
=
srcTokens
[
srcOffset
+
1
];
const
endCharacter
=
srcTokens
[
srcOffset
+
2
];
// const tokenType = srcTokens[srcOffset + 3];
// const tokenModifiers = srcTokens[srcOffset + 4];
// TODO@semantic: map here tokenType and tokenModifiers to metadata
const
fontStyle
=
FontStyle
.
Italic
|
FontStyle
.
Bold
|
FontStyle
.
Underline
;
const
foregroundColorId
=
3
;
const
metadata
=
(
(
fontStyle
<<
MetadataConsts
.
FONT_STYLE_OFFSET
)
|
(
foregroundColorId
<<
MetadataConsts
.
FOREGROUND_OFFSET
)
)
>>>
0
;
const
destOffset
=
4
*
i
;
destTokens
[
destOffset
]
=
deltaLine
;
destTokens
[
destOffset
+
1
]
=
startCharacter
;
destTokens
[
destOffset
+
2
]
=
endCharacter
;
destTokens
[
destOffset
+
3
]
=
metadata
;
}
const
tokens
=
new
MultilineTokens2
(
area
.
line
,
new
SparseEncodedTokens
(
destTokens
));
result
.
push
(
tokens
);
const
result
:
MultilineTokens2
[]
=
[];
for
(
const
area
of
this
.
_currentResponse
.
areas
)
{
const
srcTokens
=
area
.
data
;
const
tokenCount
=
srcTokens
.
length
/
5
;
const
destTokens
=
new
Uint32Array
(
4
*
tokenCount
);
for
(
let
i
=
0
;
i
<
tokenCount
;
i
++
)
{
const
srcOffset
=
5
*
i
;
const
deltaLine
=
srcTokens
[
srcOffset
];
const
startCharacter
=
srcTokens
[
srcOffset
+
1
];
const
endCharacter
=
srcTokens
[
srcOffset
+
2
];
// const tokenType = srcTokens[srcOffset + 3];
// const tokenModifiers = srcTokens[srcOffset + 4];
// TODO@semantic: map here tokenType and tokenModifiers to metadata
const
fontStyle
=
FontStyle
.
Italic
|
FontStyle
.
Bold
|
FontStyle
.
Underline
;
const
foregroundColorId
=
3
;
const
metadata
=
(
(
fontStyle
<<
MetadataConsts
.
FONT_STYLE_OFFSET
)
|
(
foregroundColorId
<<
MetadataConsts
.
FOREGROUND_OFFSET
)
)
>>>
0
;
const
destOffset
=
4
*
i
;
destTokens
[
destOffset
]
=
deltaLine
;
destTokens
[
destOffset
+
1
]
=
startCharacter
;
destTokens
[
destOffset
+
2
]
=
endCharacter
;
destTokens
[
destOffset
+
3
]
=
metadata
;
}
this
.
_model
.
setSemanticTokens
(
result
);
}
else
{
// TODO@semantic: should we clear semantic tokens on the text model here?
const
tokens
=
new
MultilineTokens2
(
area
.
line
,
new
SparseEncodedTokens
(
destTokens
));
result
.
push
(
tokens
);
}
this
.
_model
.
setSemanticTokens
(
result
);
}
private
_getSemanticColoringProvider
():
SemanticColoringProvider
|
null
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录