Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
9bd4622c
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,体验更适合开发者的 AI 搜索 >>
提交
9bd4622c
编写于
4月 28, 2016
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes #5278: Allow extensions to overwrite a language's name
上级
6ecacf41
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
53 addition
and
17 deletion
+53
-17
src/vs/editor/common/services/languagesRegistry.ts
src/vs/editor/common/services/languagesRegistry.ts
+28
-17
src/vs/editor/test/common/services/languagesRegistry.test.ts
src/vs/editor/test/common/services/languagesRegistry.test.ts
+25
-0
未找到文件。
src/vs/editor/common/services/languagesRegistry.ts
浏览文件 @
9bd4622c
...
...
@@ -23,8 +23,8 @@ export class LanguagesRegistry {
private
knownModeIds
:
{
[
id
:
string
]:
boolean
;
};
private
mime2LanguageId
:
{
[
mimeType
:
string
]:
string
;
};
private
name2LanguageId
:
{
[
name
:
string
]:
string
;
};
private
name2Extensions
:
{
[
name
:
string
]:
string
[];
};
private
id2Name
:
{
[
id
:
string
]:
string
;
};
private
id2Extensions
:
{
[
id
:
string
]:
string
[];
};
private
compatModes
:
{
[
id
:
string
]:
ICompatModeDescriptor
;
};
private
lowerName2Id
:
{
[
name
:
string
]:
string
;
};
private
id2ConfigurationFiles
:
{
[
id
:
string
]:
string
[];
};
...
...
@@ -37,7 +37,7 @@ export class LanguagesRegistry {
this
.
mime2LanguageId
=
{};
this
.
name2LanguageId
=
{};
this
.
id2Name
=
{};
this
.
name
2Extensions
=
{};
this
.
id
2Extensions
=
{};
this
.
compatModes
=
{};
this
.
lowerName2Id
=
{};
this
.
id2ConfigurationFiles
=
{};
...
...
@@ -84,6 +84,19 @@ export class LanguagesRegistry {
this
.
_onDidAddModes
.
fire
(
addedModes
);
}
private
_setLanguageName
(
languageId
:
string
,
languageName
:
string
,
force
:
boolean
):
void
{
let
prevName
=
this
.
id2Name
[
languageId
];
if
(
prevName
)
{
if
(
!
force
)
{
return
;
}
delete
this
.
name2LanguageId
[
prevName
];
}
this
.
name2LanguageId
[
languageName
]
=
languageId
;
this
.
id2Name
[
languageId
]
=
languageName
;
}
private
_registerLanguage
(
lang
:
ILanguageExtensionPoint
):
void
{
this
.
knownModeIds
[
lang
.
id
]
=
true
;
...
...
@@ -104,8 +117,10 @@ export class LanguagesRegistry {
}
if
(
Array
.
isArray
(
lang
.
extensions
))
{
this
.
id2Extensions
[
lang
.
id
]
=
this
.
id2Extensions
[
lang
.
id
]
||
[];
for
(
let
extension
of
lang
.
extensions
)
{
mime
.
registerTextMime
({
mime
:
primaryMime
,
extension
:
extension
});
this
.
id2Extensions
[
lang
.
id
].
push
(
extension
);
}
}
...
...
@@ -148,20 +163,12 @@ export class LanguagesRegistry {
}
}
if
(
!
this
.
id2Name
[
lang
.
id
])
{
let
bestName
=
null
;
if
(
typeof
lang
.
aliases
!==
'
undefined
'
&&
Array
.
isArray
(
lang
.
aliases
)
&&
lang
.
aliases
.
length
>
0
)
{
bestName
=
lang
.
aliases
[
0
];
}
else
{
bestName
=
lang
.
id
;
}
if
(
bestName
)
{
this
.
name2LanguageId
[
bestName
]
=
lang
.
id
;
this
.
name2Extensions
[
bestName
]
=
lang
.
extensions
;
this
.
id2Name
[
lang
.
id
]
=
bestName
||
''
;
}
let
containsAliases
=
(
typeof
lang
.
aliases
!==
'
undefined
'
&&
Array
.
isArray
(
lang
.
aliases
)
&&
lang
.
aliases
.
length
>
0
);
if
(
containsAliases
&&
lang
.
aliases
[
0
]
===
null
)
{
// signal that this language should not get a name
}
else
{
let
bestName
=
(
containsAliases
?
lang
.
aliases
[
0
]
:
null
)
||
lang
.
id
;
this
.
_setLanguageName
(
lang
.
id
,
bestName
,
containsAliases
);
}
if
(
typeof
lang
.
configuration
===
'
string
'
)
{
...
...
@@ -255,6 +262,10 @@ export class LanguagesRegistry {
}
public
getExtensions
(
languageName
:
string
):
string
[]
{
return
this
.
name2Extensions
[
languageName
];
let
languageId
=
this
.
name2LanguageId
[
languageName
];
if
(
!
languageId
)
{
return
[];
}
return
this
.
id2Extensions
[
languageId
];
}
}
src/vs/editor/test/common/services/languagesRegistry.test.ts
浏览文件 @
9bd4622c
...
...
@@ -81,4 +81,29 @@ suite('LanguagesRegistry', () => {
assert
.
deepEqual
(
registry
.
getLanguageName
(
'
modeId
'
),
'
ModeName
'
);
});
test
(
'
issue #5278: Extension cannot override language name anymore
'
,
()
=>
{
let
registry
=
new
LanguagesRegistry
(
false
);
registry
.
_registerCompatModes
([{
id
:
'
modeId
'
,
extensions
:
[
'
.ext1
'
],
aliases
:
[
'
ModeName
'
],
mimetypes
:
[
'
bla
'
],
moduleId
:
'
bla
'
,
ctorName
:
'
bla
'
}]);
registry
.
_registerCompatModes
([{
id
:
'
modeId
'
,
extensions
:
[
'
.ext2
'
],
aliases
:
[
'
BetterModeName
'
],
mimetypes
:
[
'
bla
'
],
moduleId
:
'
bla
'
,
ctorName
:
'
bla
'
}]);
assert
.
deepEqual
(
registry
.
getRegisteredLanguageNames
(),
[
'
BetterModeName
'
]);
assert
.
deepEqual
(
registry
.
getLanguageName
(
'
modeId
'
),
'
BetterModeName
'
);
});
});
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录