Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
aa2b7158
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,发现更多精彩内容 >>
提交
aa2b7158
编写于
12月 13, 2018
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make the languages extension point dynamic
上级
c1be67d1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
49 addition
and
24 deletion
+49
-24
src/vs/editor/common/modes/modesRegistry.ts
src/vs/editor/common/modes/modesRegistry.ts
+9
-7
src/vs/editor/common/services/languagesRegistry.ts
src/vs/editor/common/services/languagesRegistry.ts
+39
-16
src/vs/workbench/services/mode/common/workbenchModeService.ts
...vs/workbench/services/mode/common/workbenchModeService.ts
+1
-1
未找到文件。
src/vs/editor/common/modes/modesRegistry.ts
浏览文件 @
aa2b7158
...
...
@@ -18,26 +18,28 @@ export const Extensions = {
export
class
EditorModesRegistry
{
private
_languages
:
ILanguageExtensionPoint
[];
private
_dynamicLanguages
:
ILanguageExtensionPoint
[];
private
readonly
_onDid
AddLanguages
:
Emitter
<
ILanguageExtensionPoint
[]
>
=
new
Emitter
<
ILanguageExtensionPoint
[]
>
();
public
readonly
onDid
AddLanguages
:
Event
<
ILanguageExtensionPoint
[]
>
=
this
.
_onDidAdd
Languages
.
event
;
private
readonly
_onDid
ChangeLanguages
:
Emitter
<
void
>
=
new
Emitter
<
void
>
();
public
readonly
onDid
ChangeLanguages
:
Event
<
void
>
=
this
.
_onDidChange
Languages
.
event
;
constructor
()
{
this
.
_languages
=
[];
this
.
_dynamicLanguages
=
[];
}
// --- languages
public
registerLanguage
(
def
:
ILanguageExtensionPoint
):
void
{
this
.
_languages
.
push
(
def
);
this
.
_onDid
AddLanguages
.
fire
([
def
]
);
this
.
_onDid
ChangeLanguages
.
fire
(
void
0
);
}
public
register
Languages
(
def
:
ILanguageExtensionPoint
[]):
void
{
this
.
_
languages
=
this
.
_languages
.
concat
(
def
)
;
this
.
_onDid
AddLanguages
.
fire
(
def
);
public
setDynamic
Languages
(
def
:
ILanguageExtensionPoint
[]):
void
{
this
.
_
dynamicLanguages
=
def
;
this
.
_onDid
ChangeLanguages
.
fire
(
void
0
);
}
public
getLanguages
():
ILanguageExtensionPoint
[]
{
return
this
.
_languages
.
slice
(
0
);
return
(
<
ILanguageExtensionPoint
[]
>
[]).
concat
(
this
.
_languages
).
concat
(
this
.
_dynamicLanguages
);
}
}
...
...
src/vs/editor/common/services/languagesRegistry.ts
浏览文件 @
aa2b7158
...
...
@@ -33,36 +33,48 @@ export class LanguagesRegistry extends Disposable {
private
readonly
_onDidChange
:
Emitter
<
void
>
=
this
.
_register
(
new
Emitter
<
void
>
());
public
readonly
onDidChange
:
Event
<
void
>
=
this
.
_onDidChange
.
event
;
private
_nextLanguageId
:
number
;
private
_languages
:
{
[
id
:
string
]:
IResolvedLanguage
;
};
private
_languageIds
:
string
[];
private
readonly
_warnOnOverwrite
:
boolean
;
private
_nextLanguageId2
:
number
;
private
_languageIdToLanguage
:
string
[];
private
_languageToLanguageId
:
{
[
id
:
string
]:
number
;
};
private
_languages
:
{
[
id
:
string
]:
IResolvedLanguage
;
};
private
_mimeTypesMap
:
{
[
mimeType
:
string
]:
LanguageIdentifier
;
};
private
_nameMap
:
{
[
name
:
string
]:
LanguageIdentifier
;
};
private
_lowercaseNameMap
:
{
[
name
:
string
]:
LanguageIdentifier
;
};
private
_warnOnOverwrite
:
boolean
;
constructor
(
useModesRegistry
=
true
,
warnOnOverwrite
=
false
)
{
super
();
this
.
_nextLanguageId
=
1
;
this
.
_warnOnOverwrite
=
warnOnOverwrite
;
this
.
_nextLanguageId2
=
1
;
this
.
_languageIdToLanguage
=
[];
this
.
_languageToLanguageId
=
Object
.
create
(
null
);
this
.
_languages
=
{};
this
.
_mimeTypesMap
=
{};
this
.
_nameMap
=
{};
this
.
_lowercaseNameMap
=
{};
this
.
_languageIds
=
[];
this
.
_warnOnOverwrite
=
warnOnOverwrite
;
if
(
useModesRegistry
)
{
this
.
_
registerLanguages
(
ModesRegistry
.
getLanguages
()
);
this
.
_register
(
ModesRegistry
.
onDid
AddLanguages
((
m
)
=>
this
.
_registerLanguages
(
m
)));
this
.
_
initializeFromRegistry
(
);
this
.
_register
(
ModesRegistry
.
onDid
ChangeLanguages
((
m
)
=>
this
.
_initializeFromRegistry
(
)));
}
}
private
_initializeFromRegistry
():
void
{
this
.
_languages
=
{};
this
.
_mimeTypesMap
=
{};
this
.
_nameMap
=
{};
this
.
_lowercaseNameMap
=
{};
const
desc
=
ModesRegistry
.
getLanguages
();
this
.
_registerLanguages
(
desc
);
}
_registerLanguages
(
desc
:
ILanguageExtensionPoint
[]):
void
{
if
(
desc
.
length
===
0
)
{
return
;
}
for
(
let
i
=
0
;
i
<
desc
.
length
;
i
++
)
{
this
.
_registerLanguage
(
desc
[
i
]);
...
...
@@ -90,6 +102,18 @@ export class LanguagesRegistry extends Disposable {
this
.
_onDidChange
.
fire
();
}
private
_getLanguageId
(
language
:
string
):
number
{
if
(
this
.
_languageToLanguageId
[
language
])
{
return
this
.
_languageToLanguageId
[
language
];
}
const
languageId
=
this
.
_nextLanguageId2
++
;
this
.
_languageIdToLanguage
[
languageId
]
=
language
;
this
.
_languageToLanguageId
[
language
]
=
languageId
;
return
languageId
;
}
private
_registerLanguage
(
lang
:
ILanguageExtensionPoint
):
void
{
const
langId
=
lang
.
id
;
...
...
@@ -97,7 +121,7 @@ export class LanguagesRegistry extends Disposable {
if
(
hasOwnProperty
.
call
(
this
.
_languages
,
langId
))
{
resolvedLanguage
=
this
.
_languages
[
langId
];
}
else
{
let
languageId
=
this
.
_nextLanguageId
++
;
const
languageId
=
this
.
_getLanguageId
(
langId
)
;
resolvedLanguage
=
{
identifier
:
new
LanguageIdentifier
(
langId
,
languageId
),
name
:
null
,
...
...
@@ -107,7 +131,6 @@ export class LanguagesRegistry extends Disposable {
filenames
:
[],
configurationFiles
:
[]
};
this
.
_languageIds
[
languageId
]
=
langId
;
this
.
_languages
[
langId
]
=
resolvedLanguage
;
}
...
...
@@ -278,7 +301,7 @@ export class LanguagesRegistry extends Disposable {
if
(
typeof
_modeId
===
'
string
'
)
{
modeId
=
_modeId
;
}
else
{
modeId
=
this
.
_languageId
s
[
_modeId
];
modeId
=
this
.
_languageId
ToLanguage
[
_modeId
];
if
(
!
modeId
)
{
return
null
;
}
...
...
src/vs/workbench/services/mode/common/workbenchModeService.ts
浏览文件 @
aa2b7158
...
...
@@ -133,7 +133,7 @@ export class WorkbenchModeServiceImpl extends ModeServiceImpl {
}
}
ModesRegistry
.
register
Languages
(
allValidLanguages
);
ModesRegistry
.
setDynamic
Languages
(
allValidLanguages
);
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录