Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
eb2daf67
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,发现更多精彩内容 >>
提交
eb2daf67
编写于
1月 20, 2016
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
don't use prefix but filenamePatterns
上级
a5a6fe21
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
32 addition
and
31 deletion
+32
-31
src/vs/base/common/mime.ts
src/vs/base/common/mime.ts
+25
-24
src/vs/editor/common/modes/languageExtensionPoint.ts
src/vs/editor/common/modes/languageExtensionPoint.ts
+7
-7
未找到文件。
src/vs/base/common/mime.ts
浏览文件 @
eb2daf67
...
...
@@ -7,6 +7,7 @@
import
paths
=
require
(
'
vs/base/common/paths
'
);
import
types
=
require
(
'
vs/base/common/types
'
);
import
strings
=
require
(
'
vs/base/common/strings
'
);
import
{
match
}
from
'
vs/base/common/glob
'
;
export
let
MIME_TEXT
=
'
text/plain
'
;
export
let
MIME_BINARY
=
'
application/octet-stream
'
;
...
...
@@ -71,12 +72,12 @@ export function generateKnownFilenames(onlyExtensions: boolean = true): any {
/**
* Allow to register extra text mimes dynamically based on filename
*/
export
function
registerTextMimeByFilename
(
nameOr
Extensio
nOrPrefix
:
string
,
mime
:
string
):
void
{
if
(
nameOr
Extensio
nOrPrefix
&&
mime
)
{
if
(
registeredTextMimesByFilename
[
nameOr
ExtensionOrPrefix
]
&&
registeredTextMimesByFilename
[
nameOrExtensio
nOrPrefix
]
!==
mime
)
{
console
.
warn
(
'
Overwriting filename <<
'
+
nameOr
Extensio
nOrPrefix
+
'
>> to now point to mime <<
'
+
mime
+
'
>>
'
);
export
function
registerTextMimeByFilename
(
nameOr
Patter
nOrPrefix
:
string
,
mime
:
string
):
void
{
if
(
nameOr
Patter
nOrPrefix
&&
mime
)
{
if
(
registeredTextMimesByFilename
[
nameOr
PatternOrPrefix
]
&&
registeredTextMimesByFilename
[
nameOrPatter
nOrPrefix
]
!==
mime
)
{
console
.
warn
(
'
Overwriting filename <<
'
+
nameOr
Patter
nOrPrefix
+
'
>> to now point to mime <<
'
+
mime
+
'
>>
'
);
}
registeredTextMimesByFilename
[
nameOr
Extensio
nOrPrefix
]
=
mime
;
registeredTextMimesByFilename
[
nameOr
Patter
nOrPrefix
]
=
mime
;
}
}
...
...
@@ -142,29 +143,29 @@ export function guessMimeTypes(path: string, firstLine?: string): string[] {
let
exactNameMatch
:
string
;
let
extensionMatch
:
string
;
let
p
refix
Match
:
string
;
let
p
atternName
Match
:
string
;
// Check for dynamically registered match based on filename and extension
for
(
let
nameOr
Extensio
nOrPrefix
in
registeredTextMimesByFilename
)
{
let
nameOr
ExtensionOrPrefixLower
:
string
=
nameOrExtensio
nOrPrefix
.
toLowerCase
();
for
(
let
nameOr
Patter
nOrPrefix
in
registeredTextMimesByFilename
)
{
let
nameOr
PatternOrExtensionLower
:
string
=
nameOrPatter
nOrPrefix
.
toLowerCase
();
// First exact name match
if
(
!
exactNameMatch
&&
filename
===
nameOr
ExtensionOrPrefix
Lower
)
{
exactNameMatch
=
nameOr
Extensio
nOrPrefix
;
if
(
!
exactNameMatch
&&
filename
===
nameOr
PatternOrExtension
Lower
)
{
exactNameMatch
=
nameOr
Patter
nOrPrefix
;
break
;
// take it!
}
// Longest
extensio
n match
if
(
nameOrExtensionOrPrefix
[
0
]
===
'
.
'
&&
strings
.
endsWith
(
filename
,
nameOrExtensionOrPrefixLower
))
{
if
(
!
extensionMatch
||
nameOrExtensionOrPrefixLower
.
length
>
extension
Match
.
length
)
{
extensionMatch
=
nameOrExtensio
nOrPrefix
;
// Longest
patter
n match
if
(
match
(
nameOrPatternOrExtensionLower
,
filename
))
{
if
(
!
patternNameMatch
||
nameOrPatternOrExtensionLower
.
length
>
patternName
Match
.
length
)
{
patternNameMatch
=
nameOrPatter
nOrPrefix
;
}
}
// Longest
prefix
match
if
(
nameOr
ExtensionOrPrefixLower
.
slice
(
-
1
)
===
'
*
'
&&
strings
.
startsWith
(
filename
,
nameOrExtensionOrPrefixLower
.
slice
(
0
,
-
1
)
))
{
if
(
!
prefixMatch
||
nameOrExtensionOrPrefixLower
.
length
>
prefix
Match
.
length
)
{
prefixMatch
=
nameOrExtensio
nOrPrefix
;
// Longest
extension
match
if
(
nameOr
PatternOrPrefix
[
0
]
===
'
.
'
&&
strings
.
endsWith
(
filename
,
nameOrPatternOrExtensionLower
))
{
if
(
!
extensionMatch
||
nameOrPatternOrExtensionLower
.
length
>
extension
Match
.
length
)
{
extensionMatch
=
nameOrPatter
nOrPrefix
;
}
}
}
...
...
@@ -174,14 +175,14 @@ export function guessMimeTypes(path: string, firstLine?: string): string[] {
return
[
registeredTextMimesByFilename
[
exactNameMatch
],
MIME_TEXT
];
}
// 3.) Match on
extension comes next
if
(
extension
Match
)
{
return
[
registeredTextMimesByFilename
[
extension
Match
],
MIME_TEXT
];
// 3.) Match on
pattern
if
(
patternName
Match
)
{
return
[
registeredTextMimesByFilename
[
patternName
Match
],
MIME_TEXT
];
}
// 4.) Match on
prefix
if
(
prefix
Match
)
{
return
[
registeredTextMimesByFilename
[
prefix
Match
],
MIME_TEXT
];
// 4.) Match on
extension comes next
if
(
extension
Match
)
{
return
[
registeredTextMimesByFilename
[
extension
Match
],
MIME_TEXT
];
}
return
[
MIME_UNKNOWN
];
...
...
src/vs/editor/common/modes/languageExtensionPoint.ts
浏览文件 @
eb2daf67
...
...
@@ -62,9 +62,9 @@ let languagesExtPoint = PluginsRegistry.registerExtensionPoint<ILanguageExtensio
type
:
'
string
'
}
},
prefixe
s
:
{
description
:
nls
.
localize
(
'
vscode.extension.contributes.languages.
prefixes
'
,
'
File name prefixe
s associated to the language.
'
),
default
:
[
'
foo*
'
],
filenamePattern
s
:
{
description
:
nls
.
localize
(
'
vscode.extension.contributes.languages.
filenamePatterns
'
,
'
File name glob pattern
s associated to the language.
'
),
default
:
[
'
bar*foo.txt
'
],
type
:
'
array
'
,
item
:
{
type
:
'
string
'
...
...
@@ -93,7 +93,7 @@ export interface ILanguageExtensionPoint {
id
:
string
;
extensions
?:
string
[];
filenames
?:
string
[];
prefixe
s
?:
string
[];
filenamePattern
s
?:
string
[];
firstLine
?:
string
;
aliases
?:
string
[];
mimetypes
?:
string
[];
...
...
@@ -341,9 +341,9 @@ class LanguageExtensionPointHandler implements IThreadSynchronizableObject<ILang
}
}
if
(
Array
.
isArray
(
lang
.
prefixe
s
))
{
for
(
let
prefix
of
lang
.
prefixe
s
)
{
Mime
.
registerTextMimeByFilename
(
prefix
,
primaryMime
);
if
(
Array
.
isArray
(
lang
.
filenamePattern
s
))
{
for
(
let
filenamePattern
of
lang
.
filenamePattern
s
)
{
Mime
.
registerTextMimeByFilename
(
filenamePattern
,
primaryMime
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录