Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
cdebffc6
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,发现更多精彩内容 >>
提交
cdebffc6
编写于
7月 11, 2019
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add method to extract token types
上级
4a9223c0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
48 addition
and
0 deletion
+48
-0
src/vs/editor/contrib/tokenization/tokenization.ts
src/vs/editor/contrib/tokenization/tokenization.ts
+48
-0
未找到文件。
src/vs/editor/contrib/tokenization/tokenization.ts
浏览文件 @
cdebffc6
...
...
@@ -7,6 +7,8 @@ import * as nls from 'vs/nls';
import
{
ICodeEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
EditorAction
,
ServicesAccessor
,
registerEditorAction
}
from
'
vs/editor/browser/editorExtensions
'
;
import
{
StopWatch
}
from
'
vs/base/common/stopwatch
'
;
import
{
StandardTokenType
}
from
'
vs/editor/common/modes
'
;
import
{
ITextModel
}
from
'
vs/editor/common/model
'
;
class
ForceRetokenizeAction
extends
EditorAction
{
constructor
()
{
...
...
@@ -28,6 +30,52 @@ class ForceRetokenizeAction extends EditorAction {
model
.
forceTokenization
(
model
.
getLineCount
());
sw
.
stop
();
console
.
log
(
`tokenization took
${
sw
.
elapsed
()}
`
);
if
(
!
true
)
{
extractTokenTypes
(
model
);
}
}
}
function
extractTokenTypes
(
model
:
ITextModel
):
void
{
const
eolLength
=
model
.
getEOL
().
length
;
let
result
:
number
[]
=
[];
let
resultLen
:
number
=
0
;
let
lastTokenType
:
StandardTokenType
=
StandardTokenType
.
Other
;
let
lastEndOffset
:
number
=
0
;
let
offset
=
0
;
for
(
let
lineNumber
=
1
,
lineCount
=
model
.
getLineCount
();
lineNumber
<=
lineCount
;
lineNumber
++
)
{
const
lineTokens
=
model
.
getLineTokens
(
lineNumber
);
for
(
let
i
=
0
,
len
=
lineTokens
.
getCount
();
i
<
len
;
i
++
)
{
const
tokenType
=
lineTokens
.
getStandardTokenType
(
i
);
if
(
tokenType
===
StandardTokenType
.
Other
)
{
continue
;
}
const
startOffset
=
offset
+
lineTokens
.
getStartOffset
(
i
);
const
endOffset
=
offset
+
lineTokens
.
getEndOffset
(
i
);
const
length
=
endOffset
-
startOffset
;
if
(
length
===
0
)
{
continue
;
}
if
(
lastTokenType
===
tokenType
&&
lastEndOffset
===
startOffset
)
{
result
[
resultLen
-
2
]
+=
length
;
lastEndOffset
+=
length
;
continue
;
}
result
[
resultLen
++
]
=
startOffset
;
// - lastEndOffset
result
[
resultLen
++
]
=
length
;
result
[
resultLen
++
]
=
tokenType
;
lastTokenType
=
tokenType
;
lastEndOffset
=
endOffset
;
}
offset
+=
lineTokens
.
getLineContent
().
length
+
eolLength
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录